2013-04-15 75 views
0

我与System.Data.Spatial.DbGeography尝试,我想用它来确定距离从一个坐标到另一个(将被存储在SQL服务器)。DbGeography.Distance()返回不正确的距离

我的坐标是纬度/长,我让他们从Bing地图(我已经与谷歌地图坐标尝试过,结果相同)。

var osloCentralStation = DbGeography.FromText("POINT(59.9109 10.7523)", 4326); 
var drammen = DbGeography.FromText("POINT(59.7378 10.2050)", 4326); 
Console.WriteLine("Distance: {0}km", osloCentralStation.Distance(drammen)/1000); 

返回: 距离:63,4340839088124km

返回的距离大约是两倍,应该是什么。

https://maps.google.com/maps?saddr=59.9109+10.7523&daddr=59.7378+10.2050

没有任何人有任何想法,这是怎么回事?

回答

0

事实证明,经/纬正在创造新的DbGeography对象时给出经度/纬度。

我写了一个小帮手方法让我不要在未来的错误再次获取:

private static DbGeography CreateDbGeography(double latitude, double longitude, int srid = 0) 
{ 
    var text = string.Format(CultureInfo.InvariantCulture.NumberFormat, "POINT({0} {1})", longitude, latitude); 

    if (srid > 0) 
    { 
     return DbGeography.FromText(text, srid); 
    } 

    return DbGeography.FromText(text); 
}