[postgis-users] ST_Buffer + grid problem

Pierre Racine Pierre.Racine at sbf.ulaval.ca
Thu Mar 22 06:13:04 PDT 2012


You can control how the grid is aligned by using more ST_AsRaster parameters. See:

http://postgis.refractions.net/documentation/manual-svn/RT_ST_AsRaster.html

If you want it to align on your point, just align it on your points...

Pierre

> -----Original Message-----
> From: manohar.kaul at gmail.com [mailto:manohar.kaul at gmail.com] On Behalf
> Of Ed Linde
> Sent: Thursday, March 22, 2012 9:05 AM
> To: PostGIS Users Discussion
> Cc: Pierre Racine
> Subject: Re: [postgis-users] ST_Buffer + grid problem
> 
> 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
> 
> 




More information about the postgis-users mailing list