2

Using Python, how do you add a new field to your shapefile and calculate the area in km2?

7

this is an example

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", )
6
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

I assumed the coordinate system you're using is in US feet. If it's not, you'll need to change the area calculation.

  • +1 It is always nice to see a pure python approach – Aaron Mar 24 '14 at 18:26
2

You can use an Update Cursor and a shape area token SHAPE@AREA to make the calculations.

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 # if spatial reference in meters, convert to km
        cursor.updateRow(row)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.