大致計算:
同一經線上1緯度差大約等於111km
同一緯線上1經度差大約等於111×(cos緯度)km
已知兩點間的緯度差和經度差,則運用勾股定理可求兩點間的斜邊(因為地球是橢球體,所以實際誤差很大)
詳細計算:
地球是一個近乎標準的橢球體,它的赤道半徑為6378.140千米,極半徑為 6356.755千米,平均半徑6371.004千米。如果我們假設地球是一個完美的球體,那麼它的半徑就是地球的平均半徑,記為R。如果以0度經線為基 準,那麼根據地球表面任意兩點的經緯度就可以計算出這兩點間的地表距離(這裡忽略地球表面地形對計算帶來的誤差,僅僅是理論上的估算值)。設第一點A的經 緯度為(LonA, LatA),第二點B的經緯度為(LonB, LatB),按照0度經線的基準,東經取經度的正值(Longitude),西經取經度負值(-Longitude),北緯取90-緯度值(90- Latitude),南緯取90+緯度值(90+Latitude),則經過上述處理過後的兩點被計為(MLonA, MLatA)和(MLonB, MLatB)。那麼根據三角推導,可以得到計算兩點距離的如下公式:
C = sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB) + cos(MLatA)*cos(MLatB) Distance = R*Arccos(C)*Pi/180
這裡,R和Distance單位是相同,如果是採用6371.004千米作為半徑,那麼Distance就是千米為單位,如果要使用其他單位,比如mile,還需要做單位換算,1千米=0.621371192mile
如果僅對經度作正負的處理,而不對緯度作90-Latitude(假設都是北半球,南半球只有澳洲具有應用意義)的處理,那麼公式將是:
C = sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB) Distance = R*Arccos(C)*Pi/180 以上透過簡單的三角變換就可以推出。
如果三角函式的輸入和輸出都採用弧度值,那麼公式還可以寫作: C = sin(LatA*Pi/180)*sin(LatB*Pi/180) +
cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)
Distance = R*Arccos(C)*Pi/180 也就是:
C = sin(LatA/57.2958)*sin(LatB/57.2958) +
cos(LatA/57.2958)*cos(LatB/57.2958)*cos((MLonA-MLonB)/57.2958)
Distance = R*Arccos(C) = 6371.004*Arccos(C) kilometer =
0.621371192*6371.004*Arccos(C) mile = 3958.758349716768*Arccos(C) mile
大致計算:
同一經線上1緯度差大約等於111km
同一緯線上1經度差大約等於111×(cos緯度)km
已知兩點間的緯度差和經度差,則運用勾股定理可求兩點間的斜邊(因為地球是橢球體,所以實際誤差很大)
詳細計算:
地球是一個近乎標準的橢球體,它的赤道半徑為6378.140千米,極半徑為 6356.755千米,平均半徑6371.004千米。如果我們假設地球是一個完美的球體,那麼它的半徑就是地球的平均半徑,記為R。如果以0度經線為基 準,那麼根據地球表面任意兩點的經緯度就可以計算出這兩點間的地表距離(這裡忽略地球表面地形對計算帶來的誤差,僅僅是理論上的估算值)。設第一點A的經 緯度為(LonA, LatA),第二點B的經緯度為(LonB, LatB),按照0度經線的基準,東經取經度的正值(Longitude),西經取經度負值(-Longitude),北緯取90-緯度值(90- Latitude),南緯取90+緯度值(90+Latitude),則經過上述處理過後的兩點被計為(MLonA, MLatA)和(MLonB, MLatB)。那麼根據三角推導,可以得到計算兩點距離的如下公式:
C = sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB) + cos(MLatA)*cos(MLatB) Distance = R*Arccos(C)*Pi/180
這裡,R和Distance單位是相同,如果是採用6371.004千米作為半徑,那麼Distance就是千米為單位,如果要使用其他單位,比如mile,還需要做單位換算,1千米=0.621371192mile
如果僅對經度作正負的處理,而不對緯度作90-Latitude(假設都是北半球,南半球只有澳洲具有應用意義)的處理,那麼公式將是:
C = sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB) Distance = R*Arccos(C)*Pi/180 以上透過簡單的三角變換就可以推出。
如果三角函式的輸入和輸出都採用弧度值,那麼公式還可以寫作: C = sin(LatA*Pi/180)*sin(LatB*Pi/180) +
cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)
Distance = R*Arccos(C)*Pi/180 也就是:
C = sin(LatA/57.2958)*sin(LatB/57.2958) +
cos(LatA/57.2958)*cos(LatB/57.2958)*cos((MLonA-MLonB)/57.2958)
Distance = R*Arccos(C) = 6371.004*Arccos(C) kilometer =
0.621371192*6371.004*Arccos(C) mile = 3958.758349716768*Arccos(C) mile