如何将多边形与nettopologysuite合并?

时间:2018-04-14 04:06:45

标签: c# gis nettopologysuite

我必须合并一组创建新多边形的多边形 有时会发生我在多边形中有小洞的情况,所以当我尝试合并它们时,我收到一个错误 我该如何检测并解决?

使用一些错误示例进行更新

side location conflict [ (12.235768128349596, 44.387249570104892, NaN) ]
   at NetTopologySuite.Operation.Overlay.Snap.SnapIfNeededOverlayOp.GetResultGeometry(SpatialFunction opCode)
   at NetTopologySuite.Geometries.Geometry.Union(IGeometry other)
   at NetTopologySuite.Operation.Union.CascadedPolygonUnion.UnionOptimized(IGeometry g0, IGeometry g1)
   at NetTopologySuite.Operation.Union.CascadedPolygonUnion.Union()
   at NetTopologySuite.Operation.Union.UnaryUnionOp.Union()

found non-noded intersection between LINESTRING(12.448591764796777 41.972860890341124, 12.448731325430401 41.972841479998927) and LINESTRING(12.449 41.973, 12.448695198462875 41.972831837041554) [ (12.448716431340822, 41.972843551495508, NaN) ]
   at NetTopologySuite.Noding.FastNodingValidator.CheckValid()
   at NetTopologySuite.Operation.Overlay.OverlayOp.ComputeOverlay(SpatialFunction opCode)
   at NetTopologySuite.Operation.Overlay.OverlayOp.Overlay(IGeometry geom0, IGeometry geom1, SpatialFunction opCode)

Invalid number of points in LineString (found 1 - must be 0 or >= 2)
   at NetTopologySuite.Geometries.LineString..ctor(ICoordinateSequence points, IGeometryFactory factory)
   at NetTopologySuite.Geometries.GeometryFactory.CreatePolygon(ICoordinateSequence coordinates)

1 个答案:

答案 0 :(得分:0)

您遇到的大多数错误是由于无效的几何形状引起的。您可以使用geometry.IsValidNetTopologySuite.Operation.Valid.IsValidOp类来检查几何形状是否有效。要纠正这些错误,通常可以使用偏移量为0的缓冲区:geometry = geometry.Buffer(0)