今天看Feed的时候发现了GeoDjango,话说自从gdal/ogr和shapely正式发布python的wrapper之后,GIS拥抱Python的步伐大大加快了,从雨后春笋一般的wx桌面程序到如今的GeoDjango。
GeoDjango已经在去年的FOSS4G和今年的OReilly Web 2.0 Conference上出现过。其背后还是OGR、GEOS等一系列的开源软件,主要是通过Django这样一个很好的Web开发平台,整合从后台的PostGIS、Mapnik到前台的OpenLayers,GoogleMapsAPI等,简化WebGIS的开发。GeoDjango项目甚至准备实现一个WMS/WFS服务。
Django的ORM模块为空间数据的操作进行了增强,django.contrib.gis.db包中的model继承了原有的model,增加了PointField 、LineStringField 、PolygonField 、MultiPointField 、MultiLineStringField 、MultiPolygonField 、GeometryCollectionField等几何类型(定义在Simple Feeature Access中)的域,支持给域定义空间索引和空间引用信息。GeoManager覆盖了原objects属性,在原有的filter中增加了地理查询的诸如poly__contains、poly__bbcontains等集几何查询方法,可以直接在filter中调用。(对于不同的数据库实现,这类方法有所不同,例如PostGIS和Oracle支持大部分Simple Feature Access中定义的几何运算,而MySQL5.0仅支持BoundaryBox级别的几何运算,据说MySQL5.1的实现已经有所增加)
目前这个项目仍然在进行中,似乎还没有非常成熟的版本放出,不过非常值得期待!

