使用NetTopologySuite从点集创建多边形。

6

如何从点列表创建多边形?

我有一组点,如果这些点至少有3个,我想将它们连接起来创建一个多边形。

Dim ClickedPoint As New NetTopologySuite.Geometries.Point(coordinates)
ClickedPointArray.Add(ClickedPoint)

if   ClickedPointArray.Count > 2 then

   Polygonizer = New Polygonizer()
   Polygonizer.Add(ClickedPointArray)

end if        

return Polygonizer.GetPolygons

我认为我离解决方案还很遥远。 你能帮助我吗?


像这样吗?var сoordinates = new List<NetTopologySuite.Geometries.Coordinate>(); var polygon = new NetTopologySuite.Geometries.Polygon(new NetTopologySuite.Geometries.LinearRing(сoordinates.ToArray())); - NoWar
3个回答

4
您可以使用GeometryFactory创建一个包含一组坐标的多边形,如下所示:
Dim coordinatesArray as Coordinate[] = YourMethodToGetCoordinates
Dim geomFactory As New GeometryFactory
Dim poly As geomFactory.CreatePolygon(coordinatesArray) //this returns an IPolygon that you can cast to Polygon

1
也许现在回答有点晚了,但我也在寻找同样的问题(使用C#),当我解决了它后,我认为回答这个问题可能对下一个访问者有用。 - xecollons

1
这是C#代码。
    Coordinate[] imageOutlineCoordinates = new Coordinate[] 
    {
        new Coordinate(1, 1),
        new Coordinate(2, 1),
        new Coordinate(2, 2),
        new Coordinate(1, 1)
    };
    GeometryFactory geometryFactory = new GeometryFactory();
    Polygon poly = geometryFactory.CreatePolygon(imageOutlineCoordinates);

0

以下是使用NetTopologySuite(https://github.com/NetTopologySuite/NetTopologySuite)解决C#问题的方案。

Polygon GetGeometry(Coordinate[] coordinates)
        {
            var geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
            var polygon = new Polygon(new LinearRing(coordinates), geometryFactory);
            return polygon;
        }

注意:这里的4326是坐标系的SRID。如果没有它,几何操作将不会给出正确的结果。
--------------------------------- 上述方法的使用
var coordinates = new List<Coordinate>();


 for (var index = 0; index < doubleList.Count; index = index + 2)
    {
      var coordinate = new Coordinate(doubleList[index], doubleList[index + 1]);
        coordinates.Add(coordinate);
    }   


   coordinates.Add(new Coordinate(points[0], points[1]));
    
   GetGeometry(coordinates.ToArray())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接