

# 地理空間データをクエリする
<a name="querying-geospatial-data"></a>

地理空間データには、オブジェクトの地理的位置を指定する識別子が含まれています。このタイプのデータの例としては、天気予報、地図の案内、位置情報を含むツイート、店舗の場所、航空路線などがあります。地理空間データは、ビジネス分析、レポート、および予測で重要な役割を果たします。

緯度や経度などの地理空間識別子を使用すると、郵送先住所を地理座標系に変換できます。

## 地理空間クエリとは
<a name="geospatial-query-what-is"></a>

地理空間クエリとは、Athena でサポートされている特殊な SQL クエリタイプです。非空間 SQL クエリとは以下の点が異なります。
+ 特殊なジオメトリデータ型として `point`、`line`、`multiline`、`polygon`、および `multipolygon` を使用する。
+ ジオメトリデータ型間の関係として `distance`、`equals`、`crosses`、`touches`、`overlaps`、`disjoint` などを表現する。

Athena で地理空間クエリを使用すると、以下のオペレーションと、その他の類似したオペレーションを実行できます。
+ 2 点間の距離を確認する。
+ あるエリア (ポリゴン) 内に別のエリアが含まれているかどうかを確認する。
+ 1 つの行が別の行や多角形と交差または接触しているかどうかを確認する。

例えば、Athena でレーニア山の地理座標について `double` 型の値から `point` ジオメトリデータ型を得るには、以下の例にあるように `ST_Point (longitude, latitude)` 地理空間関数を使用します。

```
ST_Point(-121.7602, 46.8527)
```

## 入力データ形式とジオメトリデータ型
<a name="geospatial-input-data-formats-supported-geometry-types"></a>

Athena で地理空間関数を使用するには、データを WKT 形式で入力するか、Hive JSON SerDe を使用します。Athena でサポートされているジオメトリデータ型を使用することもできます。

### 入力データ形式
<a name="input-data-formats"></a>

地理空間クエリを処理するため、Athena では以下のデータ形式での入力データがサポートされています。
+  **WKT (Well-known Text)**。Athena では、WKT が `varchar(x)` または `string` のデータ型として表されます。
+  **JSON エンコード形式の地理空間データ**。地理空間データが含まれている JSON ファイルを解析してテーブルを作成するために、Athena では [Hive JSON SerDe](https://github.com/Esri/spatial-framework-for-hadoop/wiki/Hive-JSON-SerDe) が使用されます。Athena でこの SerDe を使用する方法の詳細については、「[JSON SerDe ライブラリ](json-serde.md)」を参照してください。

### ジオメトリデータ型
<a name="geometry-data-types"></a>

地理空間クエリを処理するため、Athena では以下の特化されたジオメトリデータ型がサポートされています。
+  `point` 
+  `line` 
+  `polygon` 
+  `multiline` 
+  `multipolygon` 

## サポートされる地理空間関数
<a name="geospatial-functions-list"></a>

Athena エンジンバージョン 3 の地理空間関数については、「Trino documentation」の「[Geospatial functions](https://trino.io/docs/current/functions/geospatial.html)」を参照してください。