Amazon Redshift에서 공간 데이터 쿼리 - Amazon Redshift

Amazon Redshift에서 공간 데이터 쿼리

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

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

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

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

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

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

GEOMETRYGEOGRAPHY 데이터 유형의 차이점을 더 잘 이해하려면 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를 참조하세요.

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의 지리 좌표계구면 좌표계를 참조하세요.

GEOMETRYGEOGRAPHY 데이터 유형의 하위 유형은 다음과 같습니다.

  • 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)

GEOMETRYGEOGRAPHY 데이터 유형 간에 캐스팅할 수 있습니다.

다음 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 객체가 유효하지 않으면 공간 함수의 동작이 정의되지 않습니다. 유효성에 대한 자세한 내용은 기하학적 유효성 섹션을 참조하세요.

공간 데이터를 쿼리하는 SQL 함수에 대한 자세한 내용은 공간 함수 섹션을 참조하세요.

공간 데이터 로드에 대한 자세한 내용은 GEOMETRY 또는 GEOGRAPHY 데이터 유형의 열 로드 섹션을 참조하세요.