2 votos

Agregando un nuevo campo y calculando el área usando Python

Usando Python, ¿cómo se agrega un nuevo campo a tu shapefile y se calcula el área en km2?

8voto

Paul Lalonde Puntos 3940

Esto es un ejemplo

import arcpy
from arcpy import env 
env.workspace = "D:/"
fc = "test.shp" 
arcpy.AddField_management(fc,"area","Double")
 expression1 = "{0}".format("!SHAPE.area@SQUAREKILOMETERS!")        
arcpy.CalculateField_management(fc, "area", expression1, "PYTHON", )

6voto

john Puntos 11
from osgeo import ogr

shapefile = "C:/StudyArea.shp"
driver = ogr.GetDriverByName("ESRI Shapefile")
dataSource = driver.Open(shapefile, 1)
layer = dataSource.GetLayer()
new_field = ogr.FieldDefn("Area", ogr.OFTInteger)
layer.CreateField(new_field)

for feature in layer:
    geom = feature.GetGeometryRef()
    area = geom.GetArea() * (0.000000092903)
    feature.SetField("Area", area)
    layer.SetFeature(feature)

dataSource = None

Supuse que el sistema de coordenadas que estás utilizando está en pies estadounidenses. Si no lo está, deberás cambiar el cálculo del área.

3voto

Aaron Puntos 25882

Puedes usar un Cursor de Actualización y un token de área de forma SHAPE@AREA para hacer los cálculos.

import arcpy, os

file = r'C:\temp\polygon.shp'
arcpy.AddField_management (file, "area", "FLOAT")

with arcpy.da.UpdateCursor(file, ["SHAPE@AREA", "area"]) as cursor:
    for row in cursor:
        row[1] = row[0] / 1E6 # si la referencia espacial está en metros, convertir a km
        cursor.updateRow(row)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X