这感觉就像应该已经具备容易做的功能,但我找不到。
我最终想要做的事情:我有一个包含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的值以获得min和max x和y值。是否有一个ogr调用已经执行此操作(如inLayer.GetFeatureExtent()或inLayer.GetExtent(feature_fid)?后者只返回图层范围,前者不存在,但必须从中解析它特征几何感觉笨重。
答案 0 :(得分:8)
事实证明,有一个内置功能可以做到这一点,我的4小时搜索(在原始帖子之前)只是没有把它暴露出来,直到我切换到处理别的东西并偶然发现它。
extent = geom.GetEnvelope()
希望这篇文章能够让别人忘记尝试找到这个功能。