Oracle
 sql >> Database >  >> RDS >> Oracle

Calcola la distanza tra due punti lat long in 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

Il calcolo Oracle restituisce 110,611186 km

Quello sul tuo sito restituisce 111,19 km quindi una differenza di 580 m . Questa differenza è dovuta al fatto che il tuo calcolatore online utilizza la matematica semplice assumendo una sferica terra, mentre Oracle usa l'appropriato ellissoidale forma della terra (l'ellissoide WGS84).

Puoi vedere la differenza su https://www.fai.org/page/world -calcolatore di distanza Se scegli WGS84 modello terra (l'ellissoide WGS84), quindi ottieni lo stesso risultato di Oracle (110.611186562098). Se lo modifichi in Sfera FAI quindi ottieni 111.19492643325476, lo stesso del tuo comparatore.

La distanza corretta è 110.611 km. L'importanza di calcolarlo a 580 m di distanza dipende dall'applicazione. Se si misurano brevi distanze (come un km o meno), l'errore è trascurabile. Ma per le lunghe distanze può essere significativo. Qui significherebbe mancare un bersaglio di 1/2 km!

Mostra l'importanza di utilizzare il modello terrestre corretto per quei calcoli.

MODIFICA: E la rappresentazione Oracle (e praticamente tutti gli strumenti GIS) è longitudine, latitudine . Se scambi i numeri, otterrai risultati molto diversi.