感觉应该已经有一个函数可以轻松完成此操作,但我找不到。
我最终想要做的是:我有一个带有3个边界框的shapefile;我想使用其中一个边界框来选择另一个shapefile或多边形中的所有要素。 我使用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