

 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/)을 참조하세요.

# Amazon Redshift에서 공간 데이터 쿼리
<a name="geospatial-overview"></a>

*공간 데이터*는 정의된 공간(공간 참조 시스템)에서 지오메트리의 위치와 모양을 설명합니다. Amazon Redshift는 공간 데이터와 선택적으로 데이터의 공간 참조 시스템 식별자(SRID)를 포함하는 `GEOMETRY` 및 `GEOGRAPHY` 데이터 유형의 공간 데이터를 지원합니다.

공간 데이터에는 지리학적 특성을 나타내는 데 사용할 수 있는 기하학적 데이터가 포함됩니다. 이러한 형식의 데이터의 예로는 일기 예보, 지도 안내, 지리적 위치, 매장 위치 및 항공사 노선이 있는 트윗 등이 있습니다. 공간 데이터는 비즈니스 분석, 보고 및 예측에 중요한 역할을 합니다.

Amazon Redshift SQL 함수를 사용하여 공간 데이터를 쿼리할 수 있습니다. 공간 데이터에는 객체의 기하학적 값이 포함됩니다.

`GEOMETRY` 데이터 유형 작업은 데카르트 평면에서 작동합니다. 공간 참조 시스템 식별자(SRID)는 객체 내부에 저장되지만, 이 SRID는 단지 좌표계의 식별자일 뿐 `GEOMETRY` 객체를 처리하는 알고리즘에서는 아무런 역할을 하지 않는다. 반대로 `GEOGRAPHY` 데이터 유형에 대한 작업은 객체 내부의 좌표를 회전 타원체의 구형 좌표로 취급합니다. 이 회전 타원체는 지리 공간 참조 시스템을 참조하는 SRID에 의해 정의됩니다. 기본적으로 `GEOGRAPHY` 데이터 유형은 WGS(World Geodetic System) 84를 참조하는 공간 참조(SRID) 4326으로 생성됩니다. SRID에 대한 자세한 내용은 Wikipedia의 [공간 참조 시스템](https://en.wikipedia.org/wiki/Spatial_reference_system)을 참조하세요.

ST\_Transform 함수를 사용하여 다양한 공간 참조 시스템의 좌표를 변환할 수 있습니다. 좌표 변환이 완료된 후 입력 `GEOMETRY`가 지리적 SRID로 인코딩되는 한 둘 사이에 간단한 캐스트를 사용할 수도 있습니다. 이 캐스트는 추가 변환 없이 좌표를 복사합니다. 예:

```
SELECT ST_AsEWKT(ST_GeomFromEWKT('SRID=4326;POINT(10 20)')::geography);
```

```
st_asewkt
------------------------
 SRID=4326;POINT(10 20)
```

`GEOMETRY` 및 `GEOGRAPHY` 데이터 유형의 차이점을 더 잘 이해하려면 WGS(World Geodetic System) 84를 사용하여 베를린 공항(BER)과 샌프란시스코 공항(SFO) 간의 거리를 계산하는 것이 좋습니다. `GEOGRAPHY` 데이터 유형을 사용하는 경우 결과는 미터 단위입니다. SRID 4326과 함께 `GEOMETRY` 데이터 유형을 사용하는 경우 결과는 도 단위이며 1도의 거리는 지구 지오메트리의 위치에 따라 다르기 때문에 미터로 변환할 수 없습니다.

`GEOGRAPHY` 데이터 유형에 대한 계산은 왜곡 없이 국가의 정확한 면적과 같은 현실적인 둥근 지구 계산에 주로 사용됩니다. 그러나 계산하는 데 훨씬 더 많은 비용이 듭니다. 따라서 ST\_Transform은 좌표를 적절한 로컬 투영 좌표계로 변환하고 `GEOMETRY` 데이터 유형에 대한 계산을 더 빠르게 수행할 수 있습니다.

공간 데이터를 사용하여 다음을 수행하기 위해 쿼리를 실행할 수 있습니다.
+ 두 지점 사이의 거리를 파악합니다.
+ 한 영역(폴리곤)에 다른 영역이 포함되는지 확인합니다.
+ 한 라인스트링이 다른 라인스트링 또는 다각형과 교차하는지 확인합니다.

`GEOMETRY` 데이터 형식을 사용하여 공간 데이터의 값을 보유할 수 있습니다. Amazon Redshift의 `GEOMETRY` 값은 2차원(2D), 3차원(3DZ), 측정값이 있는 2차원(3DM) 및 4차원(4D) 지오메트리 기본 데이터 형식을 정의할 수 있습니다.
+ 2차원(2D) 지오메트리는 평면에서 2개의 직교 좌표(x, y)로 지정됩니다.
+ 3차원(3DZ) 지오메트리는 공간에서 3개의 데카르트 좌표(x, y, z)로 지정됩니다.
+ 측정값이 있는 2차원(3DM) 지오메트리는 3개의 좌표(x, y, m)로 지정됩니다. 여기서 처음 2개는 평면의 데카르트 좌표이고 3번째는 측정값입니다.
+ 4차원(4D) 지오메트리는 4개의 좌표(x, y, z, m)로 지정되며, 처음 3개는 공간의 데카르트 좌표이고 4번째는 측정값입니다.

지오메트리 기본 데이터 형식에 대한 자세한 내용은 Wikipedia의 [Well-known text representation of geometry](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry)를 참조하세요.

`GEOGRAPHY` 데이터 형식을 사용하여 공간 데이터의 값을 보유할 수 있습니다. Amazon Redshift의 `GEOGRAPHY` 값은 2차원(2D), 3차원(3DZ), 측정값이 있는 2차원(3DM) 및 4차원(4D) 지오메트리 기본 데이터 형식을 정의할 수 있습니다.
+ 2차원(2D) 지오메트리는 회전 타원체의 경도 및 위도 좌표로 지정됩니다.
+ 3차원(3DZ) 지오메트리는 회전 타원체의 경도, 위도 및 고도 좌표로 지정됩니다.
+ 측정값이 있는 2차원(3DM) 지오메트리는 3개의 좌표(경도, 위도, 측정값)로 지정됩니다. 여기서 처음 2개는 구의 각 좌표이고 세 번째 좌표는 측정값입니다.
+ 4차원(4D) 지오메트리는 4개의 좌표(경도, 위도, 고도, 측정값)로 지정됩니다. 여기서 처음 3개는 경도, 위도 및 고도이고 4번째 좌표는 측정값입니다.

지리 좌표계에 대한 자세한 내용은 Wikipedia의 [지리 좌표계](https://en.wikipedia.org/wiki/Geographic_coordinate_system)와 [구면 좌표계](https://en.wikipedia.org/wiki/Spherical_coordinate_system)를 참조하세요.

`GEOMETRY` 및 `GEOGRAPHY` 데이터 유형의 하위 유형은 다음과 같습니다.
+ `POINT`
+ `LINESTRING`
+ `POLYGON`
+ `MULTIPOINT`
+ `MULTILINESTRING`
+ `MULTIPOLYGON`
+ `GEOMETRYCOLLECTION`

다음과 같은 기하학적 데이터 표현을 지원하는 Amazon Redshift SQL 함수가 있습니다.
+ GeoJSON
+ WKT(Well-known Text) 
+ EWKT(Extended Well-Known Text)
+ WKB(Well-Known Binary) 표현 
+ EWKB(Extended Well-Known Binary)

`GEOMETRY` 및 `GEOGRAPHY` 데이터 유형 간에 캐스팅할 수 있습니다.

다음 SQL은 라인스트링을 `GEOMETRY`에서 `GEOGRAPHY`로 캐스팅합니다.

```
SELECT ST_AsEWKT(ST_GeomFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geography);
```

```
 st_asewkt
----------------------------------------------
 SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)
```

다음 SQL은 라인스트링을 `GEOGRAPHY`에서 `GEOMETRY`로 캐스팅합니다.

```
SELECT ST_AsEWKT(ST_GeogFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geometry);
```

```
 st_asewkt
----------------------------------------------
 SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)
```

Amazon Redshift는 공간 데이터 쿼리를 위해 많은 SQL 함수를 제공합니다. `ST_IsValid` 함수를 제외하고 `GEOMETRY` 객체를 인수로 수락하는 공간 함수는 이 `GEOMETRY` 객체가 유효한 지오메트리일 것으로 예상합니다. `GEOMETRY` 또는 `GEOGRAPHY` 객체가 유효하지 않으면 공간 함수의 동작이 정의되지 않습니다. 유효성에 대한 자세한 내용은 [기하학적 유효성](spatial-terminology.md#spatial-terminology-validity) 섹션을 참조하세요.

공간 데이터를 쿼리하는 SQL 함수에 대한 자세한 내용은 [공간 함수](geospatial-functions.md) 섹션을 참조하세요.

공간 데이터 로드에 대한 자세한 내용은 [GEOMETRY 또는 GEOGRAPHY 데이터 유형의 열 로드](copy-usage_notes-spatial-data.md) 섹션을 참조하세요.

**Topics**
+ [튜토리얼: Amazon Redshift에서 공간 SQL 함수 사용](spatial-tutorial.md)
+ [Amazon Redshift에 shapefile 로드](spatial-copy-shapefile.md)
+ [Amazon Redshift 공간 데이터 용어](spatial-terminology.md)
+ [Amazon Redshift에서 공간 데이터를 사용할 때의 고려 사항](spatial-limitations.md)