본문으로 건너뛰기
최종 수정: 에

ST_GEOMETRIES

설명​

지오메트리 객체를 하위 지오메트리의 배열로 분해합니다. 컬렉션 타입(MultiPolygon)의 경우 각 하위 폴리곤을 배열의 개별 요소로 반환합니다. 컬렉션이 아닌 타입(Point, LineString, Polygon, Circle)의 경우 지오메트리 자체를 포함하는 단일 요소 배열을 반환합니다.

구문​

ST_GEOMETRIES( <shape> )

매개변수​

매개변수설명
<shape>GEOMETRY 타입이거나 GEOMETRY로 변환할 수 있는 VARCHAR 타입(WKT 형식)의 입력 지오메트리입니다.

반환 값​

각 요소가 인코딩된 지오메트리 객체인 ARRAY<STRING>을 반환합니다. 각 객체는 ST_AsText 또는 ST_GeometryType과 같은 다른 공간 함수에서 사용할 수 있습니다.

ST_GEOMETRIES는 다음과 같은 특수한 경우를 처리합니다:

  • 입력 매개변수가 NULL이면 NULL을 반환합니다.
  • 입력 매개변수를 유효한 지오메트리 객체로 파싱할 수 없으면 NULL을 반환합니다.
  • 컬렉션이 아닌 타입(POINT, LINESTRING, POLYGON, CIRCLE)의 경우 입력 지오메트리를 포함하는 단일 요소 배열을 반환합니다.
  • MULTIPOLYGON의 경우 각 요소가 하위 폴리곤인 배열을 반환합니다.
  • 배열 요소를 다른 공간 함수에 전달하여 추가로 처리할 수 있습니다.

예제​

Point의 지오메트리(단일 요소 배열)

SELECT ST_AsText(ST_GEOMETRIES(ST_Point(1, 2))[1]);
+------------------------------------------------+
| ST_AsText(ST_GEOMETRIES(ST_Point(1, 2))[1]) |
+------------------------------------------------+
| POINT (1 2) |
+------------------------------------------------+

Polygon의 지오메트리(단일 요소 배열)

SELECT ST_GeometryType(ST_GEOMETRIES(ST_GeometryFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'))[1]);
+----------------------------------------------------------------------------------------------------+
| ST_GeometryType(ST_GEOMETRIES(ST_GeometryFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'))[1]) |
+----------------------------------------------------------------------------------------------------+
| ST_POLYGON |
+----------------------------------------------------------------------------------------------------+

MultiPolygon의 지오메트리(여러 요소)

SELECT SIZE(ST_GEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))')));
+----------------------------------------------------------------------------------------------------------------------+
| SIZE(ST_GEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))))') |
+----------------------------------------------------------------------------------------------------------------------+
| 2 |
+----------------------------------------------------------------------------------------------------------------------+

MultiPolygon의 개별 요소에 접근하기

SELECT ST_AsText(ST_GEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'))[1]);
+----------------------------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_GEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'))[1]) |
+----------------------------------------------------------------------------------------------------------------------------------+
| POLYGON ((1 0, 1 1, 0 1, 0 0, 1 0)) |
+----------------------------------------------------------------------------------------------------------------------------------+
SELECT ST_AsText(ST_GEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'))[2]);
+----------------------------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_GEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'))[2]) |
+----------------------------------------------------------------------------------------------------------------------------------+
| POLYGON ((3 2, 3 3, 2 3, 2 2, 3 2)) |
+----------------------------------------------------------------------------------------------------------------------------------+

범위를 벗어난 인덱스(NULL 반환)

SELECT ST_GEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'))[3];
+----------------------------------------------------------------------------------------------------------------------------+
| ST_GEOMETRIES(ST_GeometryFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))'))[3] |
+----------------------------------------------------------------------------------------------------------------------------+
| NULL |
+----------------------------------------------------------------------------------------------------------------------------+

NULL 매개변수

SELECT ST_GEOMETRIES(NULL);
+----------------------+
| ST_GEOMETRIES(NULL) |
+----------------------+
| NULL |
+----------------------+

잘못된 매개변수(NULL 반환)

SELECT ST_GEOMETRIES(ST_GeometryFromText('INVALID'));
+----------------------------------------------------+
| ST_GEOMETRIES(ST_GeometryFromText('INVALID')) |
+----------------------------------------------------+
| NULL |
+----------------------------------------------------+