

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# ST\$1GeoSquare
<a name="ST_GeoSquare-function"></a>

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

ST\$1GeoSquare 接受一個 POINT，其中 x 座標代表經度，而 y 座標代表緯度。經度和緯度分別限制為 [-180, 180] 和 [-90, 90]。ST\$1GeoSquare 的輸出可以用作 [ST\$1GeomFromGeoSquare](ST_GeomFromGeoSquare-function.md) 函數的輸入。

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

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

## 語法
<a name="ST_GeoSquare-function-syntax"></a>

```
ST_GeoSquare(geom)
```

```
ST_GeoSquare(geom, max_depth)
```

## 引數
<a name="ST_ST_GeoSquare-function-arguments"></a>

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

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

## 傳回類型
<a name="ST_GeoSquare-function-return"></a>

`BIGINT`

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

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

如果輸入點為空，則傳回值對 [ST\$1GeomFromGeoSquare](ST_GeomFromGeoSquare-function.md) 函數不是有效輸入。使用 [ST\$1IsEmpty](ST_IsEmpty-function.md) 函數可防止呼叫具有空點的 ST\$1GeoSquare。

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

如果輸入 *max\$1depth* 超出範圍，則函數會傳回錯誤。

## 範例
<a name="ST_ST_GeoSquare-function-examples"></a>

以下 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
```