Définition
La fonction ST_Centroid prend une entité surfacique, multisurfacique ou multichaîne de lignes et renvoie le point se trouvant au centre de l'enveloppe de la géométrie. Cela signifie que le centroïde se trouve à mi-chemin entre les étendues x et y minimales et maximales de la géométrie.
Syntaxe
Oracle et PostgreSQL
sde.st_centroid (polygon sde.st_geometry) sde.st_centroid (multipolygon sde.st_geometry) sde.st_centroid (multilinestring sde.st_geometry)
SQLite
st_centroid (polygon geometryblob) st_centroid (multipolygon geometryblob) st_centroid (multilinestring geometryblob)
Type de retour
ST_Point
Exemple
Le technicien SIG municipal souhaite afficher les entités multisurfaciques des emprises de bâtiments en tant que points isolés dans une illustration de la densité de construction. Les emprises de bâtiments sont stockées dans la table bfp qui a été créée et renseignée à l'aide des instructions affichées pour chaque base de données :
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)