Hi all PostGIS Raster fans,

Thanks to Bborie Park form the Center for Vectorborne Diseases at the 
University of California, PostGIS Raster now supports map algebra operations on 
two rasters. The new function, along with its sister working on one raster, 
grants PostGIS with one of the most flexible map algebra operator available 
today in any GIS package.

ST_MapAlgebra(raster, raster, expression) -> raster...

-compute a new raster from the expression of two input raster,
-the expression is evaluated by the PostgreSQL parser so that any valid SQL 
expression can be used including conditional expressions. an upcoming variant 
will allow you to refer to your own custom function instead of using an 
expression,
-can compute the new raster over the extent of the first input raster, the 
second inout raster, the intersection of the two rasters or their union,
-accept alternative expressions to deal with nodata value occurring in the 
first, the second or both raster.

This major milestone which will be part of PostGIS 2.0 is the foundation for 
many future cool developments:

-ST_Intersection(raster, raster) and all other overlay operation like 
ST_Union(), ST_Difference(), ST_SymDifference()
-ST_Clip(raster, geometry) (which is essentially the same as 
ST_Intersection(raster, ST_AsRaster(geometry)))
-ST_BurnToRaster(raster, geometry)

You can obviously build your own raster model from an expression of many raster 
layers by imbricating many ST_Mapalgebra calls. e.g to implement r1 = (r2 + r3) 
/ r4 you can do 

SELECT ST_MapAlgebra(rasttemp.rast, r4.rast, "rast1/rast2") AS r1
FROM (
             SELECT ST_MapAlgebra(r2.rast, r3.rast, "rast1 + rast2") AS rast
             FROM r2, r3
             WHERE ST_Intersects(r2.rast, r3.rast)) rasttemp,
             r4
WHERE ST_Intersects(rasttemp.rast, r4.rast))

Feel free to be creative and suggest your own plpgsql or C code to get map 
algebra to work!

Thanks,

Pierre
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to