[postgis-users] newbie questions
Stephen Woodbridge
woodbri at swoodbridge.com
Mon May 29 09:09:09 PDT 2006
Benedetto Porfidia wrote:
> Hi all,
> I have 300000 points table and I want to calculate for each point the
> average of a field of other points within 4 km radius.
> I tried:
> SELECT a.gid AS id, avg(b.anom267) AS avg, stddev(b.anom267) AS stddev
> FROM provino a, provino b
> WHERE distance(a.the_geom, b.the_geom) < 4000::double precision
> GROUP BY a.gid;
>
> First problem is about performance (it takes 15 hours) and the second is
> that it returns results only for points that have neighbours within the
> search radius. how can I tell postgis to put avg=anom267 and stddev = 0
> for all isolated points?
>
> which is the right sintax to perform the query on 3dboxes to speed up (I
> hope)?
>
> thanx in advance
>
> Benedetto
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
Benedetto,
Try this query
SELECT a.gid AS id, avg(b.anom267) AS avg, stddev(b.anom267) AS stddev
FROM provino a, provino b
WHERE expand(a.the_geom, 4000) && b.the_geom and distance(a.the_geom,
b.the_geom) < 4000::double precision
GROUP BY a.gid;
The additional where cause filters points that are only within 4000 of
other points before doing the distance() calculation.
-Steve
More information about the postgis-users
mailing list