sql >> Database >  >> RDS >> Oracle

Bereken de afstand tussen twee lat-lange punten 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

De Oracle-berekening geeft 110,611186 km

Degene op uw site retourneert 111,19 km dus een verschil van 580 m . Dat verschil is omdat uw online rekenmachine eenvoudige wiskunde gebruikt, uitgaande van een bolvormige aarde, terwijl Oracle de juiste ellipsoïde . gebruikt vorm van de aarde (de WGS84-ellipsoïde).

U kunt het verschil zien op https://www.fai.org/page/world -afstandscalculator Als u de WGS84 . kiest aarde-model (de WGS84-ellipsoïde) dan krijg je hetzelfde resultaat als Oracle (110.611186562098). Als je het verandert in FAI Sphere dan krijg je 111.19492643325476, hetzelfde als je vergelijker.

De juiste afstand is 110.611 km. Of het berekenen ervan met 580 m uit van belang is, hangt af van uw toepassing. Als u korte afstanden meet (zoals een km of minder), is de fout verwaarloosbaar. Maar voor lange afstanden kan het aanzienlijk zijn. Hier zou het betekenen dat je een doel met 1/2 km mist!

Het toont wel het belang aan van het gebruik van het juiste aardmodel voor die berekeningen.

BEWERKEN: En de Oracle-representatie (en vrijwel alle GIS-tools) is lengtegraad, breedtegraad . Als je de getallen verwisselt, krijg je heel andere resultaten.



  1. MySQL Selecteer datum gelijk aan vandaag

  2. Hoe upload ik een afbeelding naar een database met behulp van een php-script?

  3. Toon string van raise_application_error in Java-programma

  4. Krijg de primaire sleutelkolom van een tabel in oracle