[postgis-users] Center of Points Collection
Kevin Neufeld
kneufeld at refractions.net
Mon Sep 14 13:51:11 PDT 2009
Paul Ramsey wrote:
> Faster than creating a multipoint is to recognize that ST_Centroid()
> is just going to return the center of the bbox of the collection
> anyways...
Unfortunately, Paul, ST_Centroid returns the center of mass, not the center of the bbox.
SELECT astext(st_centroid(st_collect(column1))),
FROM (values ('POINT(0 0)'),
('POINT(0 1)'),
('POINT(0 2)'),
('POINT(1 0)')) as foo;
astext
------------------
POINT(0.25 0.75)
(1 row)
Your second post, taking the avg of the x,y does seem to be the nice approach, and produces the same results as
ST_Centroid - the center of mass.
SELECT astext(st_makepoint(avg(st_x(column1)), avg(st_y(column1))))
FROM (values ('POINT(0 0)'),
('POINT(0 1)'),
('POINT(0 2)'),
('POINT(1 0)')) as foo;
astext
------------------
POINT(0.25 0.75)
(1 row)
If Dustin is after the center of the collection, then something along your first suggestion might be more appropriate.
(taking the center of the extents)
Cheers,
Kevin