Very nice Mike. I added your function to the wiki here:
http://postgis.refractions.net/support/wiki/index.php?ComputeMultiCentroid
I don't see why it won't make it into PostGIS some time ... seems like
something useful.
Cheers,
Kevin
Mike Toews wrote:
Hi Kevin,
That was exactly what I was after, thanks! Here is my modified function
which I've tested to some degree with MULTIPOLYGONs only:
CREATE OR REPLACE FUNCTION ST_MultiCentroid(geometry)
RETURNS geometry AS
$BODY$SELECT ST_Collect(the_geom)
FROM (
SELECT ST_Centroid((ST_Dump($1)).geom) AS the_geom
) AS foo;$BODY$
LANGUAGE 'sql' IMMUTABLE
COST 100;
-Mike
Kevin Neufeld wrote:
Yes. Use ST_Dump to explode your MULTI* object, take the ST_Centroid
of each, and ST_Collect them together again.
SELECT ST_AsText(ST_Collect(the_geom))
FROM (
SELECT ST_Centroid((ST_Dump(the_geom)).geom) AS the_geom
FROM (
SELECT
'MULTIPOLYGON (
(( 0 0, 0 1, 1 1, 1 0, 0 0 )),
(( 2 2, 2 3, 3 3, 3 2, 2 2 ))
)'::geometry AS the_geom
) AS foo
) AS foo2;
st_astext
-----------------------------
MULTIPOINT(0.5 0.5,2.5 2.5)
(1 row)
Cheers,
Kevin
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users