2013-04-15 72 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); 
}