ST_Aggr_ConvexHull
![Hinweis Hinweis](rsrc/note.png)
Nur Oracle und SQLite
Definition
Die Funktion ST_Aggr_ConvexHull gibt eine Geometrie zurück, die eine konvexe Hülle einer Geometrie ist, die das Ergebnis der Vereinigung aller Eingabegeometrien ist. ST_Aggr_ConvexHull entspricht praktisch ST_ConvexHull(ST_Aggr_Union(geometries)).
Syntax
Oracle
sde.st_aggr_convexhull (geometry sde.st_geometry)
SQLite
st_aggr_convexhull (geometry st_geometry)
Rückgabetyp
Oracle
ST_Geometry
SQLite
Geometryblob
Beispiel
In diesem Beispiel wird die Tabelle "service_territories" erstellt und eine SELECT-Anweisung ausgeführt, die alle Geometrien aggregiert. Dadurch wird eine einzelne Geometrie generiert, die die konvexe Hülle der Vereinigung aller Shapes darstellt.
Oracle
CREATE TABLE service_territories
(ID integer not null, UNITS number, SHAPE sde.st_geometry);
INSERT INTO service_territories (id, units, shape) VALUES (
1,
1250,
sde.st_polygon ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 4326)
);
INSERT INTO service_territories (id, units, shape) VALUES (
2,
875,
sde.st_polygon ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 4326)
);
INSERT INTO service_territories (id, units, shape) VALUES (
3,
1700,
sde.st_polygon ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 4326)
);
SELECT sde.st_astext(sde.st_aggr_convexhull(shape)) CONVEX_HULL
FROM service_territories
WHERE units >= 1000;
CONVEX_HULL
POLYGON (( 20.00000000 40.00000000, 20.00000000 30.00000000, 30.00000000 30.00000000,
60.00000000 40.00000000, 60.00000000 60.00000000, 40.00000000 60.00000000, 20.00000000 40.00000000))
SQLite
CREATE TABLE service_territories (
ID integer primary key autoincrement not null,
UNITS numeric
);
SELECT AddGeometryColumn(
NULL,
'service_territories',
'shape',
4326,
'polygon',
'xy',
'null'
);
INSERT INTO service_territories (units, shape) VALUES (
1250,
st_polygon ('polygon ((20 30, 30 30, 30 40, 20 40, 20 30))', 4326)
);
INSERT INTO service_territories (units, shape) VALUES (
875,
st_polygon ('polygon ((30 30, 30 50, 50 50, 50 30, 30 30))', 4326)
);
INSERT INTO service_territories (units, shape) VALUES (
1700,
st_polygon ('polygon ((40 40, 40 60, 60 60, 60 40, 40 40))', 4326)
);
SELECT st_astext(st_aggr_convexhull(shape)) AS "CONVEX HULL"
FROM service_territories
WHERE units >= 1000;
CONVEX HULL
POLYGON (( 20.00000000 40.00000000, 20.00000000 30.00000000, 30.00000000 30.00000000,
60.00000000 40.00000000, 60.00000000 60.00000000, 40.00000000 60.00000000, 20.00000000 40.00000000))
Verwandte Themen
5/10/2014