点网核心:坐标转多边形时点必须形成闭合线串

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

我有几何列表 https://pastebin.ubuntu.com/p/zhgPJ4BkpK/ 我从 over pass turbo 得到的,现在我想通过点网核心制作多边形,除此之外,在转换纬度和经度之后协调

Coordinate coordinate = new Coordinate(g.lon, g.lat);
我正在尝试将列表转换为多边形:

    var coordinates = new List<Coordinate>();
    foreach (var geoElement in elements)
    {
        if (geoElement.type == "way")
        {
            foreach (var g in geoElement.geometry)
            {

                Coordinate coordinate = new Coordinate(g.lon, g.lat);

                coordinates.Add(coordinate);
            }
        }
        else
        {
            foreach (var m in geoElement.members)
            {
                if (m.type == "way")
                {
                    foreach (var g in m.geometry)
                    {
                        Coordinate coordinate = new Coordinate(g.lon, g.lat);
                        coordinates.Add(coordinate);
                    }
                }
            }
        }
    }
var geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
var polygon = geometryFactory.CreatePolygon(coordinates.ToArray());
return polygon;
    

但是我得到了这个错误:

Unhandled exception. System.ArgumentException: points must form a closed linestring
   at NetTopologySuite.Geometries.LinearRing.ValidateConstruction()
   at NetTopologySuite.Geometries.LinearRing..ctor(CoordinateSequence points, GeometryFactory factory)
   at NetTopologySuite.Geometries.GeometryFactory.CreateLinearRing(CoordinateSequence coordinates)
   at NetTopologySuite.Geometries.GeometryFactory.CreateLinearRing(Coordinate[] coordinates)
   at NetTopologySuite.Geometries.GeometryFactory.CreatePolygon(Coordinate[] coordinates)

我该如何解决这个问题?

.net-core polygon overpass-api
© www.soinside.com 2019 - 2024. All rights reserved.