= !GeoDjango 1.2 = [[TOC(GeoDjango1.2)]] == Overview == This document details the features that are forthcoming to !GeoDjango in the 1.2 release. == High Priority == These tickets and features are a high priority for inclusion into `django.contrib.gis` for the Django 1.2 release. If you want a preview, clone the [http://geodjango.org/hg/gis-1.2/ gis-1.2] repository from the !GeoDjango mercurial. === Multiple Database Support === * Extend GSoC multiple-db features to !GeoDjango * All `SpatialBackend` components will be moved into full-fledged database backends * Related Bugfixes (multi-db refactoring should solve, or make easy to solve) * #11741: Properly quote PostgreSQL table aliases in spatial queries * #11969: Syncdb doesn't honor managed=False setting with Oracle and Geodjango === Admin-UI === * Apply any necessary changes to make GSoC admin-ui compatible. === 3D Geometries === * #11433: Complete support for 3D Geometries * Complete! * PostGIS only, but considering support for !SpatiaLite 2.4 * #12154: `OGRGeometry` coordinate dimension change upon transform * Need more robust KML serialization to better support 3D (see below) * What about the admin? === Map Widgets === * #5472: Implement individual map widgets for geometry fields. * Related tickets: * #9806: `GeometryField` crashes the geographic admin * #11002: Map widgets for databrowse * Related projects: * Charles !DeTar's [http://github.com/yourcelf/olwidget olwidget]. === PostGIS Geography Support === * Add support for the PostGIS 1.5 [http://postgis.refractions.net/documentation/manual-svn/ch04.html#PostGIS_Geography geography] type. * Current API in testing is to set `geography` keyword on the geometry field (only SRID of 4326 supported): {{{ from django.contrib.gis.db import models class City(models.Model): point = models.PointField(geography=True) objects = models.GeoManager() }}} * API limited to subset of supported [http://postgis.refractions.net/documentation/manual-svn/ch08.html#PostGIS_GeographyFunctions geography functions]. === KML === * Come up with a more robust method to serialize KML from geometries * Need to have way to set `clampToGround`, `relativeToGround`, and `absolute` tags (important for 3D KML) * Other tags? * Styles? * Put in `django.contrib.gis.utils.kml`? * Class-based or method-based? * Upgrade KML templates to use 2.2 === Geometry Backend === * Backend Information: * Was necessary to decouple from database; makes it possible to swap out geometry representation used within the rest of !GeoDjango * Set `GEOMETRY_BACKEND` to change from GEOS (default) to a different included backend, or with the module name of the user's choice. * Requirements: * `Geometry` and `GeometryException` objects * `Geometry` objects require: * Serialization properties: `wkb`, `wkt`, `ewkt`, `ewkb` * Attribute properties: `coord_dim`, `geom_type` (string), `srid` * Initial Backends (housed in `django.contrib.gis.geometry.backend`): * `geos`: default, uses `GEOSGeometry` * `gdal`: uses `OGRGeometry` (actually faster at parsing than GEOS) * `ogr`: thin wrapper over [http://trac.osgeo.org/gdal/wiki/GdalOgrInPython GDAL's SWIG bindings] * `shapely` subclass of or thin wrapper over [http://trac.gispython.org/lab/wiki/Shapely Shapely] === GEOS === * #10923: Use thread-safe GEOS API * #12010: Add `ewkb` and `hexewkb` properties and document the GEOS IO Classes * Add support for the [http://trac.gispython.org/lab/wiki/PythonGeoInterface Python Geo Interface] * Create a `__geo_interface__` property that returns a dictionary containing the `type`, `coordinates`, and `crs` of the `GEOSGeometry` * Use the interface to create GeoJSON when GDAL not available, e.g., `simplejson.dumps(self.__geo_interface__)` * Be able to initialize arbitrary Python objects that implement the `__geo_interface__` protocol === GDAL === * #12154: `OGRGeometry` coordinate dimension change upon transform * Add serialization properties for compatibility as geometry backend: `ewkb`, `hexewkb`, `ewkt` * Add support for the Python Geo Interface * Same as above, but will be easier to implement === `GeoQuerySet` Methods === * #10594: Filter out `NULL` geometries * #11854: Add support for PostGIS `ST_Azimuth` * Also considering: `ST_GeoHash`, `ST_ForceRHR`, `ST_MinimumBoundingCircle` * `GeoQuerySet` method `in-place` keyword option? === Google Maps === * #10854: Remove GEOS as requirement from Google Maps * #11072: Add Info Window Html to GMarker == Other Tickets and Features == These tickets/features will be considered for inclusion into !GeoDjango for 1.2, but there are no guarantees as core developer time is scarce. To increase chances of being accepted, the ticket should have a patch, tests, and as much documentation as possible. === Miscellaneous === * #11948: Linear referencing === Google Maps === * #11211: Add `GMarkerOptions`: `clickable`, `bouncy`, `dragCrossMove`, `bounceGravity`, `autoPan` and `hide` * #11458: Add `GPolylineOptions` and `GPolygonOptions` to `django.contrib.gis.maps.google.overlays` * #11999: Support for Google Maps encoded geometries