本文介紹了在Oracle中計算兩個較長點之間距離的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在嘗試使用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)On:
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
甲骨文計算返回110.611186公里
您站點上的那個返回111.19公里,所以相差580米。這是因為您的在線計算器使用簡單的數學方法假定球形地球,而Oracle使用正確的橢球體地球形狀(WGS84橢球體)。
您可以在https://www.fai.org/page/world-distance-calculator上看到差異如果您選擇WGS84地球模型(WGS84橢球體),則您將得到與Oracle(110.611186562098)相同的結果。如果將其更改為FAI球體,則得到111.19492643325476,與您的比較器相同。
正確距離為110.611公里。在離線580米的情況下計算它是否重要取決于您的應用程序。如果你測量短距離(如一公里或更短),誤差可以忽略不計。但對于遠距離而言,這一點可能意義重大。這里的意思是偏離目標1/2公里!
它確實顯示了使用正確的地球模型進行這些計算的重要性。
編輯:Oracle表示(以及幾乎所有的地理信息系統工具)是經度。如果你交換數字,那么你會得到非常不同的結果。
這篇關于在Oracle中計算兩個較長點之間距離的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,