计算Oracle中两个纬度长点之间的距离

问题描述 投票:1回答:2

我正在尝试使用SDO_GEOM软件包来计算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;

但是,当我使用在线工具验证结果时,这似乎是不正确的:

尝试(40,10),(40,11):

http://www.meridianoutpost.com/resources/etools/calculators/calculator-latitude-longitude-distance.php

知道我在查询中使用的是地理坐标系(4326),为什么距离计算仍然不正确?

oracle plsql geometry geocoding oracle-spatial
2个回答
0
投票

您的问题在于交换经度和纬度

这里是计算中央公园和百老汇的距离的示例

select sdo_geom.sdo_distance(         --  longitude,  Latitude 
  sdo_geometry(2001, 4326, sdo_point_type(-73.968285, 40.785091, null), null, null),
  sdo_geometry(2001, 4326, sdo_point_type(-73.974709, 40.790886, null), null, null),
  0.01,
  'unit=KM'
) as distance
from dual;

返回]

0,841504644128136

您提到的elink提供(提供正确的输入)可比较的结果

 From: (40°47'6.3276000000001"N -73°58'5.826"E) To: (40°47'27.1896"N -73°58'28.9524"E)
0.52 miles / 0.84 kilometers / 0.45 nautical miles

0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.