= Google Summer of Code = GDAL participates in the [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code] under the OSGeo umbrella. * [wiki:SoCProjects Selected Projects] == 2013 Ideas List == 1. OGC WMTS Driver - likey as an extension to the existing WMS driver which does various tiling schemes too. OGC WMTS is the OGC Web Map Tiling System (add ref?) 2. AutoCAD DWG OGR Driver based on libredwg. Note that libredwg development seems to be stalled. Some review of status would be appropriate before committing. This would be an alternative to the more proprietary Open Design Alliance library based driver. 3. Adding support for "M" dimension in OGR Geometries in a fashion inline with modern OGC and ISO simple features geometry standards. Note, GEOS does not yet support M which will be a limiting factor. == 2010 Mentors == * Frank Warmerdam (warmerdam at pobox.com) * Howard Butler (hobu.inc at gmail.com) OGR-related items * Philippe Vachon (philippe at cowpig.ca) - general raster, threading/parallelism items == 2010 Ideas List == Google will be sponsoring another [http://code.google.com/soc/ Summer of Code] for 2010. 1. '''OpenEV2''': [http://openev.sourceforge.net/ OpenEV] is a GUI tool for efficient displaying and analyzing geospatial data formats supported by GDAL/OGR (including GeoTIFF, MrSID, ECW, .. ESRI Shape files, ..), it is able to convert between file formats, reproject, crop, display by OpenGL a 3D terrain based on elevation from DEM files on Linux, Windows and Mac. Have a look at [http://openev.sourceforge.net/index.php?page=screenshots screenshots] or [http://fwtools.maptools.org/ try it]. It has almost finished port to GTK 2.0 and GDAL python-ng which needs a bit of work, packaging and improvement, more info at [http://www.nabble.com/OpenEV2-updated-td21101297.html OpenEV2 updated post]. Knowledge: Python, GNU tools, GTK 2.0, Linux and partly C, C++. 2. '''PNG Driver''': Implement efficient PNG driver using libPNG with support for optimization of PNG images exported by GDAL (info: [http://www.gdal.org/gdal_drivertut.html tutorial] + [http://svn.osgeo.org/gdal/trunk/gdal/frmts/png png driver]). You can reuse existing open-source [http://members.ozemail.com.au/~dekker/NEUQUANT.HTML NeuQuant algorithm] for RGBA and RGB export. [http://members.ozemail.com.au/~dekker/NEUQUANT.HTML NeuQuant] is easy-to-use practical demonstration of power of the Kohonen Neural Networks. It's source code can be included into GDAL from [http://members.ozemail.com.au/~dekker/NEUQUANT.C original implementation of the algorithm] and/or from [http://pngnq.sourceforge.net/ pngnq utility]. There are also other open-source tools implementing optimization of PNG which can be reused ([http://advancemame.sourceforge.net/doc-advpng.html AdvPNG], [http://optipng.sourceforge.net/ OptiPNG], [http://pmt.sourceforge.net/pngcrush/ PNGcrush]) or can be a source of inspiration ([http://www.advsys.net/ken/util/pngout.htm PNGOut]). Result should be an improved PNG driver for GDAL together with color quantization functions which will produce png files with optimized file-size. Result of this work is going to be usable in MapServer, GRASS, MapTiler and other GDAL-based projects. Knowledge: C, C++ 3. '''ODBC Driver''': Implement write support for the ODBC driver and include support for MSSQL2008 spatial database. The current ODBC driver should be extended to create or transfer spatial data into the ODBC data sources like Microsoft SQL Server. The driver must have built-in support to auto create the XMIN, YMIN, XMAX and YMAX shape envelope values for the non-spatial databases and the spatial index for the MSSQL2008 spatial databases. (info: [http://www.gdal.org/ogr/drv_odbc.html]). Result of this work is going to be usable in any project using the OGR libraries. Knowledge: C, C++, MSSQL2008 Spatial Note : a [http://gdal.org/ogr/drv_mssqlspatial.html MSSQLSpatial driver] now exists. 4. '''OGR SQL .NET Data Provider''': Implement a .NET Data Provider inteface for the OGR SQL API. This sample application would allow the user to use OgrSqlDataAdapter to read the result of an OGR SQL query into a DataSet which could be used as the datasource of the bindable .NET controls. The provider would also support transactions and batch queries and read the multiple results into multiple data tables within the same DataSet. The OgrSqlDataReader would provide a convenient way to retrieve the records sequentially for the user. (info: [http://www.gdal.org/ogr/ogr_sql.html]). Result of this work would go to the sample application section of the C# interface. Knowledge: C#, .NET Framework Class Libraries 5. '''OGR WFS read (or read/write) driver''' using existing OGR GML driver for feature parsing. * [http://portal.opengeospatial.org/files/?artifact_id=14145 OGC WFS Specification] * [http://www.opengeospatial.org/standards/wfs The OpenGIS Web Feature Service (WFS) Implementation Specification] * [http://www.gdal.org/ogr/ogr_drivertut.html OGR Driver Tutorial] Note : a [http://gdal.org/ogr/drv_wfs.html OGR WFS driver] now exists 6. '''Develop a driver for IBM DB2 and its Spatial Extender''' * [http://www-306.ibm.com/software/data/spatial/db2spatial/ DB2 Spatial Extender] 7. '''GDAL_CALC.PY''' - Development of a simple raster calculator based on Python+GDAL. Use sample: % gdal_calc a=img1.tif b=img2.tif c=img3.tif -calc c=((a+b)/2) Note : a [http://trac.osgeo.org/gdal/browser/trunk/gdal/swig/python/scripts/gdal_calc.py gdal_calc.py] script now exists. 8. '''Multithreading''' - Work to make GDAL and/or OGR threadsafe, and develop a test suite to validate. ''or your own ideas..'' == 2009 Ideas List == 1. '''KML Driver''': Develop an enhanced KML driver using Google's [http://code.google.com/p/libkml/ libkml] library. A new driver based around Google's reference implementation would fix some limitations in the current driver (no multi-geometries, no KMZ support, etc), make it easier to keep the driver up to date as KML evolves, and should generally make it easier for GDAL software to exchange data with Google Earth. Both OGR (vector) and GDAL (raster) KML drivers could be developed. Note : a [http://gdal.org/ogr/drv_libkml.html OGR LIBKML driver] now exists 2. '''OpenEV2''': [http://openev.sourceforge.net/ OpenEV] is a GUI tool for efficient displaying and analyzing geospatial data formats supported by GDAL/OGR (including GeoTIFF, MrSID, ECW, .. ESRI Shape files, ..), it is able to convert between file formats, reproject, crop, display by OpenGL a 3D terrain based on elevation from DEM files on Linux, Windows and Mac. Have a look at [http://openev.sourceforge.net/index.php?page=screenshots screenshots] or [http://fwtools.maptools.org/ try it]. It has almost finished port to GTK 2.0 and GDAL python-ng which needs a bit of work, packaging and improvement, more info at [http://www.nabble.com/OpenEV2-updated-td21101297.html OpenEV2 updated post]. Knowledge: Python, GNU tools, GTK 2.0, Linux and partly C, C++. 3. '''PNG Driver''': Implement efficient PNG driver using libPNG with support for optimization of PNG images exported by GDAL (info: [http://www.gdal.org/gdal_drivertut.html tutorial] + [http://svn.osgeo.org/gdal/trunk/gdal/frmts/png png driver]). You can reuse existing open-source [http://members.ozemail.com.au/~dekker/NEUQUANT.HTML NeuQuant algorithm] for RGBA and RGB export. [http://members.ozemail.com.au/~dekker/NEUQUANT.HTML NeuQuant] is easy-to-use practical demonstration of power of the Kohonen Neural Networks. It's source code can be included into GDAL from [http://members.ozemail.com.au/~dekker/NEUQUANT.C original implementation of the algorithm] and/or from [http://pngnq.sourceforge.net/ pngnq utility]. There are also other open-source tools implementing optimization of PNG which can be reused ([http://advancemame.sourceforge.net/doc-advpng.html AdvPNG], [http://optipng.sourceforge.net/ OptiPNG], [http://pmt.sourceforge.net/pngcrush/ PNGcrush]) or can be a source of inspiration ([http://www.advsys.net/ken/util/pngout.htm PNGOut]). Result should be an improved PNG driver for GDAL together with color quantization functions which will produce png files with optimized file-size. Result of this work is going to be usable in MapServer, GRASS, MapTiler and other GDAL-based projects. Knowledge: C, C++ 4. '''ODBC Driver''': Implement write support for the ODBC driver and include support for MSSQL2008 spatial database. The current ODBC driver should be extended to create or transfer spatial data into the ODBC data sources like Microsoft SQL Server. The driver must have built-in support to auto create the XMIN, YMIN, XMAX and YMAX shape envelope values for the non-spatial databases and the spatial index for the MSSQL2008 spatial databases. (info: [http://www.gdal.org/ogr/drv_odbc.html]). Result of this work is going to be usable in any project using the OGR libraries. Knowledge: C, C++, MSSQL2008 Spatial 5. '''GDAL2Tiles/MapTiler''': Implementation of the coming [http://www.opengeospatial.org/standards/requests/54 OGC WMTS] standard, implementation of the pixel-precise warping (by warped VRT editing), implementation of the [http://www.maptiler.org/google-maps-overlay-opacity-control/ opacity slider control] as one of the official OpenLayers Addins, direct tiling of global maps into Spherical Mercator from WGS84 ([http://code.google.com/p/maptiler/issues/detail?id=6 bug]), support for JPEG tiles, support for cutline clipping, NODATA transparency, bug-fixing of [http://code.google.com/p/maptiler/issues/list open issues]. Code is going to be submitted into GDAL SVN and MapTiler SVN. Project MapTiler (the GUI for GDAL2Tiles) is going to be published as a stable version 1.0 with all binary installers (Windows/Linux/Mac) and with support for localization. Knowledge: Python, JavaScript, GNU tools, partly C, C++ 6. '''PostGIS / WKT Raster Driver''': Implementation of read-only GDAL [http://gdal.org/gdal_drivertut.html driver] for [http://postgis.refractions.net/support/wiki/index.php?WKTRasterHomePage WKT Raster] extension to [http://postgis.refractions.net/ PostGIS]. The WKT Raster is ''is an ongoing project aiming at developing raster support in PostGIS (...) goal is to implement the RASTER type as much as possible like the GEOMETRY type is implemented in PostGIS''. [http://mateusz.loskot.net/?p=291 WKT Raster crash course #1] gives detailed overview of the project background. In short, implementation steps will include parsing of [http://svn.osgeo.org/postgis/spike/wktraster/doc/RFC2-WellKnownBinaryFormat WKB format], define specializations of [http://gdal.org/classGDALDataset.html GDALDataset] and [http://gdal.org/classGDALRasterBand.html GDALRasterBand], implement read operations for bands. The idea behind WKT Raster in GSoC 2009 is to deliver a prototype (or proof of concept) that can be used as a base for further development, so only two raster types are considered: 1 band of [http://gdal.org/gdal_8h.html GDT_Byte] ([http://en.wikipedia.org/wiki/Grayscale Grayscale]), 3 x 1 band of GDT_Byte ([http://en.wikipedia.org/wiki/RGB_color_model RGB]). Knowledge: [http://en.wikipedia.org/wiki/Raster_graphics raster] graphics, basic understanding of [http://en.wikipedia.org/wiki/Well_known_binary Well-Known-Binary]-like formats, [http://www.postgresql.org/docs/8.3/static/libpq.html libpq], C (strong), C++ (basic). 7. '''OGR SQL .NET Data Provider''': Implement a .NET Data Provider inteface for the OGR SQL API. This sample application would allow the user to use OgrSqlDataAdapter to read the result of an OGR SQL query into a DataSet which could be used as the datasource of the bindable .NET controls. The provider would also support transactions and batch queries and read the multiple results into multiple data tables within the same DataSet. The OgrSqlDataReader would provide a convenient way to retrieve the records sequentially for the user. (info: [http://www.gdal.org/ogr/ogr_sql.html]). Result of this work would go to the sample application section of the C# interface. Knowledge: C#, .NET Framework Class Libraries ''or your own ideas..'' inspiration also from: == 2008 Ideas List == These are suggestions. Students are encouraged to come up with their own ideas as well. 1. Implement GeoPNG/GeoJPEG by embedding coordinate system and geotransformation information (possibly in GML) as chunks in PNG and JPEG files (see GML JP2 for a model of how this might be done). * [http://portal.opengeospatial.org/files/?artifact_id=13252 GMLJP2 Specification] * GMLJP2 Code: [http://svn.osgeo.org/gdal/trunk/gdal/gcore/gdaljp2metadata.cpp gdaljp2metadata.cpp] [http://svn.osgeo.org/gdal/trunk/gdal/gcore/gdalgmlcoverage.cpp gdalgmlcoverage.cpp] * [http://trac.osgeo.org/gdal/ticket/1742] was an attempt to provide georeferencing to PNG, GIF and JPEG datasets. The format itself used lacks standardization, but the mechanisms used can be usefull. 2. [http://svn.osgeo.org/gdal/trunk/gdal/frmts/png PNG Driver (using libpng)] * [http://svn.osgeo.org/gdal/trunk/gdal/frmts/jpeg JPEG Driver (using libjpeg)] 3. OGR WFS read (or read/write) driver using existing OGR GML driver for feature parsing. * [http://portal.opengeospatial.org/files/?artifact_id=14145 OGC WFS Specification] * [http://www.opengeospatial.org/standards/wfs The OpenGIS Web Feature Service (WFS) Implementation Specification] * [http://www.gdal.org/ogr/ogr_drivertut.html OGR Driver Tutorial] 4. Implementation of alternative driver for GML 2 and GML 3 using [http://expat.sourceforge.net/ Expat XML Parser] 5. Implementation of read-only WFS driver using GML driver based on the Expat XML Parser. 6. Develop a driver for GeoRSS * [http://georss.org GeoRSS specification] 7. Develop a driver for [http://www.openstreetmap.org/ OpenStreetMap] protocol * [http://wiki.openstreetmap.org/index.php/Protocol OSM Protocol Stack] 8. Develop a driver for IBM DB2 and its Spatial Extender * [http://www-306.ibm.com/software/data/spatial/db2spatial/ DB2 Spatial Extender] 9. Extend [http://gdal.org/ogr/drv_geojson.html GeoJSON] driver with cashing capabilities when accessing remote datasource. 10. Development of Java bindings. 11. GDAL/OGR for Windows CE: porting new drivers 12. Development of [http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29 C# language] [http://www.swig.org SWIG] bindings for [http://en.wikipedia.org/wiki/.NET_Compact_Framework .NET Compact Framework] and creating test applications for it. 13. Creating an ASP.NET multithreading testbed for the GDAL C# bindings, by using the [http://msdn2.microsoft.com/en-us/library/3dasc8as(VS.80).aspx thread pool] approach. 14. Development of bindings for new programming languages: [http://www.lua.org/ Lua], [http://en.wikipedia.org/wiki/Ada_%28programming_language%29 Ada] ([http://en.wikipedia.org/wiki/GNAT GNAT]), ''put your favorite language here'' 15. Development of GDAL Read/Write Driver for tiles, derived from [http://www.gdal.org/gdal2tiles.html GDAL2Tiles utility]. 16. GDAL2Tiles - support for TMS tiles with global-mercator profile to make overlays with Google Maps, MS Virtual Earth, etc. possible. 17. Extend the HDF5 driver to support writing datasets. This should include an effort to produce HDF5 datasets according to NASA HDF5 metadata conventions where possible. HDF5 is a new generation format expected to be widely used for science data products from NASA and other agencies. 18. GDAL_CALC.PY - Development of a simple raster calculator based on Python+GDAL. Use sample: % gdal_calc a=img1.tif b=img2.tif c=img3.tif -calc c=((a+b)/2) 19. Develop an enhanced KML driver using Google's [http://code.google.com/p/libkml/ libkml] library. A new driver based around Google's reference implementation would fix some limitations in the current driver (no multi-geometries, no KMZ support, etc), make it easier to keep the driver up to date as KML evolves, and should generally make it easier for GDAL software to exchange data with Google Earth. Both OGR (vector) and GDAL (raster) KML drivers could be developed.