入力ジオメトリオブジェクトの共通部分を、ジオメトリオブジェクトとして返します。
構文
geometry ST_Intersection(geometry geomA , geometry geomB);
geography ST_Intersection(geography geogA , geography geogB);
geometry ST_Intersection(geometry set gField);パラメーター
パラメーター名 | 説明 |
geomA/geomB | 対象となる2つのジオメトリオブジェクト。 |
geogA/geogB | 対象となる2つのジオグラフィオブジェクト。 |
gField | ジオメトリフィールド。 |
説明
2つの入力オブジェクトが交差しない場合、この関数は null オブジェクトを返します。
ジオグラフィオブジェクトの場合、この関数はジオメトリ関数をラップします。まず、ジオグラフィオブジェクトをジオメトリオブジェクトに変換し、平面座標系で共通部分を求め、その結果を WGS84 座標系のジオグラフィオブジェクトに再度変換します。
この関数は、入力パラメーターとしてジオメトリコレクションオブジェクトをサポートしていません。
この関数は、オブジェクトの M 座標値を破棄します。
集約関数は、すべてのジオメトリオブジェクトを順次交差させ、結果の共通部分を返します。
例
デフォルトの呼び出し:
SELECT ST_AsText(ST_Intersection('POLYGON((0 0,0 2,2 2,2 0,0 0))'::geometry,'POLYGON((0 0,3 0,3 1,0 1,0 0))'::geometry)); st_astext -------------------------------- POLYGON((0 1,2 1,2 0,0 0,0 1)) (1 行)集約クリッピング
create table agg_result(id integer, geom geometry); insert into agg_result values(0, ST_GeomFromText('POLYGON((0 0, 0 0.5, 0.5 0.5, 0.5 0, 0 0))')); insert into agg_result select i, st_buffer('POINT(0 0)', 0.8 + random()*0.1) from generate_series(1,100) as i; select st_astext(st_intersection(geom)) from agg_result; st_astext ---------------------------------------- POLYGON((0 0,0 0.5,0.5 0.5,0.5 0,0 0)) (1 行)