ST_Aggr_Union

注意注意:

Oracle および SQLite のみ

定義

ST_Aggr_Union は、すべての入力ジオメトリがユニオン(結合)された単一のジオメトリを返します。

構文

Oracle

sde.st_aggr_union(geometry sde.st_geometry)

SQLite

st_aggr_union(geometry geometryblob)

戻り値のタイプ

Oracle

ST_Geometry

SQLite

Geometryblob

マーケティング アナリストは、売り上げが 1,000 ユニットを超えるすべての到達圏からなるジオメトリを 1 つ作成する必要があります。この例では、service_territories1 テーブルを作成し、売り上げ数の値を入力しています。SELECT ステートメントで st_aggr_union を使用して、売り上げ数が 1,000 ユニット以上であるすべてのジオメトリがユニオン(結合)されたマルチポリゴンを返します。

Oracle

--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)))

関連トピック

5/25/2014