使用gdal/ogr获取功能范围

Jes*_*ica 4 shapefile gdal python-2.7 ogr

这感觉就像应该已经具备容易做的功能,但我找不到一个.

我最终要做的是:我有一个包含3个功能的shapefile,显示了边界框; 我想使用其中一个功能在另一个shapefile或多边形中选择其中的所有功能.我使用ogr2​​ogr运行,使用-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()
Run Code Online (Sandbox Code Playgroud)

从这里我可以解析geom的值以获得min和max x和y值.是否没有一个ogr调用来执行此操作(如inLayer.GetFeatureExtent()或inLayer.GetExtent(feature_fid)?后者只返回图层范围,前者不存在,但必须从要素几何中解析它感觉笨重.

Jes*_*ica 8

事实证明,有一个内置的功能来做这件事,我的4小时搜索(在原始帖子之前)只是没有把它暴露出来,直到我转向处理其他事情并偶然发现它.

extent = geom.GetEnvelope()
Run Code Online (Sandbox Code Playgroud)

希望这篇文章能够帮助别人解决这个问题.