- カテゴリ:
ST_COLLECT¶
ST_COLLECT には次の2種類があります。
スカラー: この関数は、2つの GEOGRAPHY オブジェクトを1つに結合します。
集計: この関数は、列内のすべての GEOGRAPHY オブジェクトを1つの 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が両方ともポイントオブジェクトの場合、結果は2つのポイントを含む MultiPoint オブジェクトになります。同様に、g1とg2がどちらも LineStringオブジェクトの場合、結果は MultiLineString オブジェクトになります。その他。
g1とg2が異なるタイプの地理空間オブジェクトである場合、または入力 GEOGRAPHY オブジェクトの少なくとも1つがコレクション(例: 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)' );これは、同じ行の両方のポイントを含む MultiPoint 値を作成するスカラー関数として ST_COLLECT を呼び出します。
-- 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" | | } | +------------------------+これは、同じ列のすべてのポイントを含む MultiPoint 値を作成する集計関数として ST_COLLECT を呼び出します。
-- 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 値を作成し、次にこれら2つの 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" | | } | +--------------------------------------------+