[postgis-users] ST_Buffer + grid problem
Ed Linde
edolinde at gmail.com
Thu Mar 22 06:58:33 PDT 2012
sure. Did you mean ST_GeomfromText or show it as text?
SELECT ST_GeomfromText ((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(way_geom)::geometry,
0.000036, 0.000036) rast
FROM buffers
where osm_id = 94695311
) foo1
) foo2;
ERROR: parse error - invalid geometry
HINT: "010300000001000000050000005" <-- parse error at position 27 within
geometry
********** Error **********
ERROR: parse error - invalid geometry
SQL state: XX000
Hint: "010300000001000000050000005" <-- parse error at position 27 within
geometry
On Thu, Mar 22, 2012 at 2:53 PM, Pierre Racine
<Pierre.Racine at sbf.ulaval.ca>wrote:
> I guess this is related to a GDAL problem where you cannot create a raster
> using ST_AsRaster with pixel size smaller than 1. Was this fixed Bborie?
>
> Ed could you reduce the list of geometries passed to ST_Extent to one and
> write it as ST_GeomfromText so we can debug this more easily?
>
> 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:45 AM
> > To: Pierre Racine
> > Cc: PostGIS Users Discussion
> > Subject: Re: [postgis-users] ST_Buffer + grid problem
> >
> > Hi Pierre,
> > So I am trying to have a 4meter by 4meter cell and I converted 4meters to
> > degrees, because I think ST_Extent will compute it in degrees as my
> geometry is
> > in srid 4326. But I get this GDAL error which I have no clue what it
> means. Any
> > ideas how I can fix it? Also I noticed that if I set it to 1.0, 1.0 I get
> > 21 rows but the gridid isn't continuous either (which is weird).
> >
> > 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(way_geom)::geometry,
> 0.000036,
> > 0.000036) rast
> > FROM buffers
> > ) foo1
> > ) foo2;
> >
> > ERROR: rt_raster_gdal_rasterize: Unable to add band to GDALDataset
> >
> > ********** Error **********
> >
> > ERROR: rt_raster_gdal_rasterize: Unable to add band to GDALDataset SQL
> state:
> > XX000
> >
> >
> >
> >
> > On Thu, Mar 22, 2012 at 2:13 PM, Pierre Racine <
> Pierre.Racine at sbf.ulaval.ca>
> > wrote:
> >
> >
> > 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
> > >
> > >
> >
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20120322/5e01bf25/attachment.html>
More information about the postgis-users
mailing list