

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の 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]) を、指定された深さまで *geosquare* と呼ばれる等しい正方形の領域に再帰的に分割します。分割は、指定されたポイントの位置に基づいて行われます。ポイントを含む geosquare の 1 つが、最大深度に達するまで各ステップで分割されます。この geosquare の選択は安定しています。つまり、関数の結果は入力引数のみに依存します。この関数は、ポイントが位置する最終的な geosquare を識別する固有の値を返します。

ST\$1GeoSquare は、x 座標が経度を表し、y 座標が緯度を表すポイントを受け入れます。経度と緯度はそれぞれ [-180, 180] と [-90, 90] に制限されます。ST\$1GeoSquare の出力は、[ST\$1GeomFromGeoSquare](ST_GeomFromGeoSquare-function.md) 関数への入力として使用できます。

地球の赤道円弧の周囲は 360° あり、2 つの半球 (東と西) に分かれており、それぞれの半球には 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` のポイント値またはポイントのサブタイプに評価される式。ポイントの 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
```