使用 gdal/ogr 获取要素范围

Get feature extent using gdal/ogr

感觉应该有功能可以轻松搞定,但是我找不到。

我最终想做的是:我有一个 shapefile,其中包含 3 个显示边界框的特征;我想在另一个 shapefile 或多边形中使用这些功能之一 select 其中的所有功能。我有这个 运行 使用 ogr2ogr,使用 -clipsrc 和 -clipsrcwhere 标志从我的边界框 shapefile 到 select 我的边界框。这很好用,但我不能包括或排除沿边界落下的多边形,而且我不希望它们被剪裁。所以,我想我会改用 -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)?后者只是 returns 图层范围,而前者没有不存在,但必须从要素几何中解析它感觉很笨重。

原来有一个内置函数可以执行此操作,我的 4 小时搜索(在原始 post 之前)未能将其曝光,直到我转而从事其他工作并偶然发现不小心穿过

extent = geom.GetEnvelope()

希望这个 post 可以让其他人不再为寻找这个函数而头疼。