2012-01-20 20 views
-3

非常簡單的問題,如果我有北部和東部的值我怎樣才能用c#計算半徑?如何計算給定的北方和東方值的半徑c#

例如我有East: 534497 North: 168016。現在我該如何計算以英里或公里爲單位的半徑。

編輯1: 感謝您的積極和消極的支持。我對計算半徑或這個地理位置等方面沒有任何想法,我在這裏發佈了我的問題,因爲我分配了一項任務來照顧,因爲這是我們的應用要求之一。我們有英國地址數據庫,我們在東方和北方的格局中使用MapPoint作爲我們的應用程序,我們允許用戶選擇地圖上的某個區域,並根據我們需要計算半徑的選擇。

這就是我所知道的。如果您需要更多信息,請詢問。

+0

這是功課嗎? –

+3

您的座標代表一個點。半徑是原點和點之間的線段。座標系的原點是什麼? – Strillo

+0

你的意思是你想知道一個點與另一個點之間的距離534497單位東部和168016單位以北?他們在什麼單位?這是在一個平坦的表面或地理點,可以遠離曲率重要嗎? –

回答

0

使用畢達哥拉斯定理。你有雙方,你需要對角線。

+1

勾股定理不適用於球體上足夠大的距離。 –

0

我認爲這個問題甚至不是一個有效的問題。如果你想知道兩點之間(經/緯度)的距離,我用的方法是這樣的:

public static double Distance(Position pos1, Position pos2, DistanceType type) 
    { 
     double R = (type == DistanceType.Miles) ? 3960 : 6371; 
     double dLat = toRadian(pos2.Latitude - pos1.Latitude); 
     double dLon = toRadian(pos2.Longitude - pos1.Longitude); 
     double a = Math.Sin(dLat/2) * Math.Sin(dLat/2) + 
     Math.Cos(toRadian(pos1.Latitude)) * Math.Cos(toRadian(pos2.Latitude)) * 
     Math.Sin(dLon/2) * Math.Sin(dLon/2); 
     double c = 2 * Math.Asin(Math.Min(1, Math.Sqrt(a))); 
     double d = R * c; 
     return d; 
    } 

Position對象是包含類型doubleLatitudeLongitude屬性的對象。

相關問題