python - 返回 None 的多边形之间的 OGR 交集方法
问题描述
我正在尝试使用 python OGR 库获取两个多边形的相交几何结果。
我已经验证了每个多边形都是一个几何图形并且它们相交。但是,intersects 返回 true,而 Intersection 返回 None。有任何想法吗?
# First polygon
ringA = ogr.Geometry(ogr.wkbLinearRing)
ringA.AddPoint(1179091.1646903288, 712782.8838459781)
...
polyA = ogr.Geometry(ogr.wkbPolygon)
polyA.AddGeometry(ringA)
# Second polygon
ringB = ogr.Geometry(ogr.wkbLinearRing)
ringB.AddPoint(1179091.1646903288, 712782.8838459781)
...
polyB = ogr.Geometry(ogr.wkbPolygon)
polyB.AddGeometry(ringB)
if (polyA.Intersects(polyB)) # returns True
return polyA.Intersection(polyB) # returns None
解决方案
我有一个类似的问题。根据为 GDAL/OGR 启用 GEOS和文档,没有 GEOS,只比较两个几何的包络。如果不从源代码编译 GDAL,我无法找到如何启用 GEOS(在 Ubuntu 18.04 中,欢迎任何帮助!)。
但是,作为一种解决方法,我建议
intersect_geom = polyA.Intersection(polyB)
if(intersect_geom is not None and intersect_geom.Area()>0):
return intersect_geom
就我而言,intersect_geom
在None
大多数情况下几何不相交。然而,在某些情况下,intersect_geom
是GEOMETRYCOLLECTION EMPTY
,我检查了Area()>0
。
我希望这会有所帮助,即使问题已经存在 6 个月了。
推荐阅读
- c++ - 由于“无法从 'std::pair 转换参数 1”,std::map 插入无法编译
' 到 'std::pair &&'" - html - 如何为所有人设置通用规则
适合各种字体大小的页面的元素?
- angular - 无法检测到 http 标头
- python - 在虚拟环境中使用 pyttsx3 和 python 的声音问题
- python - 您可以将 python 对象重新分配给不同内存地址的对象吗?
- r - R:如何在R中的第一个点之前提取字符串
- database - 如何从旧安装访问 MongoDB 数据?
- android - Android - 如何为 TextView 中的不同字符添加不同的间距?
- java - 如何返回未使用的空间数组?
- email - 如何代表来自不同域的其他人发送电子邮件