這感覺就像應該已經有一個功能可以輕鬆做到的事情,但我找不到一個。使用gdal/ogr獲取功能範圍
我最終試圖做的是什麼:我有一個帶有3個特徵的shapefile,它們顯示邊界框;我想使用這些功能之一來選擇其他shapefile或polygons中的所有功能。我使用ogr2ogr運行,使用-clipsrc和-clipsrcwhere標誌從我的邊界框shapefile中選擇我的邊界框。這很好,但我不能包括或排除掉在邊界的多邊形,我不希望它們被裁剪掉。所以,我想我會使用-spat標誌,而只是導入邊界框多邊形範圍。
我知道我能得到我的多邊形的程度有:
polygon = 'mouth'
inDriver = ogr.GetDriverByName("ESRI Shapefile")
inDataSource = inDriver.Open(extent_shpfile, 1)
inLayer = inDataSource.GetLayer()
select = "name = '" + polygon + "'"
inLayer.SetAttributeFilter(select)
for feature in inLayer: #inLayer is always of size one because polygon is a unique value
geom=feature.GetGeometryRef()
在這裏,我可以解析出的geom的值來獲得最小和最大x和y的值。是不是有一個ogr調用已經這樣做(如inLayer.GetFeatureExtent()或inLayer.GetExtent(feature_fid)?後者只是返回圖層範圍,前者不存在,但必須從特徵幾何解析它感覺笨重。
由於它的工作!我想要得到我的圖層中每個要素的幾何圖形的範圍,所以我可以將它們剪輯到一個邊框「.tif」。另一種做法是,在一行中是'feature.GetGeometryRef()。GetEnvelope()' – DarkCygnus