Python で 2つの GPS ポイント間の距離を計算する

Oluwafisayo Oluwatayo 2024年2月15日
  1. Python で Haversine 式を使用して 2つの GPS ポイント間の距離を計算する
  2. Python の mpu ライブラリを使用して 2つの GPS ポイント間の距離を計算する
  3. Python で geopy ライブラリを使用して 2つの GPS ポイント間の距離を計算する
  4. まとめ
Python で 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 で Haversine を使用して距離を計算する

[実行] をクリックすると、ターミナル内にこの結果が表示されます。

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)

しばらく待つと、端末内で計算された距離が表示されます。

出力:

MPU を使用した Python の距離の計算

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)

出力:

Python は Geopy を使用して距離を計算します

結果をマイルで表示したい場合は、コードの最後のビットの kmmiles に変更して、コードを実行します。

まとめ

地球上の特定の 2 点間の距離を計算するのは、これ以上簡単ではありません。 hasersine 式は約 0.5% ずれている可能性がありますが、結果は依然として近く、さまざまなプロジェクトで使用できます。

Oluwafisayo Oluwatayo avatar Oluwafisayo Oluwatayo avatar

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