Oracle
 sql >> база данни >  >> RDS >> Oracle

Изчислете разстоянието между две точки по дължина в 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

Изчислението на Oracle връща 110,611186 km

Този на вашия сайт връща 111,19 км така че разлика от580 м . Тази разлика е, защото вашият онлайн калкулатор използва проста математика, приемайки сферична земя, докато Oracle използва правилния елипсоид формата на земята (елипсоида WGS84).

Можете да видите разликата на https://www.fai.org/page/world -разстояние-калкулатор Ако изберете WGS84 земен модел (елипсоидът WGS84), тогава получавате същия резултат като Oracle (110.611186562098). Ако го промените на FAI Sphere тогава получавате 111.19492643325476, същото като вашия компаратор.

Правилното разстояние е 110,611 км. Дали изчисляването му с разстояние от 580 m е важно зависи от вашето приложение. Ако измервате къси разстояния (като километър или по-малко), грешката е незначителна. Но за дълги разстояния може да бъде значително. Тук това би означавало да пропуснете цел с 1/2 км!

Това наистина показва важността на използването на правилния земен модел за тези изчисления.

РЕДАКТИРАНЕ: А представянето на Oracle (и почти всички ГИС инструменти) е дължина, ширина . Ако размените числата, тогава ще получите много различни резултати.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извикване на Python от Oracle

  2. Изпълнете async съхранена процедура в sql developer

  3. Преобразуването на низ в Дата и повдигането на изключение, когато даден низ е невалидно

  4. Изчисляване на възрастта от рожден ден със задействане на oracle plsql и вмъкване на възрастта в таблицата

  5. Oracle:Пълнотекстово търсене с условие