我有几何列表 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)
我该如何解决这个问题?