-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharea.py
35 lines (27 loc) · 1.01 KB
/
area.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#script to compute area for each polygon stored in a shapefile and add an attribute to store the result
#author: Gregory Giuliani (University of Geneva)
#version: 1.0.0
from osgeo import ogr
from osgeo import osr
driver = ogr.GetDriverByName("ESRI Shapefile")
dataSource = driver.Open("/Users/greg/Desktop/kba/kba_ch.shp", 1)
layer = dataSource.GetLayer()
#Prepare a transformation between projections
src_srs = layer.GetSpatialRef()
tgt_srs = osr.SpatialReference()
tgt_srs.ImportFromEPSG(3857)
transform = osr.CoordinateTransformation(src_srs, tgt_srs)
#Add new field
new_field = ogr.FieldDefn("Area", ogr.OFTReal)
new_field.SetPrecision(2)
layer.CreateField(new_field)
#Compute the area for each feature
for feature in layer:
geom = feature.GetGeometryRef()
geom2 = geom.Clone()
geom2.Transform(transform)
area_in_sq_m = geom2.GetArea()
print('Area in sq m', area_in_sq_m)
feature.SetField("Area", area_in_sq_m)
layer.SetFeature(feature)
dataSource.Destroy()