我正在嘗試整理一個方法來計算c#中2個點之間的距離。c中計算2點之間的距離#
這是我一直在嘗試的代碼,但我擔心我得到的答案不正確。
static void Main()
{
//postcode australia 2600 -> 3000
float latA = -31.997976f;
float longA = 115.762877f;
float latB = -31.99212f;
float longB = 115.763228f;
decimal distance = (DistanceBetween(latA, latB, longA, longB));
Console.WriteLine("Distance is" + distance);
Console.ReadLine();
}
static decimal DistanceBetween(float latA, float longA, float latB, float longB)
{
var RadianLatA = Math.PI * latA/180;
var RadianLatb = Math.PI * latB/180;
var RadianLongA = Math.PI * longA/180;
var RadianLongB = Math.PI * longB/180;
double theDistance = (Math.Sin(RadianLatA)) *
Math.Sin(RadianLatb) +
Math.Cos(RadianLatA) *
Math.Cos(RadianLatb) *
Math.Cos(RadianLongA - RadianLongB);
return Convert.ToDecimal(((Math.Acos(theDistance) * (180.0/Math.PI)))) * 69.09M * 1.6093M;
}
這是從本網站這裏 Distance between addresses
上什麼錯誤/
感謝 瑞安
任何想法找到了應對調整
http://www.movable-type.co.uk/scripts/latlong.html本網站總是幫我出兩點之間計算距離。 – woutervs
謝謝,很好的鏈接。我把這個放在一個asp.net應用程序來計算郵政編碼之間的距離,所以我需要得到這個代碼的權利! – user1672867
我的第一個猜測是你的三元數轉換中的一個標誌問題。拉起wolframalpha或一個計算器,瀏覽代碼並查看每個''Math.Sin'''(或其他trig函數)的結果,並查看結果是否匹配。 從度數轉換爲弧度時,還必須考慮在trig函數中使用的符號 –