Geoprocessing#
Geoprocessing Functions#
Functions with geometries:
Function |
Description |
Syntax |
|---|---|---|
Buffer |
Buffer |
|
Centroid |
Centroid of the polygon |
|
Simplify |
Simplification of the geometry |
|
Distance |
Distance between two geometries |
|
Intersection |
Provides the overlapped area |
|
Union |
Union of geometries, separating the overlapped area |
|
Difference |
Erases the overlapped area |
|
SymDifference |
Erases the non-overlapped area |
|
Example#
import ogr, osr
driver = ogr.GetDriverByName('ESRI Shapefile')
laearef = osr.SpatialReference()
laearef.ImportFromEPSG(3035)
# Open two layers
ds1 = driver.Open(r'C:\data\layer1.shp', 0)
ds2 = driver.Open(r'C:\data\layer2.shp', 0)
lyr1 = ds1.GetLayer()
lyr2 = ds2.GetLayer()
# Create an empty layer
ds3 = driver.CreateDataSource(r'C:\data\output.shp')
lyr3 = ds3.CreateLayer('output', laearef, geom_type=ogr.wkbPolygon)
layer_defn = lyr3.GetLayerDefn()
# Iterate through features
for n in range(lyr1.GetFeatureCount()):
feature1 = lyr1.GetFeature(n)
geom1 = feature1.GetGeometryRef()
attribute1 = feature1.GetField('Id')
for i in range(lyr2.GetFeatureCount()):
feature2 = lyr2.GetFeature(i)
geom2 = feature2.GetGeometryRef()
attribute2 = feature2.GetField('Id')
if geom1.Intersects(geom2):
intersection = geom2.Intersection(geom1)
dstfeature = ogr.Feature(layer_defn)
dstfeature.SetGeometry(intersection)
lyr3.CreateFeature(dstfeature)
dstfeature.Destroy()
ds1.Destroy()
ds2.Destroy()
ds3.Destroy()