The tgext.geo [1] project was started as a part of SoC 2008. It provides basic GIS functionality to TurboGears2. It uses MapFish server to provide a RestFul web interface for geospatial data with a PostGIS backend. it also integrates Tilecahce for caching and serving of map tiles. It is proposed to enhance tgext.geo project into a Geospatial Web Framework using TurboGears2. This would involve developing an SQLAlchemy GIS Extension to support various spatial database features. In addition FeatureServer [2], a popular python GIS server will be integrated with TG2 to provide a much richer set of GIS functionality.
Description
The tgext.geo project was developed as part of GSoC 2008 Toscawidgets project. It makes use of Mapfish server to provide a RestFul web interface to GIS data stored in a PostGIS spatial database. It also uses Tilecache to cache and serve map tiles making TG2 a fast map tiles server platform. While tgext.geo, in its present form, could address a large variety of geographic applications, there are areas where tgext.geo needs to improve to in order to make TG2 a true geospatial web framework.
Geodgango extends the django ORM to support geospatial data objects. ATM SQLAlchemy, the ORM component of TG2 stack, does not support geospatial databases like PostGIS, SQLiteSpatial or MysqlSpatial. Mapfish uses a module mapfish.sqlalchemygeom to extend SA to support PostGIS. It is proposed to extend SQLAlchemy to add support for these spatial databases.This will be achieved by using custom types feature of SA to support geospatial datatypes.
FeatureServer is a python geographic feature server. It provides a large number of GIS services types like WFS, GML, GeoJSON, GeoRSS, etc. Featureserver could be integrated with TG2 as a best of breed GIS WSGI app. FeatureServer uses the FeatureServer.DataSource module for storing geospatial objects. The various supported DataSources are PostGIS, SQLite, WFS, OGR (Shape File), etc. A DataSource for SQLAlchemy GIS Extension could be added so that the backend database could be integrated with the TG2 ORM layer. By integrating FeatureServer with the TG2 we could have a Geospatial Web Framework with all the goodies provided by TG2 like auth & auth, transactions, multiple databases, toscawidgets and indeed all the other wsgi middleware components. While integrating FeatureServer as a WSGI app would be simple, implementing the new SA based DataSource would require some work.
Testing
Care will be taken to have 100% unittest coverage of the SA GIS Extension. TG2 Featureserver integration would also be tested using WebTests based functional tests.
Documentation
Documentation would be delivered as tutorials and api docs. Documentation on getting up and running with gis infrastructure (e.g. setting up postgis, getting sample gis data, etc.) would be delivered. Sphinx will be used for generating the docs.
Milestones
As per GSoC timeline [3] the coding period begins on May 23 and ends on Aug 16. There are a total of 13 weeks. The important milestones towards completion of the project are proposed as follows:-
- Studying docs and looking around SA and FeatureServer codebase : W(-3) - W(-2)
- Writing experimental code discussing issues on ML IRC : W(-1) - W0
- Minimal working SA GIS Extension with PostGIS db : W1 - W2
- All tests for written code pass and code review : W3 - W4
- Add support for Mysql Spatial and SpatialLite : W5 - W6
- Tests for new code and code review : W7
- TG2 FeatureServer integration with tutorial and sample code : W8 - W9
- SA backend for FeatureServer : W10 - W11
- Tests and code review : W12
- Sphinx documentation and full TG2 GIS tutorial : W12 - W13
- Improve test coverage, Improve docs, Write report : W13
Limitations
- Exams during W0 and W1 - More time has been kept in W0 to W4 to make up for the loss
- May have some issues due to my timezone (UTC + 05:30) - Effort would be made to work more at night to synchronize time with West
[1] http://code.google.com/p/tgtools
[2] http://featureserver.org/
[3] http://socghop.appspot.com/document/show/program/google/gsoc2009/timeline
No comments:
Post a Comment