Definición
ST_Aggr_Union devuelve una sola geometría que es la combinación de todas las geometrías de entrada.
La compatibilidad con ST_Aggr_Union con ST_Geometry en PostgreSQL comienza con la versión 10.5.1.
Sintaxis
Oracle y PostgreSQL
sde.st_aggr_union(geometry sde.st_geometry)
SQLite
st_aggr_union(geometry geometryblob)
Tipo de devolución
Oracle y PostgreSQL
ST_Geometry
SQLite
Geometryblob
Ejemplo
Un analista de comercialización necesita crear una geometría única de todas las áreas de servicio para el que las ventas excedieron 1,000 unidades. En este ejemplo creará una tabla service_territories1 y la rellenará con números de valores de venta. A continuación usará st_aggr_union en una declaración SELECT para devolver el multipolígono que es la combinación de todas las geometrías para las cuales los números de ventas son iguales o superiores a 1000 unidades.
Oracle y PostgreSQL
--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)))