Saya menjalankan analisis khusus di mana kami menggunakan Shapely untuk membuat buffer di sekitar titik (lokasi toko) dan kemudian memeriksa apakah titik lain (lokasi pengguna) hadir dalam nilai buffer itu. Ketika saya memeriksa jarak menggunakan bentuk, ternyata berbeda dari jarak yang saya dapatkan dari geopy. Rumus haversine setuju dengan Geopy dan cek di google maps menggunakan fungsi ukur jarak juga memberikan jarak yang sama
Berikut ini sebuah contoh:
from shapely.geometry import Point, shape
from pyproj import Proj, transform
from geopy.distance import vincenty, great_circle
pt_store=Point(transform(Proj(init='EPSG:4326'),Proj(init='EPSG:3857'),-76.799614, 39.435307))
pt_user=Point(transform(Proj(init='EPSG:4326'),Proj(init='EPSG:3857'),-76.79989,39.43604))
vincenty((39.435307,-76.799614),(39.43604,-76.79989)).meters
great_circle((39.435307,-76.799614),(39.43604,-76.79989)).meters
pt_store.distance(pt_user)
Vincenty: 84.77847691521336
Great_circle: 84.90640111682812 Shapely
: 110.02637304449682
Formula Haversine ( http://www.movable-type.co.uk/scripts/latlong.html ): 84.88
Yang mana yang benar? Bentuk atau orang lain? Juga, apakah perbedaan yang sangat besar (~ 22%) diharapkan? Atau apakah saya melewatkan sesuatu?
EPSG:3857
- Shapely adalah pilihan yang salah di sini. Web Mercator tidak sesuai dan tidak boleh digunakan untuk menghitung jarak.