🔥
【Python】緯度・経度から距離を算出する
Pythonで緯度・経度から距離を算出する方法についてご紹介します。
機械学習でも役にたつスキルだと思います。
1.計算式
弧度法のラジアンを単位とした緯度を
地点Aの緯度・経度を
地点Bの緯度・経度を
また、地球の半径は6,371kmとします。
この時、地点Aと地点Bの距離は、以下の公式で計算されます。
2.Pythonでの実装
緯度・経度情報を変数に格納
#名古屋市の緯度・経度
lat1 =35.180
lon1 = 136.907
#東京都の緯度・経度
lat2 = 35.689
lon2 =139.692
上記の公式を関数にして、実行します。
def calc_distance(lat1,lon1,lat2,lon2):
R = 6371
distance = R * math.acos(
math.sin(math.radians(lat1))*
math.sin(math.radians(lat2))+
math.cos(math.radians(lat1))*
math.cos(math.radians(lat2))*
math.cos(math.radians(lon1)-math.radians(lon2)))
return distance
calc_distance(lat1,lon1,lat2,lon2)
距離が出ました
258.86282959979485
(参考)ライブラリーを使った場合
Pythonにはgeopyというライブラリーもあります。
これを使って計算することもできます。
少し計算式が減ります。
from geopy.distance import geodesic
def geopy_distance(lat1, lon1, lat2, lon2):
point1 = (lat1, lon1)
point2 = (lat2, lon2)
distance = geodesic(point1, point2).kilometers
return distance
geopy_distance(lat1, lon1, lat2, lon2)
さきほどの距離とは少し違う結果になりました。
259.10494941966067
Discussion