[R-sig-Geo] Raster/vector intersections in PostGIS WKT Raster

Pierre Racine Pierre.Racine at sbf.ulaval.ca
Tue Jun 29 17:31:55 CEST 2010


Hi everybody,

I'm pleased to announce that you can now do intersections between rasters and geometries very much like you used to do geometry/geometry intersections in PostGIS. For this, PostGIS WKT Raster introduces two new functions to PostGIS: ST_Intersects(geometry, raster, band) and ST_Intersection(geometry, raster, band).

As its geometry/geometry sister, ST_Intersects(geometry, raster, band) returns TRUE if the withvalue area of a raster or a raster tile (nodata value are ignored) intersects a geometry and ST_Intersection(geometry, raster, band) returns the geometry/value set of geometries representing the intersection between the geometry and each polygonized group of pixel sharing a same value from the raster and its associated value. Example:

SELECT polyid,
       (ST_Intersection(the_geom, rast)).geom,
       (ST_Intersection(the_geom, rast)).val
FROM my_polygons, srtm_tiled
WHERE ST_Intersects(rast, the_geom)

or, a bit more complex, but much faster and returning the same result:

SELECT polyid, (gv).geom, (gv).val
FROM (SELECT polyid, ST_Intersection(the_geom, rast, 1) AS gv
     FROM my_polygons, srtm_tiled
     WHERE ST_Intersects(rast, the_geom)) foo

These functions works with any kind of geometry so you can intersect any road, river, polygons or point layer with your favorite elevation or land cover raster of any resolution and any size. You can also load any number of raster in the database with one command line to constitute a unique table raster coverage of any shape (no matter if your group of raster do not form a rectangular coverage).

You will find a complete tutorial on how to use those two new functions here: http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01. A reference is available here: http://postgis.refractions.net/documentation/manual-svn/RT_reference.html and chapter 13 of "PostGIS in Action" is also a very good introduction to WKT Raster.

Compilation and installation info are available in the project home page: http://trac.osgeo.org/postgis/wiki/WKTRaster

These features are the result of two years of collaboration between many people and companies interested in bringing raster into PostGIS. I would like to thanks particularly Steve Cumming who initially made all this possible, Sandro Santilli who wrote the base code, Mateusz Loskot who wrote the Python loader, Jorge Arevalo who wrote the GDAL driver and ST_DumpAsPolygons(), Regina and Leo Obe who are doing so many things and believed in the project from the beginning by adding a chapter about WKT Raster in "PostGIS in Action" and also David Zwarg who wrote most of the setter functions.

This is the first step toward a first complete raster/vector analysis and manipulation SQL API. We hope to make of PostGIS with WKT Raster the most powerful and complete GIS analysis and manipulation high level language ever (!!!). WKT Raster should normally be totally integrated into PostGIS in PostGIS release 2.0. Upcoming functions should include ST_Reclass, ST_Clip, ST_AsRaster, ST_Resample.

Let us know your need and your experience with WKT Raster.

Thanks,

Pierre Racine



More information about the R-sig-Geo mailing list