在 C# 中使用 NetTopology 在确定两个特定几何形状之间的差异时,我得到一个“找到的非节点交集”异常。
这些几何图形是使用几个例程(如CascadedPolygonUnion.Union
、Intersection
和)的结果Difference
。
在某些时候,我们有一个MultiPolygon
我们想要从中切出另一个几何图形 ( Polygon
):
我们使用此代码尝试切断“红色”多边形:
Geometry difference = multiPolygon.Difference(geometryToRemove);
但随后我们收到一条NetTopologySuite.Geometries.TopologyException
消息:
found non-noded intersection between LINESTRING (240173.28029999882 493556.2806000002, 240173.28177031482 493556.28131837514) and LINESTRING (240173.28176154062 493556.2813140882, 240173.28176153247 493556.2813140842) [ (240173.28176153894, 493556.2813140874) ]
我也在NetTopologySuite 讨论论坛中问了这个问题,因为我们即将发布日期,我希望有人可以提供一些额外的见解(关于解决方法的想法),因为这看起来像 de 库中的一个错误,因为多边形本身似乎是有效的.
可以在此处找到有关多边形的数据- 我们使用“RDNew”数据来执行Difference
操作,但我还添加了这些多边形的 WGS84 版本,以便能够在 geojson.io 等工具中查看它们。