wiki:UsersWikiComputeMultiCentroid

Compute Multi Centroid

 -- Function: ST_MultiCentroid(geometry)
 -- Returns a MULTIPOINT obtained from collecting all
 -- centroids in the supplied MULTI* geometry.
 --   by: Mike Toews
 --
 -- Usage:
 -- postgis=# select ST_AsText(ST_MultiCentroid(
 -- postgis(#       'MULTIPOLYGON (
 -- postgis'#         (( 0 0, 0 1, 1 1, 1 0, 0 0 )),
 -- postgis'#         (( 2 2, 2 3, 3 3, 3 2, 2 2 ))
 -- postgis'#        )'::geometry));
 --           st_astext
 -- -----------------------------
 --  MULTIPOINT(0.5 0.5,2.5 2.5)
 --( 1 row)
 --
 -- DROP FUNCTION ST_MultiCentroid(geometry);

 CREATE OR REPLACE FUNCTION ST_MultiCentroid(geometry)
   RETURNS geometry AS
 $BODY$SELECT ST_Collect(the_geom)
 FROM (
  SELECT ST_Centroid((ST_Dump(ST_Multi($1))).geom) AS the_geom
 ) AS foo;$BODY$
   LANGUAGE 'sql' IMMUTABLE
   COST 100;
Last modified 5 years ago Last modified on Oct 26, 2011 7:04:56 PM