Code


Version 6 (modified by jbronn, 4 years ago) (diff)

--

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 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:

PostGIS Geography Support

  • Add support for the PostGIS 1.5 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 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 GDAL's SWIG bindings
    • shapely subclass of or thin wrapper over Shapely

GEOS

  • #10923: Use thread-safe GEOS API
  • #12010: Add ewkb and hexewkb properties and document the GEOS IO Classes
  • Add support for the 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

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