ST_ GeoSquare - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ST_ GeoSquare

ST_ GeoSquare 遞歸地將域([-180,180],[-90,90])分為相等的平方區域,稱為土平方到指定的深度。細分以提供的點的位置為基礎。包含該點的其中一個 geosquare 會在每個步驟細分,直到達到最大深度為止。這個 geosquare 的選擇是穩定的,亦即函數結果僅取決於輸入參數。此函數傳回一個唯一值,用於識別該點所在的最終 geosquare。

ST_ GeoSquare 接受一個點,其中 x 座標代表經度,y 座標代表緯度。經度和緯度分別限制為 [-180, 180] 和 [-90, 90]。ST_ 的輸出GeoSquare 可以用作ST_ GeomFromGeoSquare函數的輸入。

地球赤道圓周有 360° 的弧線,分為兩個半球 (東半球和西半球),每個半球都有從 0° 子午線開始的 180° 經線 (子午線)。按照慣例,當投影到笛卡爾平面上的 x 軸時,東經度是「+」(正) 座標,當投影到笛卡爾平面上的 x 軸時,西經度是「-」(負) 座標。地球赤道週長 0° 的南北各有 90° 緯度線,每條緯線都與地球赤道週長 0° 平行。依照慣例,投影到笛卡爾平面時,北緯線與「+」(正) y 軸相交,投影到笛卡爾平面時,南緯線與「-」(負) y 軸相交。將經線和緯線相交形成的球形網格轉換為投影到笛卡爾平面上的網格,該網格在笛卡爾平面上具有標準的正負 x 座標和正負 y 座標。

ST_ 的目的GeoSquare 是使用相同的代碼值標記或標記關閉點。位於相同 geosquare 的點會接收相同的代碼值。Geosquare 用於將地理座標 (緯度和經度) 編碼為整數。較大的區域被劃分為網格,以在地圖上以不同的解析度描繪區域。Geosquare 可用於空間索引、空間分級、鄰近搜尋、位置搜尋以及建立唯一的地點識別碼。ST_ GeoHash 函數遵循類似的過程,將區域劃分為網格,但具有不同的編碼方式。

語法

ST_GeoSquare(geom)
ST_GeoSquare(geom, max_depth)

引數

geom

GEOMETRY 資料類型的值,或是評估為 POINT 子類型的運算式。點的 x 座標 (經度) 必須在以下範圍內:-180 - 180。點的 y 座標 (緯度) 必須在以下範圍內:-90 - 90

max_depth

INTEGER 資料類型的值。包含該點的域被遞歸細分的最大次數。值必須為介於 1 到 32 之間的整數。預設值為 32。子實際最終的細分數小於或等於指定的 max_depth

傳回類型

BIGINT

此函數傳回一個唯一值,用於識別輸入點所在的最終 geosquare。

如果輸入 geom 不是點,則函數會傳回錯誤。

如果輸入點為空,則傳回值對 ST_ GeomFromGeoSquare 函數不是有效輸入。使用該ST_ IsEmpty函數可防止以空點對 ST_ GeoSquare 的調用。

如果輸入點不在範圍內,則函數會傳回錯誤。

如果輸入 max_depth 超出範圍,則函數會傳回錯誤。

範例

以下 SQL 會從輸入點傳回 geosquare。

SELECT ST_GeoSquare(ST_Point(13.5, 52.5));
st_geosquare ----------------------- -4410772491521635895

下列 SQL 從最大深度為 10 的輸入點傳回 geosquare。

SELECT ST_GeoSquare(ST_Point(13.5, 52.5), 10);
st_geosquare -------------- 797852