Расстояние между двумя точками с широтой и долготой в базе данных оракула

Мне нужно рассчитать расстояние между двумя местоположениями через Pl SQL Query. Я пробовал Qry, но не получил его.

для этого мы используем запрос в SQL следующим образом

SELECT ROUND(geography::Point(cast('19.2806118' as float),cast('72.8757395' as float) , 
4326).STDistance(geography::Point(cast('19.4482006' as float),
cast('72.7912511' as float), 4326))/1000,1) DIST

Результат: 20,6

Чтобы рассчитать то же самое в ORACLE Db, я нашел решение через Интернет, которое выглядит следующим образом

select sdo_geom.sdo_distance(sdo_geometry(2001,4326,null,sdo_elem_info_array(1, 1, 1),
sdo_ordinate_array( 19.2806118,72.8757395)),sdo_geometry(2001,4326, null,sdo_elem_info_array(1, 1, 
1),sdo_ordinate_array( 19.4482006,72.7912511)),1,'unit=KM') distance_km from dual

Результат: 10.9271..

Пожалуйста, предложите метод, который даст мне результат в KM, поскольку я получаю MS SQL


person kamleshwer purohit    schedule 03.12.2020    source источник


Ответы (1)


Пожалуйста, предложите метод, который даст мне результат в KM, поскольку я получаю MS SQL

Замена порядка параметров 19.2806118,72.8757395 на 72.8757395,19.2806118

select sdo_geom.sdo_distance(
   sdo_geometry(2001,4326,null,sdo_elem_info_array(1, 1, 1),
                 sdo_ordinate_array(72.8757395,19.2806118)),
   sdo_geometry(2001,4326, null,sdo_elem_info_array(1, 1,1),
                 sdo_ordinate_array(72.7912511,19.4482006))
   ,1
   ,'unit=KM') distance_km 
from dual;

Выдает тот же результат, что и SQL Server: 20,5657053685075

db‹›демонстрация скрипки Oracle
db‹›демонстрационная версия SQL Server

Или с помощью sdo_point:

SELECT sdo_geom.sdo_distance(
         sdo_geometry(2001, 4326,
                sdo_point_type(72.8757395, 19.2806118, NULL), NULL, NULL),
          sdo_geometry(2001, 4326,
               sdo_point_type(72.7912511, 19.4482006, NULL), NULL, NULL),
               1, 'unit=KM') distance_in_m
from DUAL;

SQL-сервер: geography::Point ( Lat, Long, SRID )

person Lukasz Szozda    schedule 16.12.2020
comment
Спасибо за решение, я нашел то же самое в другом вопросе. - person kamleshwer purohit; 18.12.2020