本文介紹了在Oracle中計(jì)算兩個(gè)較長點(diǎn)之間距離的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在嘗試使用SDO_Geom程序包計(jì)算Oracle中兩個(gè)較長點(diǎn)之間的距離。
我在網(wǎng)上讀到的大多數(shù)解決方案建議如下:
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;
但是,當(dāng)我使用在線工具驗(yàn)證結(jié)果時(shí),它似乎是不正確的:
嘗試(40,10),(40,11)On:
http://www.meridianoutpost.com/resources/etools/calculators/calculator-latitude-longitude-distance.php
知道為什么即使我在查詢中使用地理坐標(biāo)系(4326),距離計(jì)算也不正確?
推薦答案
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
甲骨文計(jì)算返回110.611186公里
您站點(diǎn)上的那個(gè)返回111.19公里,所以相差580米。這是因?yàn)槟脑诰€計(jì)算器使用簡單的數(shù)學(xué)方法假定球形地球,而Oracle使用正確的橢球體地球形狀(WGS84橢球體)。
您可以在https://www.fai.org/page/world-distance-calculator上看到差異如果您選擇WGS84地球模型(WGS84橢球體),則您將得到與Oracle(110.611186562098)相同的結(jié)果。如果將其更改為FAI球體,則得到111.19492643325476,與您的比較器相同。
正確距離為110.611公里。在離線580米的情況下計(jì)算它是否重要取決于您的應(yīng)用程序。如果你測量短距離(如一公里或更短),誤差可以忽略不計(jì)。但對于遠(yuǎn)距離而言,這一點(diǎn)可能意義重大。這里的意思是偏離目標(biāo)1/2公里!
它確實(shí)顯示了使用正確的地球模型進(jìn)行這些計(jì)算的重要性。
編輯:Oracle表示(以及幾乎所有的地理信息系統(tǒng)工具)是經(jīng)度。如果你交換數(shù)字,那么你會(huì)得到非常不同的結(jié)果。
這篇關(guān)于在Oracle中計(jì)算兩個(gè)較長點(diǎn)之間距離的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,