Author: jbronn Date: 2010-10-12 12:13:27 -0500 (Tue, 12 Oct 2010) New Revision: 14189
Modified: django/trunk/django/contrib/gis/db/models/query.py django/trunk/django/contrib/gis/tests/geogapp/models.py django/trunk/django/contrib/gis/tests/geogapp/tests.py django/trunk/docs/ref/contrib/gis/model-api.txt Log: Enabled area calculations for geography columns. Modified: django/trunk/django/contrib/gis/db/models/query.py =================================================================== --- django/trunk/django/contrib/gis/db/models/query.py 2010-10-12 14:09:02 UTC (rev 14188) +++ django/trunk/django/contrib/gis/db/models/query.py 2010-10-12 17:13:27 UTC (rev 14189) @@ -48,7 +48,10 @@ s['procedure_args']['tolerance'] = tolerance s['select_field'] = AreaField('sq_m') # Oracle returns area in units of meters. elif backend.postgis or backend.spatialite: - if not geo_field.geodetic(connection): + if backend.geography: + # Geography fields support area calculation, returns square meters. + s['select_field'] = AreaField('sq_m') + elif not geo_field.geodetic(connection): # Getting the area units of the geographic field. s['select_field'] = AreaField(Area.unit_attname(geo_field.units_name(connection))) else: Modified: django/trunk/django/contrib/gis/tests/geogapp/models.py =================================================================== --- django/trunk/django/contrib/gis/tests/geogapp/models.py 2010-10-12 14:09:02 UTC (rev 14188) +++ django/trunk/django/contrib/gis/tests/geogapp/models.py 2010-10-12 17:13:27 UTC (rev 14189) @@ -10,7 +10,7 @@ code = models.CharField(max_length=10) poly = models.PolygonField(geography=True) objects = models.GeoManager() - def __unicode__(self): return self.name + def __unicode__(self): return self.code class County(models.Model): name = models.CharField(max_length=25) Modified: django/trunk/django/contrib/gis/tests/geogapp/tests.py =================================================================== --- django/trunk/django/contrib/gis/tests/geogapp/tests.py 2010-10-12 14:09:02 UTC (rev 14188) +++ django/trunk/django/contrib/gis/tests/geogapp/tests.py 2010-10-12 17:13:27 UTC (rev 14189) @@ -76,3 +76,12 @@ self.assertEqual(num_poly, len(c.mpoly)) self.assertEqual(name, c.name) self.assertEqual(state, c.state) + + def test06_geography_area(self): + "Testing that Area calculations work on geography columns." + from django.contrib.gis.measure import A + # SELECT ST_Area(poly) FROM geogapp_zipcode WHERE code='77002'; + ref_area = 5439084.70637573 + tol = 5 + z = Zipcode.objects.area().get(code='77002') + self.assertAlmostEqual(z.area.sq_m, ref_area, tol) Modified: django/trunk/docs/ref/contrib/gis/model-api.txt =================================================================== --- django/trunk/docs/ref/contrib/gis/model-api.txt 2010-10-12 14:09:02 UTC (rev 14188) +++ django/trunk/docs/ref/contrib/gis/model-api.txt 2010-10-12 17:13:27 UTC (rev 14189) @@ -216,7 +216,6 @@ available for geography columns: * :lookup:`bboverlaps` -* :lookup:`exact`, and :lookup:`same_as` * :lookup:`coveredby` * :lookup:`covers` * :lookup:`intersects` -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-upda...@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.