

# 查询地理空间数据
<a name="querying-geospatial-data"></a>

地理空间数据包含为对象指定地理位置的标识符。此类数据的示例包括天气报告、地图方向、包含地理位置的推特、店铺位置以及航空公司路线。地理空间数据在业务分析、报告和预测中起着重要的作用。

地理空间标识符 (如经度和纬度) 允许您将任何邮寄地址转换为一组地理坐标。

## 什么是地理空间查询？
<a name="geospatial-query-what-is"></a>

地理空间查询是在 Athena 中支持的专门类型 SQL 查询。它们在以下方面与非空间 SQL 查询不同：
+ 使用以下专门 geometry 数据类型：`point`、`line`、`multiline`、`polygon` 和 `multipolygon`。
+ 表示 geometry 数据类型之间的关系，例如 `distance`、`equals`、`crosses`、`touches`、`overlaps`、`disjoint` 等。

通过在 Athena 中使用地理空间查询，您可以运行这些操作和其他类似操作：
+ 找出两点之间的距离。
+ 检查一个区域 (多边形) 是否包含另一个区域。
+ 检查一条线是否穿过或接触另一条线或多边形。

例如，要在 Athena 中从雷尼尔山地理坐标的类型 `double` 的值获得 `point` 几何数据类型，请使用 `ST_Point (longitude, latitude)` 几何空间函数，如以下示例所示。

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

## 输入数据格式和 Geometry 数据类型
<a name="geospatial-input-data-formats-supported-geometry-types"></a>

要在 Athena 中使用地理空间函数，请以 WKT 格式输入数据，或使用 Hive JSON SerDe。您还可以使用在 Athena 中受支持的几何数据类型。

### 输入数据格式
<a name="input-data-formats"></a>

为处理地理空间查询，Athena 支持以下数据格式的输入数据：
+  **WKT (已知文本)**。在 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)。

### Geometry 数据类型
<a name="geometry-data-types"></a>

为处理地理空间查询，Athena 支持以下专用几何数据类型：
+  `point` 
+  `line` 
+  `polygon` 
+  `multiline` 
+  `multipolygon` 

## 支持的地理空间函数
<a name="geospatial-functions-list"></a>

有关 Athena 引擎版本 3 中地理空间函数的信息，请参阅 Trino 文档中的 [地理空间函数](https://trino.io/docs/current/functions/geospatial.html)。