gpt4 book ai didi

oracle - 计算Oracle中两个lat long点之间的距离

转载 作者:行者123 更新时间:2023-12-03 23:07:01 25 4
gpt4 key购买 nike

我正在尝试使用 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) 距离计算也不正确吗?

最佳答案

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 公里

您网站上的返回值为 111.19 km,因此相差为 580 m。这种差异是因为您的在线计算器使用简单的数学假设地球是球形,而 Oracle 使用正确的椭圆体地球形状(WGS84 椭圆体)。

您可以在 https://www.fai.org/page/world-distance-calculator 上看到差异如果您选择 WGS84 地球模型(WGS84 椭球体),那么您会得到与 Oracle (110.611186562098) 相同的结果。如果您将其更改为 FAI Sphere,那么您将得到 111.19492643325476,与您的比较器相同。

正确的距离是 110.611 公里。在 580 m 之外计算它是否重要取决于您的应用程序。如果您测量的距离很短(例如一公里或更短),则误差可以忽略不计。但对于长距离来说,它可能很重要。在这里,这意味着错过了 1/2 公里的目标!

它确实显示了使用正确的地球模型进行这些计算的重要性。

编辑:Oracle 表示(以及几乎所有 GIS 工具)是经度、纬度。如果你交换数字,那么你会得到非常不同的结果。

关于oracle - 计算Oracle中两个lat long点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61892625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com