緯度/経度に基づいて2点間の距離を取得する 質問する

緯度/経度に基づいて2点間の距離を取得する 質問する

私はその式を実装してみました緯度と経度に基づいて距離を調べるこのアプレットは、私がテストしている 2 つの点では優れています。

ここに画像の説明を入力してください

しかし、私のコードは動作しません。

from math import sin, cos, sqrt, atan2

R = 6373.0

lat1 = 52.2296756
lon1 = 21.0122287
lat2 = 52.406374
lon2 = 16.9251681

dlon = lon2 - lon1
dlat = lat2 - lat1
a = (sin(dlat/2))**2 + cos(lat1) * cos(lat2) * (sin(dlon/2))**2
c = 2 * atan2(sqrt(a), sqrt(1-a))
distance = R * c

print "Result", distance
print "Should be", 278.546

距離5447.05546147を返します。なぜでしょうか?

ベストアンサー1

ヴィンセンティ距離は今GeoPy バージョン 1.13 以降では非推奨-使用すべきgeopy.distance.distance()その代わり!


以前の回答のいくつかは、ハーフサイン式は地球が球体であると仮定しており、その結果、最大約0.5%の誤差が生じる( によるhelp(geopy.distance))。ヴィンセンティ距離より正確な楕円体モデルを使用する。WGS-84、および実装されていますジオピー。 例えば、

import geopy.distance

coords_1 = (52.2296756, 21.0122287)
coords_2 = (52.406374, 16.9251681)

print(geopy.distance.geodesic(coords_1, coords_2).km)

279.352901604デフォルトの楕円体 WGS-84 を使用してキロメートル単位の距離を印刷します。(または.miles他のいくつかの距離単位のいずれかを選択することもできます。)

おすすめ記事