[postgis-users] Best practices for PostGIS raster query and processing from web app

Pierre Racine Pierre.Racine at sbf.ulaval.ca
Tue Apr 9 14:42:39 PDT 2013

> >	Pixel selection is possible via three options:
> >	1) one raster ST_MapAlgebra
> >	2) ST_Reclass
> >	3) ST_DumpAsPolygons (with a where clause)
> OK, we will test the different approaches to see what works best/fastest.  When
> a query refers to multiple raster layers (e.g., select pixels with slope = x,
> elevation = y, landcover = z), I suppose you would use multiple calls to one-
> raster ST_MapAlgebra or a combination of one- and two-raster?

Good question. I was about to say that if you want to return all the bands of the intersecting raster then you should use ST_Intersection with the two raster but apparently only ST_Clip returns all the bands and it take a raster and a geometry :-(

So I guess multiple calls to ST_Mapalgebra is the best approach.

> >	It is possible to build a distance raster in the database. It is a slow
> >operation. But if your data is kind of static you can do it outside. What do you
> >want exactly? The nearest pixels to a rail?
> We are after a raster layer that has a distance via highway to the nearest
> railroad for each raster cell.  That way a user can query cells based on their own
> distance threshold of interest.  Looks like the best way is to precompute
> distance and conduct queries on this value.

Yep. Or you could use pgRouting in vector mode and then assign values to a raster.

> >	Try the new optimized callback map algebra:
> >	http://postgis.net/docs/manual-dev/RT_ST_MapAlgebra.html
> >	You might have to upgrade as it was optimized very recently.
> Does this mean switch to PostGIS 2.1, or use the latest 2.0.3?

PostGIS 2.1 SVN

> >	Test needed. If the pixel selected do not involve all the tiles of a tiled
> >raster you might gain a lot by tiling.
> Pixels of interest will likely be found across the spatial extent of the database.
> And they will come in many small clusters.  So it sounds like having few tiles and
> sticking with rasters over vectors is the best way to go.  Currently we have no
> tiles.  Is this sensible?

You could tile very small. Like 10 pixels by 10 pixels.


More information about the postgis-users mailing list