2013-03-22 46 views
0

我想定的緯度和經度轉換按如下: -如何從給定的經度和緯度查找左下角和右上角的經緯度?

  1. 左下緯度
  2. 左下經度
  3. 右上緯度
  4. 右上經度

例如,我有一個緯度:29.0167和經度:77.3833。現在我怎樣才能將這些座標轉換爲左下緯度,左下經度,右上緯度和右上經度。

請任何人都可以幫助我。

+0

相對於什麼,到底是什麼? – 2013-03-22 09:00:16

+0

我有一個API,我需要通過4個座標。鏈接:http://dev.virtualearth.net/REST/v1/Traffic/Incidents/37,-105,45,-94?即37,-105,45,-94。所以我怎麼能找到這個。 – 2013-03-22 09:02:05

回答

0

計算兩點之間的距離。如果距離很小(比如大約100公里),那麼通常可以使用平坦的地球近似。對於更遠的距離,您需要使用「大圓」距離。 AKA Haversine配方。你計算的這個距離是正方形的對角距離。看到這個網站你需要的所有公式:http://www.movable-type.co.uk/scripts/latlong.html

從左下角到右上角計算軸承。同樣,請參閱上面的站點以計算兩個經緯度點之間的軸承。

要得到右下角,您知道框的邊的距離是對角線距離除以2的平方根。這是從直角三角形幾何:x^2 + x^2 =斜邊。

根據上面計算的方位,加45度。你現在有一個範圍(D/sqrt(2))和一個到右下角的方位。使用上面的站點來計算緯度/經度的緯度/經度,用範圍和方位。

重複爲左上角減45度。

+0

謝謝你的回答。 – 2013-03-26 08:48:10

0

我不確定我是否理解你正在嘗試做什麼,但是如果我這樣做,你可以使用Math.Floor和Math.Ceiling。他們給你第一個較小的整數,分別提供更多的數字。

float lon =77.38; 
float lat = 29.01; 
float loLat=Math.Floor(lat); //29 
float upLat=Math.Ceiling(lat); //30 
float loLon=Math.Floor(lat); //77 
float upLon=Math.Ceiling(lat); //78 

然後,您可以從這個計算所需的角落。

+0

謝謝你的回答。這不會解決我的問題。 – 2013-03-22 10:44:36

+0

你能指出爲什麼它不能解決它。我仍然不確定你想要得到什麼。也許提供一個精心設計的輸入和期望輸出的例子。 – floAr 2013-03-22 11:35:11