

# 공간 데이터 쿼리
<a name="querying-geospatial-data"></a>

지리 공간 데이터에는 객체의 지리적 위치를 지정하는 식별자가 포함되어 있습니다. 이러한 형식의 데이터의 예로는 일기 예보, 지도 안내, 지리적 위치, 매장 위치 및 항공사 노선이 있는 트윗 등이 있습니다. 지리 공간 데이터는 비즈니스 분석, 보고 및 예측에 중요한 역할을 합니다.

위도, 경도와 같은 지리 공간 식별자를 사용하면 모든 우편 주소를 지리적 좌표 집합으로 변환할 수 있습니다.

## 지리 공간 쿼리란 무엇인가요?
<a name="geospatial-query-what-is"></a>

지리 공간 쿼리는 Athena에 지원되는 특수한 SQL 쿼리 형식입니다. 다음과 같은 점에서 비 공간 SQL 쿼리와 다릅니다.
+ `point`, `line`, `multiline`, `polygon`, `multipolygon` 등 특수한 geometry 데이터 형식을 사용합니다.
+ `distance`, `equals`, `crosses`, `touches`, `overlaps`, `disjoint` 등 geometry 데이터 형식 사이의 관계를 표현합니다.

Athena에서 지리 공간 쿼리를 사용하여 다음과 같은 작업을 실행할 수 있습니다.
+ 두 지점 사이의 거리를 파악합니다.
+ 한 영역(폴리곤)에 다른 영역이 포함되는지 확인합니다.
+ 한 줄이 다른 줄이나 폴리곤과 교차하거나 접촉하는지 확인합니다.

예를 들어 Athena에서 Mount Rainier의 지리적 좌표를 위해 `double` 형식의 값으로부터 `point` geometry 데이터 형식을 얻으려면 다음 예제처럼 `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에 지원되는 geometry 데이터 형식을 사용할 수도 있습니다.

### 입력 데이터 형식
<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) 단원을 참조하세요.

### Geometry 데이터 형식
<a name="geometry-data-types"></a>

지리 공간 쿼리를 처리하기 위해 Athena는 다음과 같은 특수한 geometry 데이터 형식을 지원합니다.
+  `point` 
+  `line` 
+  `polygon` 
+  `multiline` 
+  `multipolygon` 

## 지원되는 지리 공간 함수
<a name="geospatial-functions-list"></a>

Athena 엔진 버전 3의 지리 공간 함수에 대한 내용은 Trino 설명서의 [지리 공간 함수](https://trino.io/docs/current/functions/geospatial.html)를 참조하세요.