[postgis-users] ST_Buffer + grid problem

Ed Linde edolinde at gmail.com
Thu Mar 22 06:04:40 PDT 2012


Hi Pierre,
Thanks for the grid idea last night. I have a problem though, I want to
have a 4m by 4m cell sized
grid over my buffer geometries which are in SRID = 4326. And then I have
another data set of
2D points which are also in SRID 4326... wondering how I can figure out
from just a given (lat,long)
which cell ID in the buffer grid it would belong to? I am thinking that I
might run into "alignment
issues" because shouldn't the extent of the grid be exactly the same on the
2D point cloud as well,
so that the grid cell IDs will match? Unless I am missing something here?

Cheers,
Ed


On Wed, Mar 21, 2012 at 8:46 PM, Pierre Racine
<Pierre.Racine at sbf.ulaval.ca>wrote:

> > I am not sure if this is possible, but I have computed (using ST_Buffer)
> a sort of
> > buffer around several LINESTRINGs. Now I would like to lay some sort of
> grid of
> > say 1m^2 cell size on top of this collection of geometries and then
> compute the
> > intersection... so in the end I would like to for example, know that
> grid cell ID = 1
> > intersects with buffers 1 and 10, grid cell 2 intersects with buffers 7,
> 10 etc..
> >
> > Is there a simple way of doing this in postgis? Maybe someone could
> point me to
> > some documentation of how I can generate such a grid in postgis and maybe
> > then I can use just ST_Intersect once I have these two geometries?
>
> With the raster type you can now easily create a vector grid like this:
>
> CREATE TABLE vectorgrid AS
> SELECT (gvxy).geom, ((gvxy).x - 1) * rwidth + (gvxy).y gridid
> FROM (SELECT ST_PixelAsPolygons(rast) gvxy, ST_Width(rast) rwidth
>             FROM (SELECT ST_AsRaster(ST_Extent(geom)::geometry, 1.0, 1.0)
> rast
>                          FROM yourbuffertable
>                         ) foo1
>            ) foo2;
>
> Make sure a spatial index exist on both tables:
>
> CREATE INDEX yourbuffertable_geom_idx  ON yourbuffertable USING gist
>  (geom);
> CREATE INDEX vectorgrid _geom_idx  ON vectorgrid USING gist  (geom);
>
> You can then perform a normal intersect query:
>
> CREATE TABLE interresult AS
> SELECT b.bufferid, g.gridid, ST_Intersection(g.geom, b.geom) geom
> FROM vectorgrid g, yourbuffertable b
> WHERE ST_Intersects(g.geom, b.geom);
>
> Pierre
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20120322/831358f2/attachment.html>


More information about the postgis-users mailing list