Python で 2つの GPS ポイント間の距離を計算する
- Python で Haversine 式を使用して 2つの GPS ポイント間の距離を計算する
-
Python の
mpu
ライブラリを使用して 2つの GPS ポイント間の距離を計算する -
Python で
geopy
ライブラリを使用して 2つの GPS ポイント間の距離を計算する - まとめ
2つの GPS ポイント間の距離を計算することは、Python フレームワーク内で操作できる地理的および数学的な演習です。 Python でこの操作を実行する方法を見てみましょう。
Python で Haversine 式を使用して 2つの GPS ポイント間の距離を計算する
haversine 式は、Python で 2つの GPS ポイント間の距離を計算する簡単な方法ですが、その計算は地球が完全な球体であるという仮定に基づいています。 しかし、地球は完全な球体ではありません。
これは、得られる結果が完全に正確ではないことを意味します。 仮定のため、わずかな誤差があります。 haversine 式は、経度と緯度の 2つのペア間の距離を計算することによって、2つの GPS ポイント間の距離を計算します。
Python を作成し、これらのコードを内部に入力します。 以下に示すように、ファイルにnew.py
という名前を付けます。
コード スニペット - new.py
:
from math import radians, cos, sin, asin, sqrt
def haversine(lat1, lon1, lat2, lon2):
R = 3959.87433
dLat = radians(lat2 - lat1)
dLon = radians(lon2 - lon1)
lat1 = radians(lat1)
lat2 = radians(lat2)
a = sin(dLat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dLon / 2) ** 2
c = 2 * asin(sqrt(a))
return R * c
lon1 = -103.548851
lat1 = 32.0004311
lon2 = -103.6041946
lat2 = 33.374939
print(haversine(lat1, lon1, lat2, lon2))
出力:
[実行] をクリックすると、ターミナル内にこの結果が表示されます。
Python の mpu
ライブラリを使用して 2つの GPS ポイント間の距離を計算する
mpu
は Martins Python Utilities から派生したもので、他の依存関係を必要とせずにさまざまな機能を実行するために使用できる Python ライブラリです。
まず、次のように入力して mpu
をインストールします。
pip install mpu
次に、新しい Python ファイルを作成し、new.py
という名前を付けて、以下のコードを入力します。
コード スニペット - new.py
:
import mpu
lat1 = 32.0004311
lon1 = -103.548851
lat2 = 33.374939
lon2 = -103.6041946
dist = mpu.haversine_distance((lat1, lon1), (lat2, lon2))
print(dist)
しばらく待つと、端末内で計算された距離が表示されます。
出力:
Python で geopy
ライブラリを使用して 2つの GPS ポイント間の距離を計算する
Python のgeopy
は、国、州、都市などの間の距離を計算するために特別に設計されたライブラリです。次の例でわかるように、キロメートル、マイルなどを使用して距離を計算できます。
ターミナル内で、次のように入力して geopy
ライブラリをインストールします。
pip install geopy
新しいファイルを作成し、new.py
という名前を付けて、これらのコードを入力します。
from geopy.distance import geodesic
origin = (30.172705, 31.526725)
dist = (30.288281, 31.732326)
print(geodesic(origin, dist).kilometers)
出力:
結果をマイルで表示したい場合は、コードの最後のビットの km
を miles
に変更して、コードを実行します。
まとめ
地球上の特定の 2 点間の距離を計算するのは、これ以上簡単ではありません。 hasersine 式は約 0.5% ずれている可能性がありますが、結果は依然として近く、さまざまなプロジェクトで使用できます。
Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.
LinkedIn