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