2

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

1

3 Answers 3

8

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
  • +1 It is always nice to see a pure python approach
    – Aaron
    Mar 24, 2014 at 18:26
3

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 and acknowledge you have read our privacy policy.

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