C# 使用NetTopologySuite计算到点(纬度、经度)之间的距离

C# 使用NetTopologySuite计算到点(纬度、经度)之间的距离,c#,entity-framework-core,nettopologysuite,C#,Entity Framework Core,Nettopologysuite,我阅读了这篇文章,但没有效果 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米 从网站距离计算器中,我得到的

我阅读了这篇文章,但没有效果

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米

从网站上看,距离=1728公里

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

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

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

以UTM区域()为起点:

通常,您尝试投影到2D地图上的3D地球区域越小,其精度就越高。所以,在微软的例子中,你可以通过使用一个特定的工具来获得很好的精确度,但是使用一个特定的工具,精确度会更高

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