== Google Summer of Code 2012 PostGIS Raster Ideas == '''1) Implement write support for the PostGIS raster GDAL driver.''' Mentor: Jorge Arevalo (jorge.arevalo at deimos-space.com) or David Zwarg. A [http://www.gdal.org/ GDAL] driver allows reading/writing of raster (or images) data from/to formats like TIFF, PNG or JPEG. The current GDAL PostGIS raster driver supports reading of PostGIS rasters objects from a PostgreSQL/PostGIS database but does not support writing. The project includes proposing a driver writer design and implementing it. You will familiarize yourself with GDAL-OGR development (one of the most used open source geospatial package), geospatial imagery concepts, open source development tools and code in C. '''2) An optimized version of the two rasters ST_MapAlgebra SQL function''' Mentor: Pierre Racine (pierre.racine at sbf.ulaval.ca) [http://www.quantdec.com/SYSEN597/GTKAV/section9/map_algebra.htm Map algebra] allows the creation of a new raster as a mathematical (or logical) function of one or two other rasters. e.g. raster3 = (raster1 + raster2) / 2. This is a very common raster operation in the GIS world. A [http://postgis.refractions.net/documentation/manual-svn/RT_ST_MapAlgebraExpr2.html two rasters version of the ST_MapAlgebra SQL function already exist]. It allows a PostGIS user to create a new raster coverage as a function of two existing one with a simple SQL query. e.g.: SELECT ST_MapAlgebra(rast1, rast2, "(rast1 + rast2) / 2") FROM coverage1, coverage2 WHERE ST_Intersects(rast1, rast2). The extent of the resulting raster can be equivalent to the extent of the FIRST, the SECOND, the INTERSECTION or the UNION of both raster. The current implementation compute the new raster one pixel at a time. It is possible, but complicated, to optimize the algorythm in order to fill many areas as a chunck of data instead of pixels by pixels. The project includes reviewing the proposed algorythm and implementing it. You will familiarize yourself with PostGIS development (the most used open source geospatial database), geospatial imagery concepts, open source development tools and code in C and PL/pgSQL. '''3) Implement a set of geometry to raster functions''' Mentor: Pierre Racine (pierre.racine at sbf.ulaval.ca) With the ability to store geometries and rasters in postgis, there is now a gap to fill by implementing geometry to raster algorithms to allow transition from one type to the other. 1) '''ST_AsRaster''' takes a geometry and converts it to a raster. 2) '''ST_Interpolate''' should be an aggregate taking a set of points (e.g. filtered lidar points) or line geometries (e.g. digitized topo lines) and their associated values and returning a raster representing a surface interpolated from those values. There are numerous methods of [http://en.wikipedia.org/wiki/Interpolation interpolation] and it would nice to have a generic method so we can use all of them, but we’re first targeting [http://en.wikipedia.org/wiki/Bilinear_interpolation bilinear interpolation], which will fill most needs and lay the ground for other methods. For reference, you might want to check an implementation in [http://apps.nrbook.com/empanel/index.html Numerical Recipes (chap. 3)] or in [http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Interpolation/Chapter_main.html#Section_68.3 CGAL]. Converting a point table to a TIN and then to a raster is also a way to go. A Delaunay triangulation can be produced with the [http://www.cs.cmu.edu/~quake/triangle.html Triangle library] (copyright issues should be checked first). See also [http://postgis.17.n6.nabble.com/Voronoi-Dalaunay-function-again-td3522575.html here] and [http://postgis.17.n6.nabble.com/Voronoi-tessellation-td4549913.html here]. 3) '''ST_AsDensity''' takes a point or line geometry coverage and first assign a count of those features to every pixels of a raster coverage and then apply a smoothing filter (using the existing one raster version of neighbour ST_MapAlgebra). [http://www.spatialanalysisonline.com/output/html/Pointdensity.html Density functions] allow summarizing or simplifying a point or line dataset. Want more details? Check the [http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012 OSGeo GSoC 2012 page] or write to the [http://postgis.refractions.net/mailman/listinfo/postgis-devel PostGIS developer list]. [http://trac.osgeo.org/postgis/wiki/WKTRaster Back to the PostGIS raster project Home Page].