GDAL2Tiles SoC 2007

The Google Summer of Code project is finished. Results and source codes are published on project web page: GDAL2Tiles: Utility for easy tile-based publishing of raster maps and KML generation. Usage tips and manual page is available on GDAL wiki page Gdal2Tiles Utility. Project was accepted by GDAL community as #1763. Utility is going to be distributed with new version of GDAL 1.5.0, but it is usable also now with stable branch of GDAL and FWTools.
For suggestions and new ideas please use Talk:GDAL2Tiles_SoC_2007.
Implementation of Raster Driver for GDAL library, which will allow to write PNG/JPG Pyramid Tile Structure as a newly supported file-format. Generated tiles will contain also XML metadata, so after putting them on any webserver they could be used as data source for:
*Google Earth (with SuperOverlay KML)
*Google Maps
*OpenLayers
*WorldKit
and probably other viewers.
Tile structure will follow recommendation from OSGEO Tile Map Service Specification. 
Simple utility 'gdal2tiles' for converting supported file-formats into new tile structure will be created.
Implemetation of the file format driver will allow to export map raster data into Google Earth, Google Maps and other online viewers from any of applications which use GDAL library. 
Idea for this project was suggested by FrankW at GDAL SoC Ideas.
== Implementation details ==
=== Pyramid Tile Structure and Metadata ===
* Metadata from TMS Specification will be created as a main source of georeference (especially TileMap Resource XML). 
* KML supports only EPSG:4326 (latlong with WGS84 datum) projection, so reprojection is needed if source projection is different. How to turn off unneeded tiles by Regions in KML?
* It would be nice to support zoom levels of Google Maps tiles (this have to be checked, maybe from Mapnik project, example of generated tiles. More info is available here: http://michal.guerquin.com/googlemaps.html and http://docs.codehaus.org/display/GEOSDOC/Google+Maps
=== GDAL Driver ===
* implements Create() function, so random access to format is possible (so for example direct warping of image into tiles will run).
=== GDAL2Tiles utility ===
* Command-line utility similar to existing GDAL utilities.
* Should be able to process files without proper georeference (to publish X-Ray images, vedute and other large bitmap files too).
== Possible future extension (not necessarily part of SoC project) ==
* Support for Microsoft Virtual Earth - they have generator MapCruncher
* Support for NASA World Wind. Tile generation for World Wind is done via GDAL using the dstile utility available here. Source code is here. Does it have only fixed internal structure of tiles or tile structure (names of directories and png files) could be done by TMS recomendation?
* Maybe support of OSSIM Planet.
* Simple GUI for 'gdal2tiles' under Windows/Linux/Mac done with Python (one of WxWidgets/TKinter/EasyDialogs).
* Implementation of GDAL Reader for generated tile structure (could be based on gdal/frmts/wcs, thanks FrankW)
* Zoomify Tile Structure as alternative or modification of Zoomify with support for generated structure
* Maybe implementation of georeference for tilestructure by use of GML.
== Schedule ==
* May 28: Designing the file format, XML Metadata formats(KML, TMS XML files, MS Virtual Earth, ...?) which will be supported have to be chosen and tested with their respective viewer applications, sample map is published.
* July 9: Alfa version of GDAL Driver for Tile Structure Writer is uploaded into official SVN.
* August 20: Final version of the driver as well as gdal2tiles utility are uploaded and reviewed.
== Competitors ==
Proprietary applications like: Arc2Earth have similar functionality. Several (mostly proprietary) generators for Google Earth tiles were mentioned on http://www.ogleearth.com/.
Microsoft Research project MapCruncher also generates tiles, but with metadata only for their MS Virtual Earth.
Zoomify could be now used as tiling program for SuperOverlay in GoogleEarth with free ZoomifyerEZ and generator ZoomifyKML (which I created as a part of my Master Thesis).
== What new functionality this project brings ==
Clean open-source implementation of tile structure export. Any application which uses GDAL library will easily be able to export files into a tile structure. Supplied utility gdal2tiles will convert any supported file format with georeference into tiles, it will also allow batch mode processing of files.
GDAL is strong library for processing maps and large raster files, including reprojection, so any already georeferenced maps could be easily converted for simple on-line publishing on a webserver without special server requirements (like MapServer is). Advantages of this approach are described in TMS Specification.
Reader could be implemented later, which will (with support on the side of UNM MapServer) allow to access published tile structure using WMS standard, where UNM MapServer will act as a proxy.
== Who will use results of this project ==
Several organizations and individuals who handle processing of maps.
Institutions which will use the 'gdal2tiles' utility from this project, as I am cooperating with them:
* Moravian Library in Brno, Czech Republic
* Historical institute of Czech Academy of Sciences
* Czech National Library
* National Library of Scotland
* University of Connecticut Library (with their grant "Building a Globally Distributed Historical Sheet Map Set of Austro-Hungarian Topographic Maps, 1877-1914", cooperating with New York Public Library, University of Connecticut Library, and Library of the American Geographical Society. It is a grant about building a scalable workflow and toolset for map libraries to add cartographic content to the Web.)
== Student's Biography ==
My name is Klokan Petr Přidal, I have finished Master degree in Applied Informatics at Masaryk University in Brno, now I am in the first semester of postgraduate study of Cartography at Czech Technical University in Prague. My Master thesis subject was "Processing and Digital Publishing of Historical Documents" (PDF of thesis in Czech).
I am familiar with open-source projects. I have experience with Linux/Solaris system administration. I like Python language, but I have also used other languages (C language, PHP).
I have supplied some patches into Gnumeric (#330129, #334257).
I founded a http://mplayerosx.sf.net/ project and I also won a competition in programming application for Mac using http://dictosx.sf.net/ (Objective-C).
My primary desktop is Gnome and Linux, but I also use Mac, Windows and Solaris. I did programming for all of these platforms (mostly smaller projects).
I am interested in historical cartography, I have several presentations about old maps and free software. I made a czech web page about it at http://www.staremapy.cz/ and registered domain http://www.oldmapsonline.org/ (which is not in use yet).
Category:Google Summer of Code