Oracle
 sql >> Base de données >  >> RDS >> Oracle

Calculer la distance entre deux points lat longs dans Oracle

select sdo_geom.sdo_distance(
  sdo_geometry(2001, 4326, sdo_point_type(40.0, 10.0, null), null, null),
  sdo_geometry(2001, 4326, sdo_point_type(40.0, 11.0, null), null, null),
  0.01,
  'unit=KM'
) as distance
from dual;

DISTANCE
----------
110.611186

Le calcul Oracle renvoie 110,611186 km

Celui de votre site renvoie 111,19 km donc une différence de 580 m . Cette différence est due au fait que votre calculatrice en ligne utilise des calculs simples en supposant une forme sphérique terre, alors qu'Oracle utilise le bon ellipsoïde forme de la terre (l'ellipsoïde WGS84).

Vous pouvez voir la différence sur https://www.fai.org/page/world -calculateur de distance Si vous choisissez le WGS84 modèle de terre (l'ellipsoïde WGS84) alors vous obtenez le même résultat qu'Oracle (110.611186562098). Si vous le changez en FAI Sphere alors vous obtenez 111.19492643325476, le même que votre comparateur.

La distance correcte est de 110,611 km. L'importance de le calculer avec 580 m dépend de votre application. Si vous mesurez de courtes distances (comme un kilomètre ou moins), l'erreur est négligeable. Mais pour les longues distances, cela peut être important. Ici, cela reviendrait à manquer une cible de 1/2 km !

Cela montre l'importance d'utiliser le bon modèle terrestre pour ces calculs.

MODIF : Et la représentation Oracle (et à peu près tous les outils SIG) est longitude, latitude . Si vous échangez les nombres, vous obtiendrez des résultats très différents.