1

我关注了这篇文章https://docs.microsoft.com/en-us/ef/core/modeling/spatial但没有工作。

var seattle = new Point(-122.333056, 47.609722) { SRID = 4326 };
var redmond = new Point(-122.123889, 47.669444) { SRID = 4326 };

var distance = seattle.ProjectTo(2855).Distance(redmond.ProjectTo(2855));

此代码返回距离 = 17062 米

从网站距离计算器我得到距离 = 17.02 公里

对于文章中的示例,距离大致相同。

但是如果我选择这个坐标:

var seattle = new Point(1.230469, 19.973349) { SRID = 4326 };
var redmond = new Point(17.753906, 19.642588) { SRID = 4326 };

var distance = seattle.ProjectTo(2855).Distance(redmond.ProjectTo(2855));

此代码返回距离 = 1926891 米

从网站,距离 = 1,728 公里

相差约200米。我在其他位置进行了测试,结果更糟

文章中有评论://不同的数据需要不同的坐标系。

这是什么意思?我应该使用 2855 以外的其他坐标系吗?哪一个?

4

1 回答 1

2

看看 UTM Zones ( Univesal Transverse Mercator ) 作为起点: 在此处输入图像描述

通常,您尝试投影到 2D 地图上的 3D 地球区域越小,它就越准确。因此,在 Microsoft 的示例中,您可以使用UTM 10 for seattle获得良好的准确性,但使用特定的北华盛顿投影时它们会更加精确

因此,对于您的情况(马里),请尝试UTM 31。确保将“众所周知的文本”(WKT) 复制到您的示例中并引用它而不是北华盛顿的那个。然后,如果这还不够好,请尝试搜索更接近您感兴趣的精确区域的投影。

于 2020-09-20T01:50:44.143 回答