ST_Centroid

Definition

ST_Centroid wählt ein Polygon oder Multipolygon aus und gibt den Punkt in der Mitte des Envelope der Geometrie zurück. Dies bedeutet, dass sich der Schwerpunkt auf halber Strecke zwischen der minimalen und maximalen X- und Y-Ausdehnung der Geometrie befindet.

Syntax

Oracle und PostgreSQL

sde.st_centroid (polygon sde.st_geometry)
sde.st_centroid (multipolygon sde.st_geometry)

SQLite

st_centroid (polygon geometryblob)
st_centroid (multipolygon geometryblob)

Rückgabetyp

ST_Point

Beispiel

Der städtische GIS-Fachmann möchte die Multipolygone von Gebäudegrundrissen in einer Bebauungsgrafik als einzelne Punkte anzeigen. Die Gebäudegrundrisse sind in der Tabelle "bfp" gespeichert, die mit den für jede Datenbank angezeigten Anweisungen erstellt und aufgefüllt wurde.

Oracle

--Create and populate table
CREATE TABLE bfp (
 building_id integer,
 footprint sde.st_geometry);

INSERT INTO bfp VALUES (
 1,
 sde.st_polygon ('polygon ((0 0, 0 10, 10 10, 10 0, 0 0))', 4326)
);

INSERT INTO bfp VALUES (
 2,
 sde.st_polygon ('polygon ((20 0, 30 20, 40 0, 20 0))', 4326)
);

INSERT INTO bfp VALUES (
 3,
 sde.st_polygon ('polygon ((20 30, 25 35, 30 30, 20 30))', 4326)
);
--The ST_Centroid function returns the centroid of each building footprint multipolygon. 
--The ST_AsText function converts each centroid point into a text representation recognized by the application.
SELECT building_id,
 sde.st_astext (sde.st_centroid (footprint)) Centroid
 FROM bfp;

BUILDING_ID                   Centroid

   1                     POINT  (5.00000000 5.00000000)
   2                     POINT  (30.00000000 10.00000000)
   3                     POINT  (25.00000000 32.50000000)

PostgreSQL

--Create and populate table
CREATE TABLE bfp (
 building_id serial,
 footprint sde.st_geometry);

INSERT INTO bfp (footprint) VALUES (
 sde.st_polygon ('polygon ((0 0, 0 10, 10 10, 10 0, 0 0))', 4326)
);

INSERT INTO bfp (footprint) VALUES (
 sde.st_polygon ('polygon ((20 0, 30 20, 40 0, 20 0))', 4326)
);

INSERT INTO bfp (footprint) VALUES (
 sde.st_polygon ('polygon ((20 30, 25 35, 30 30, 20 30))', 4326)
);
--The ST_Centroid function returns the centroid of each building footprint multipolygon. 
--The ST_AsText function converts each centroid point into a text representation recognized by the application.
SELECT building_id, sde.st_astext (sde.st_centroid (footprint)) 
 AS centroid
 FROM bfp;

building_id                  centroid

   1                     POINT  (5 5)
   2                     POINT  (30 10)
   3                     POINT  (25 33)

SQLite

--Create table, add geometry column, and populate table
CREATE TABLE bfp (
 building_id integer primary key autoincrement not null
);

SELECT AddGeometryColumn (
 NULL,
 'bfp',
 'footprint',
 4326,
 'polygon',
 'xy',
 'null'
);

INSERT INTO bfp (footprint) VALUES (
 st_polygon ('polygon ((0 0, 0 10, 10 10, 10 0, 0 0))', 4326)
);

INSERT INTO bfp (footprint) VALUES (
 st_polygon ('polygon ((20 0, 30 20, 40 0, 20 0))', 4326)
);

INSERT INTO bfp (footprint) VALUES (
 st_polygon ('polygon ((20 30, 25 35, 30 30, 20 30))', 4326)
);
--The ST_Centroid function returns the centroid of each building footprint multipolygon. 
--The ST_AsText function converts each centroid point into a text representation recognized by the application.
SELECT building_id, st_astext (st_centroid (footprint)) 
 AS "centroid"
 FROM bfp;

building_id              centroid

   1                     POINT  (5.00000000 5.00000000)
   2                     POINT  (30.00000000 10.0000000)
   3                     POINT  (25.00000000 32.5000000)

Verwandte Themen

5/10/2014