Using Python, how do you add a new field to your shapefile and calculate the area in km2?
3 Answers
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", )
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.
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)