earthdistance
模組提供了兩種不同的方法來計算地球表面的大圓距離。第一個描述的方法取決於 cube
模組。第二種方法基於內建的 point
資料類型,使用經度和緯度作為坐標。
在此模組中,地球被假定為完全球形。(如果這對您來說太不精確,您可能需要查看 PostGIS 專案。)
必須先安裝 cube
模組,才能安裝 earthdistance
(雖然您可以使用 CREATE EXTENSION
的 CASCADE
選項,一次安裝兩個模組)。
強烈建議將 earthdistance
和 cube
安裝在同一個模式 (schema) 中,並且該模式的 CREATE 權限尚未且將不會授予任何不受信任的使用者。 否則,如果 earthdistance
的模式包含由惡意使用者定義的物件,則存在安裝時的安全風險。 此外,在安裝後使用 earthdistance
的函數時,整個搜尋路徑應僅包含受信任的模式。
資料儲存在立方體中,立方體是點(兩個角相同),使用代表地球中心距離的 x、y 和 z 三個坐標。 提供了一個在 cube
類型之上的 網域 earth
,其中包括約束檢查,以確保值滿足這些限制並且相當接近地球的實際表面。
地球的半徑是從 earth()
函數獲得的。 它以公尺為單位。 但是透過更改這個函數,您可以更改模組以使用其他單位,或者使用您認為更合適的不同半徑值。
這個套件也適用於天文資料庫。 天文學家可能希望將 earth()
更改為傳回 180/pi()
的半徑,以便距離以度為單位。
提供函數以支援經緯度(以度為單位)的輸入,以支援經緯度的輸出,以計算兩點之間的大圓距離,並輕鬆指定可用於索引搜尋的邊界框。
提供的函數如 表格 F.4 所示。
表格 F.4. 基於立方體的 Earthdistance 函數
模組的第二部分依賴於將地球位置表示為 point
類型的值,其中第一個分量表示經度(以度為單位),第二個分量表示緯度(以度為單位)。 點採用 (經度, 緯度) 的形式,而不是反過來,因為經度更接近於 x 軸的直觀概念,而緯度更接近於 y 軸。
提供單一運算符,如表 F.5所示。
表 F.5. 基於點的 Earthdistance 運算符
運算符 描述 |
---|
計算地球表面上兩點之間的距離(以英里為單位)。 |
請注意,與基於 cube
的模組部分不同,此處的單位是硬編碼的:更改 earth()
函數不會影響此運算符的結果。
經度/緯度表示法的一個缺點是,您需要注意極點附近和 +/- 180 度經度附近的邊緣情況。基於 cube
的表示法避免了這些不連續性。
如果您在文件中發現任何不正確、與您的特定功能使用經驗不符或需要進一步澄清的地方,請使用此表格來報告文件問題。