經緯度與公里的計算

如果給定一個經緯度, 要計算上下左右n公里的經緯度, 要怎麼計算呢?

[1]給出的計算是

  • Latitude: 1 deg = 110.574 km
  • Longitude: 1 deg = 111.320*cos(latitude) km

然而, 為什麼?

經度是把赤道分為360度, 緯度是赤道到南北極各90度。緯度0度到90度是從地心到地球表面算出來的。

由[2]的資料:

地球的子午線[3]總長度大約20003.93km。平均:

  • 緯度1度 = 大約111km = 20003.93/180

  • 緯度1分 = 大約1.85km = 111 km/60

  • 緯度1秒 = 大約30.9m = 1.85 km/60

由[4]:

緯度的每個度的距離大約相當於111km,但經度的每個度的距離從0km到111km不等。它的距離隨緯度的不同而變化,沿同一緯度約等於111km乘緯度的餘弦。

因為地球是圓的, 所以越到南北極, 圓越小, 經度1度的長度越短, 當然在赤道時最長。

以北緯0度與北緯1度為例, 從地心連線出去, 0度在赤道上, 1度在赤道上面一點點. 也就是說, 緯度1度在地球上繞一圈所形成的圓, 會比緯度0度的圓更小一些。

假設地球在赤道的半徑是R, 則赤道長度是2π*R,緯度1度在地球上的圓周長是2π*R*cos(1),為什麼是cos(1)呢? 這公式的意思是2π*[R*cos(1)],不是(2π*R)*cos(1),意思是半徑變小了,

當夾角為A時, 地球半徑R*cos(A)就是A度位置的半徑。

有了圓周長2π*[R*cos(1)],再切360度,則緯度1度時,經度1度的長度是2π*R*cos(1)/360;因為我們假設赤道長度為已知, 緯度0度時, 經度1度的長度就是2π*R/360=111公里;代進去上面的公式, 2π*R*cos(1)/360 = 111*cos(1) = 緯度1度時, 經度1度的長度。

因此我們不必然需要知道地球的半徑R是多少。

然而地球不是正圓體, 所以需要做一些修正, 回到[1]:

  • Latitude: 1 deg = 110.574 km
  • Longitude: 1 deg = 111.320*cos(latitude) km

會發現兩個值不一樣, 那就是一種修正。

現在假設我們拿到了3個參數:經度、緯度、距離,能不能算出來這個座標上下左右邊界的座標呢?

可以用[5]來做驗算。

 

 

 

 

  1. http://stackoverflow.com/questions/1253499/simple-calculations-for-working-with-lat-lon-km-distance?lq=1
  2. https://zh.wikipedia.org/wiki/%E7%BA%AC%E5%BA%A6
  3. https://zh.wikipedia.org/wiki/%E6
    %9C%AC%E5%88%9D%E5%AD%90%E5%8D%88%E7%B7%9A
  4. https://zh.wikipedia.org/wiki/%E7%BB%8F%E5%BA%A6
  5. http://www.nhc.noaa.gov/gccalc.shtml

2 comments

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *