定義
ST_Aggr_Union は、すべての入力ジオメトリがユニオン (結合) された単一のジオメトリを返します。
PostgreSQL では ST_Geometry の ST_Aggr_Union は、10.5.1 以降からサポートされているので注意してください。
構文
Oracle および PostgreSQL
sde.st_aggr_union(geometry sde.st_geometry)
SQLite
st_aggr_union(geometry geometryblob)
戻り値のタイプ
Oracle および PostgreSQL
ST_Geometry
SQLite
Geometryblob
例
マーケティング アナリストは、売り上げが 1,000 ユニットを超えるすべての到達圏からなるジオメトリを 1 つ作成する必要があります。この例では、service_territories1 テーブルを作成し、売り上げ数の値を入力しています。SELECT ステートメントで st_aggr_union を使用して、売り上げ数が 1,000 ユニット以上であるすべてのジオメトリがユニオン (結合) されたマルチポリゴンを返します。
Oracle および PosgreSQL
--Create and populate tables.
CREATE TABLE service_territories1 (
ID integer not null,
UNITS number,
SHAPE sde.st_geometry);
INSERT INTO service_territories1 (id, units, shape) VALUES (
1,
1250,
sde.st_polygon ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 4326)
);
INSERT INTO service_territories1 (id, units, shape) VALUES (
2,
875,
sde.st_polygon ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 4326)
);
INSERT INTO service_territories1 (id, units, shape) VALUES (
3,
1700,
sde.st_polygon ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 4326)
);
--Union of all geometries for which sales numbers are >= 1,000 units.
SELECT sde.st_astext(sde.st_aggr_union(shape)) UNION_SHAPE
FROM service_territories1
WHERE units >= 1000;
UNION_SHAPE
MULTIPOLYGON ((( 20.00000000 30.00000000, 30.00000000 30.00000000, 30.00000000
40.00000000, 20.00000000 40.00000000, 20.00000000 30.00000000)),(( 40.00000000 40.00000000,
60.00000000 40.00000000, 60.00000000 60.00000000, 40.00000000 60.00000000,
40.00000000 40.00000000)))
SQLite
--Create table, add geometry column to it, and populate table.
CREATE TABLE service_territories1 (
id integer primary key autoincrement not null,
units number
);
SELECT AddGeometryColumn(
NULL,
'service_territories1',
'shape',
4326,
'polygon',
'xy',
'null'
);
INSERT INTO service_territories1 (units, shape) VALUES (
1250,
st_polygon ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 4326)
);
INSERT INTO service_territories1 (units, shape) VALUES (
875,
st_polygon ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 4326)
);
INSERT INTO service_territories1 (units, shape) VALUES (
1700,
st_polygon ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 4326)
);
--Union of all geometries for which sales numbers are >= 1,000 units.
SELECT st_astext(st_aggr_union(shape))
AS "UNION_SHAPE"
FROM service_territories1
WHERE units >= 1000;
UNION_SHAPE
MULTIPOLYGON ((( 40.00000000 40.00000000, 60.00000000 40.00000000, 60.00000000 6
0.00000000, 40.00000000 60.00000000, 40.00000000 40.00000000)),(( 20.00000000 30
.00000000, 30.00000000 30.00000000, 30.00000000 40.00000000, 20.00000000 40.0000
0000, 20.00000000 30.00000000)))