From e62dea9ad5a4695cbcdec3c7e51b5914d0b2485d Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Thu, 27 Mar 2014 22:26:20 +0100 Subject: [PATCH] Confirmed Spatialite 4 support --- django/contrib/gis/tests/geoapp/tests.py | 19 +++++++++---------- docs/ref/contrib/gis/install/geolibs.txt | 4 +++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/django/contrib/gis/tests/geoapp/tests.py b/django/contrib/gis/tests/geoapp/tests.py index 8456ca1718..3501fb6a7f 100644 --- a/django/contrib/gis/tests/geoapp/tests.py +++ b/django/contrib/gis/tests/geoapp/tests.py @@ -435,8 +435,11 @@ class GeoQuerySetTest(TestCase): self.assertEqual(c.mpoly.difference(geom), c.difference) if not spatialite: self.assertEqual(c.mpoly.intersection(geom), c.intersection) - self.assertEqual(c.mpoly.sym_difference(geom), c.sym_difference) - self.assertEqual(c.mpoly.union(geom), c.union) + # Ordering might differ in collections + self.assertSetEqual(set(g.wkt for g in c.mpoly.sym_difference(geom)), + set(g.wkt for g in c.sym_difference)) + self.assertSetEqual(set(g.wkt for g in c.mpoly.union(geom)), + set(g.wkt for g in c.union)) @skipUnless(getattr(connection.ops, 'envelope', False), 'Database does not support envelope operation') def test_envelope(self): @@ -775,9 +778,9 @@ class GeoQuerySetTest(TestCase): def test_unionagg(self): "Testing the `unionagg` (aggregate union) GeoQuerySet method." tx = Country.objects.get(name='Texas').mpoly - # Houston, Dallas -- Oracle has different order. + # Houston, Dallas -- Ordering may differ depending on backend or GEOS version. union1 = fromstr('MULTIPOINT(-96.801611 32.782057,-95.363151 29.763374)') - union2 = fromstr('MULTIPOINT(-96.801611 32.782057,-95.363151 29.763374)') + union2 = fromstr('MULTIPOINT(-95.363151 29.763374,-96.801611 32.782057)') qs = City.objects.filter(point__within=tx) self.assertRaises(TypeError, qs.unionagg, 'name') # Using `field_name` keyword argument in one query and specifying an @@ -786,12 +789,8 @@ class GeoQuerySetTest(TestCase): u1 = qs.unionagg(field_name='point') u2 = qs.order_by('name').unionagg() tol = 0.00001 - if oracle: - union = union2 - else: - union = union1 - self.assertEqual(True, union.equals_exact(u1, tol)) - self.assertEqual(True, union.equals_exact(u2, tol)) + self.assertEqual(True, union1.equals_exact(u1, tol) or union2.equals_exact(u1, tol)) + self.assertEqual(True, union1.equals_exact(u2, tol) or union2.equals_exact(u2, tol)) qs = City.objects.filter(name='NotACity') self.assertEqual(None, qs.unionagg(field_name='point')) diff --git a/docs/ref/contrib/gis/install/geolibs.txt b/docs/ref/contrib/gis/install/geolibs.txt index 5e68f52fe6..8372180dd8 100644 --- a/docs/ref/contrib/gis/install/geolibs.txt +++ b/docs/ref/contrib/gis/install/geolibs.txt @@ -15,7 +15,7 @@ Program Description Required :ref:`GDAL ` Geospatial Data Abstraction Library No (but, required for SQLite) 1.9, 1.8, 1.7, 1.6 :ref:`GeoIP ` IP-based geolocation library No 1.4 `PostGIS`__ Spatial extensions for PostgreSQL Yes (PostgreSQL only) 2.0, 1.5, 1.4, 1.3 -`SpatiaLite`__ Spatial extensions for SQLite Yes (SQLite only) 3.0, 2.4, 2.3 +`SpatiaLite`__ Spatial extensions for SQLite Yes (SQLite only) 4.1, 4.0, 3.0, 2.4, 2.3 ======================== ==================================== ================================ ========================== .. @@ -35,6 +35,8 @@ Program Description Required SpatiaLite 2.3.0 2009-04-06 Spatialite 2.4.0 2010-11-14 Spatialite 3.0.0 2011-12-30 + Spatialite 4.0.0 2012-11-25 + Spatialite 4.1.0 2013-06-04 .. admonition:: Install GDAL