[postgis-users] Center of Points Collection
Chris Hermansen
chris.hermansen at timberline.ca
Tue Sep 15 12:15:22 PDT 2009
Cool, a PL/R user!
Brent, I'm curious about why you make a distinction between the centroid
and the average, because as far as I can tell they are the same thing.
pcreso at pcreso.com wrote:
> Hi guys,
>
> A bit more difficult, & way out in left field, but if you use PL/R to create a median function for Postgres, you could build your point from the median(X) & (Y) values instead of the average.
>
> Where this would actually lie obviously depends on the distribution of the points. The centroid is most affected by (actually defined by) outlying points, the avg somewhat less & the median less still.
>
> Of course once you have PL/R to play with, you have much more flexibility to look at returning statistics from datasets than just the median.
>
> Cheers,
>
> Brent Wood
>
>
>
>
> --- On Tue, 9/15/09, Kevin Neufeld <kneufeld at refractions.net> wrote:
>
>
>> From: Kevin Neufeld <kneufeld at refractions.net>
>> Subject: Re: [postgis-users] Center of Points Collection
>> To: "PostGIS Users Discussion" <postgis-users at postgis.refractions.net>
>> Date: Tuesday, September 15, 2009, 8:51 AM
>> 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
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-users
>>
>>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
--
Regards, (please note new mobile number below)
Chris Hermansen mailto:chris.hermansen at timberline.ca
tel+1.604.714.2878 · fax+1.604.733.0631 · mob+1.778.840.4625
Timberline Natural Resource Group · http://www.timberline.ca
401 · 958 West 8th Avenue · Vancouver BC · Canada · V5Z 1E5
More information about the postgis-users
mailing list