gpt4 book ai didi

c# - 在 DotSpatial 中定义多边形交叉 180 子午线

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:31 30 4
gpt4 key购买 nike

我是 DotSpatial 的新手,我尝试通过以下方式定义多边形 180 度子午线:

FeatureSet fs = new FeatureSet(FeatureType.Polygon);
Coordinate[] coord = new Coordinate[5];
coord[0] = new Coordinate(30, 48);
coord[1] = new Coordinate(120, 45);
coord[2] = new Coordinate(-170, 64);
coord[3] = new Coordinate(30, 70);
coord[4] = new Coordinate(30, 48);
Polygon pg = new Polygon(coord);
pg.Normalize();
fs.Features.Add(pg);
fs.Projection = DotSpatial.Projections.KnownCoordinateSystems.Geographic.World.WGS1984;
fs.SaveAs(HttpContext.Current.Server.MapPath("~/shp/test2.shp"), true);

但是,当我检查输出形状文件时,多边形边彼此相交

如果我在 SQL Server 中绘制相同的多边形

DECLARE @Poly geography =   
geography::STPolyFromText('POLYGON((30 48, 120 45, -170 64, 30 70, 30 48))', 4326)
SELECT @Poly

我可以在 SQL Server 管理工具的“空间结果”中看到多边形正确显示。

谁能帮我解决DotSpatial中的这个问题。

非常感谢!

最佳答案

其实这不是问题,只是按照顺序给出的坐标。如果您更改顺序,那就没问题了。

FeatureSet fs = new FeatureSet(FeatureType.Polygon);

Coordinate[] coord = new Coordinate[]
{
new Coordinate(30, 48),
new Coordinate(-170, 64),
new Coordinate(30, 70),
new Coordinate(120, 45),
new Coordinate(30, 48)
};

fs.AddFeature(new Polygon(new LinearRing(coord)));
fs.SaveAs(@"C:\Users\xxxx\Desktop\polygontest.shp", false);

和输出;

enter image description here

关于c# - 在 DotSpatial 中定义多边形交叉 180 子午线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43766231/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com