J'exécute une analyse spécifique où nous utilisons galbée pour créer des tampons autour des points (emplacements de magasin), puis vérifie si d'autres points (emplacements d'utilisateur) sont présents dans cette valeur de tampon. Quand je vérifie la distance en utilisant galbée, elle se révèle être différente de la distance que j'obtiens de geopy. La formule haversine est d'accord avec Geopy et une vérification sur Google Maps en utilisant la fonction de mesure de distance donne également environ la même distance
Voici un exemple:
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
Formule Haversine ( http://www.movable-type.co.uk/scripts/latlong.html ): 84.88
Laquelle a raison? En forme ou autres? De plus, une telle différence (~ 22%) est-elle attendue? Ou est-ce que je manque quelque chose?
EPSG:3857
- Shapely n'est pas le bon choix ici. Web Mercator n'est pas conforme et ne doit pas être utilisé pour calculer les distances.Et voici un autre calcul de distance de GeographicLib :
Je considère que c'est la bonne, à moins de 15 nanomètres.
la source