Django

Code

Show
Ignore:
Timestamp:
06/15/08 14:48:57 (7 months ago)
Author:
jbronn
Message:

gis: Refactor of the GeoQuerySet; new features include:

(1) Creation of internal API that eases generation of GeoQuerySet methods.
(2) GeoQuerySet.distance now returns Distance objects instead of floats.
(3) Added the new GeoQuerySet methods: area, centroid, difference, envelope, intersection, length, make_line, mem_size, num_geom, num_points, perimeter, point_on_surface, scale, svg, sym_difference, translate, union.
(4) The model_att keyword may be used to customize the attribute that GeoQuerySet methods attach output to.
(5) Geographic distance lookups and GeoQuerySet.distance calls now use ST_distance_sphere by default (performance benefits far outweigh small loss in accuracy); ST_distance_spheroid may still be used by specifying an option.
(6) GeoQuerySet methods may now operate accross ForeignKey? relations specified via the field_name keyword (but this does not work on Oracle).
(7) Area now has the same units of measure as Distance.

Backward Incompatibilites:

  • The aggregate union method is now known as unionagg.
  • The field_name keyword used for GeoQuerySet methods may no longer be specified via positional arguments.
  • Distance objects returned instead of floats from GeoQuerySet.distance.
  • ST_Distance_sphere used by default for geographic distance calculations.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/gis/django/contrib/gis/db/models/proxy.py

    r6508 r7641  
    11""" 
    22 The GeometryProxy object, allows for lazy-geometries.  The proxy uses 
    3   Python descriptors for instantiating and setting GEOS Geometry objects 
    4   corresponding to geographic model fields. 
     3 Python descriptors for instantiating and setting Geometry objects 
     4 corresponding to geographic model fields. 
    55 
    66 Thanks to Robert Coup for providing this functionality (see #4322). 
     
    3232            geom = None 
    3333        else:  
    34             # Otherwise, a GEOSGeometry object is built using the field's contents, 
    35             # and the model's corresponding attribute is set. 
     34            # Otherwise, a Geometry object is built using the field's contents, 
     35            # and the model's corresponding attribute is set. 
    3636            geom = self._klass(geom_value) 
    3737            setattr(obj, self._field.attname, geom)