[OGR返回无多边形的相交方法

问题描述 投票:0回答:1

我正在尝试使用python OGR库获得两个多边形的相交几何结果。

我已经确认每个多边形都是几何图形,并且它们相交。但是,相交返回true,而相交返回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
python geometry intersection ogr
1个回答
0
投票

我有类似的问题。根据Enabling GEOS for GDAL/OGRdocumentation,如果没有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_geomGEOMETRYCOLLECTION EMPTY,我通过Area()>0进行了检查。

我希望这会有所帮助,即使问题已经有6个月了。

© www.soinside.com 2019 - 2024. All rights reserved.