方位と範囲を指定したポイントから目的地の位置を(Pythonで)計算する方法を探しています。
subject(geopy
とpyproj
)の2つのライブラリからの結果の比較に基づいて、最終的な出力の違いが大きくなっていることに気付きました。たとえば、100 kmでは、およそデシメートルのオーダーです。これは私が意味することの最小限の例です:
from __future__ import absolute_import, division, print_function
long_1 = -1.729722
lat_1 = 53.320556
bearing = 96.021667
distance = 124.8 #in km
# using geopy
import geopy
from geopy.distance import VincentyDistance
origin = geopy.Point(lat_1, long_1)
destination = VincentyDistance(kilometers=distance).destination(origin, bearing)
gp_lat_2 = destination.latitude
gp_long_2 = destination.longitude
# using pyproj
from pyproj import Geod
g = Geod(ellps='WGS84')
prj_long_2, prj_lat_2, prj_bearing_2 = g.fwd(long_1, lat_1, bearing, distance*1000)
# results comparison
print(" | pyproj | geopy")
print("long_2 %.6f %.6f" % (prj_long_2, gp_long_2))
print("lat_2 %.6f %.6f" % (prj_lat_2, gp_lat_2))
print("> DELTA pyproj, geopy")
print("delta long_2 %.7f" % (prj_long_2 - gp_long_2))
print("delta lat_2 %.7f" % (prj_lat_2 - gp_lat_2))
私はこれらの結果を得ました:
| pyproj | geopy
long_2 0.127201 0.127199
lat_2 53.188432 53.188432
> DELTA pyproj, geopy
delta long_2 0.0000021
delta lat_2 -0.0000002
私の主な質問は、私が何か間違っているのかどうかです(両方の設定でを使用する必要がありますWGS84
)。
そうでない場合、使用されている異なる数式による違いはありますか(Vincentyとgeopy
Karneyの違いpyproj
)?たとえば、ここで引用されている丸め誤差。