以下是具有相同点集但起点/舍入误差不同但方向仍然相同的多边形。
poly1 = Polygon([(0,0),(0,1),(1,1),(1,0)])
poly2 = Polygon([(0,1),(1,1),(1,0),(0,0)])
poly3 = Polygon([(0,1),(1,1.00000001),(1,0),(0,0)])
poly4 = Polygon([(0,0),(0,1),(1,1.00000001),(1,0)])
Run Code Online (Sandbox Code Playgroud)
问题1:poly1.almost_equals(poly2)返回False但poly1.equals(poly2)返回True。所以equals可以处理不同的起点但almost_equals不能。
问题2:poly1.almost_equals(poly3)返回False但poly1.almost_equals(poly4)返回True。因此almost_equals可以处理舍入误差,但起点仍然不同。
这是almost_equals函数应该表现的方式吗?我认为具有不同起点的多边形仍然是相同的多边形,应该如此对待。有方便的方法来解决这个问题吗?我有一个复杂的自定义解决方案,但我想知道这样的操作是否已在 Shapely 中实现。