Saya mencari cara untuk menghitung (dengan Python) lokasi tujuan dari titik yang diberikan bantalan dan jangkauan.
Berdasarkan hasil perbandingan dari 2 perpustakaan dalam subjek ( geopy
dan pyproj
), saya perhatikan bahwa ada perbedaan yang meningkat dalam hasil akhir. Sebagai contoh, pada 100 km kira-kira dari urutan desimeter. Ini adalah contoh minimal dari apa yang saya maksud:
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))
Saya mendapat hasil ini:
| 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
Pertanyaan utama saya adalah apakah saya melakukan sesuatu yang salah (kedua pengaturan harus menggunakan WGS84
).
Jika tidak, apakah perbedaannya karena perbedaan formula yang digunakan (Vincenty for geopy
vs Karney for pyproj
)? Misalnya, kesalahan bulat dikutip di sini .