- 카테고리:
ST_COLLECT¶
ST_COLLECT에는 다음 두 가지 형식이 있습니다.
스칼라: 이 함수는 두 개의 GEOGRAPHY 오브젝트를 하나로 결합합니다.
집계: 이 함수는 열에 있는 모든 GEOGRAPHY 오브젝트를 하나의 GEOGRAPHY 오브젝트로 결합합니다.
구문¶
Scalar:
ST_COLLECT( <geography_expression_1> , <geography_expression_2> )
Aggregate:
ST_COLLECT( <geography_expression_1> )
인자¶
geography_expression_1
GEOGRAPHY 오브젝트입니다.
geography_expression_2
GEOGRAPHY 오브젝트입니다.
반환¶
함수는 GEOGRAPHY 형식의 값을 반환합니다.
사용법 노트¶
g1과 g2가 모두 Point 오브젝트인 경우, 결과는 두 개의 Point를 포함하는 MultiPoint 오브젝트입니다. 마찬가지로, g1과 g2가 모두 LineString 오브젝트인 경우, 결과는 MultiLineString 오브젝트입니다. 등.
g1과 g2가 서로 다른 유형의 지리 공간 오브젝트이거나 입력 GEOGRAPHY 오브젝트 중 하나 이상이 컬렉션(예: MultiLineString, GeometryCollection 또는 FeatureCollection)인 경우, 결과는 두 입력 오브젝트를 모두 포함하는 GeometryCollection입니다.
예¶
아래 쿼리는 ST_COLLECT 함수의 스칼라 및 집계 사용법을 둘 다 보여줍니다.
테이블을 만들고 로딩합니다.
CREATE TABLE geo3 (g1 GEOGRAPHY, g2 GEOGRAPHY); INSERT INTO geo3 (g1, g2) VALUES ( 'POINT(-180 -90)', 'POINT(-45 -45)' ), ( 'POINT( 0 0)', 'POINT(-60 -60)' ), ( 'POINT(+180 +90)', 'POINT(+45 +45)' );이는 ST_COLLECT를 스칼라 함수로 호출하여 동일 행에 두 점을 모두 포함하는 MultiPoint 값을 만듭니다.
-- Scalar function: SELECT ST_COLLECT(g1, g2) FROM geo3; +------------------------+ | ST_COLLECT(G1, G2) | |------------------------| | { | | "coordinates": [ | | [ | | -180, | | -90 | | ], | | [ | | -45, | | -45 | | ] | | ], | | "type": "MultiPoint" | | } | | { | | "coordinates": [ | | [ | | 0, | | 0 | | ], | | [ | | -60, | | -60 | | ] | | ], | | "type": "MultiPoint" | | } | | { | | "coordinates": [ | | [ | | 180, | | 90 | | ], | | [ | | 45, | | 45 | | ] | | ], | | "type": "MultiPoint" | | } | +------------------------+이는 ST_COLLECT를 집계 함수로 호출하여 동일 열의 모든 점을 포함하는 MultiPoint 값을 만듭니다.
-- Aggregate function: SELECT ST_COLLECT(g1), ST_COLLECT(g2) FROM geo3; +------------------------+------------------------+ | ST_COLLECT(G1) | ST_COLLECT(G2) | |------------------------+------------------------| | { | { | | "coordinates": [ | "coordinates": [ | | [ | [ | | -180, | -45, | | -90 | -45 | | ], | ], | | [ | [ | | 0, | -60, | | 0 | -60 | | ], | ], | | [ | [ | | 180, | 45, | | 90 | 45 | | ] | ] | | ], | ], | | "type": "MultiPoint" | "type": "MultiPoint" | | } | } | +------------------------+------------------------+이는 먼저 각 열의 집계 함수로 ST_COLLECT를 호출하여 각 열의 모든 점을 포함하는 MultiPoint 값을 만든 다음, 두 MultiPoint 값에 대해 ST_COLLECT를 호출하여 두 열의 모든 점을 포함하는 GeometryCollection을 만듭니다. 결과 GeometryCollection은 계층적입니다.
-- Aggregate and then Collect: SELECT ST_COLLECT(ST_COLLECT(g1), ST_COLLECT(g2)) FROM geo3; +--------------------------------------------+ | ST_COLLECT(ST_COLLECT(G1), ST_COLLECT(G2)) | |--------------------------------------------| | { | | "geometries": [ | | { | | "coordinates": [ | | [ | | -180, | | -90 | | ], | | [ | | 0, | | 0 | | ], | | [ | | 180, | | 90 | | ] | | ], | | "type": "MultiPoint" | | }, | | { | | "coordinates": [ | | [ | | -45, | | -45 | | ], | | [ | | -60, | | -60 | | ], | | [ | | 45, | | 45 | | ] | | ], | | "type": "MultiPoint" | | } | | ], | | "type": "GeometryCollection" | | } | +--------------------------------------------+