I don't know if this would be fast but I would query those buffers which do not intersects with a Union of the layer... Something like:
SELECT id, name, elevation, geom FROM peaktable A, (SELECT ST_Union(ST_Buffer(geom, 5)) AS geom FROM peaktable) B WHERE NOT ST_Intersects(ST_Buffer(A.geom, 5), B.geom) or maybe better: SELECT id, name, elevation, geom FROM peaktable A, (SELECT ST_Union(ST_Buffer(geom, 5)) AS geom FROM peaktable) B WHERE NOT ST_DWithin(ST_Buffer(A.geom, 5), B.geom, 0) But I haven't tried them. Pierre >-----Original Message----- >From: [email protected] [mailto:postgis-users- >[email protected]] On Behalf Of Stefan Keller >Sent: 14 février 2011 14:59 >To: PostGIS Users Discussion >Subject: Re: [postgis-users] Declarative SQL query for non-overlapping buffers >given dense points? > >I take the silence as an evidence that there is no declarative >solution to this challenge :->. >I think I have to write a stored procedure. > >Yours, S. > >2011/2/13 Stefan Keller <[email protected]>: >> Hi >> >> Given a table of peaks with the fields id, name, elevation, geom I'd >> like to write a query which returns to me only those (randomly >> selected) peaks - i.e. peak buffers say with radius 5 kilometers - >> which dont 'overlap'. This is motivated by a visualization use case >> where label names should'nt overlap because of lack of visual space - >> as well as because of low network capacity between db and client! >> >> Any ideas on how to solve this with a declarative SQL query? >> >> The only promising approach I found so far was is to define a subquery >> with ranked buffers and then to select some out of these... >> >> -S. >> >_______________________________________________ >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
