Commit 378f94e3 authored by Claude Paroz's avatar Claude Paroz Committed by Tim Graham
Browse files

[1.7.x] Confirmed Spatialite 4 support

Backport of e62dea9a from master
parent d3e71a6d
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -437,8 +437,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):
@@ -781,9 +784,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
@@ -792,12 +795,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'))

+3 −2
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ Program Description Required
:ref:`GDAL <ref-gdal>`    Geospatial Data Abstraction Library   No (but, required for SQLite)     1.10, 1.9, 1.8, 1.7, 1.6
:ref:`GeoIP <ref-geoip>`  IP-based geolocation library          No                                1.4
`PostGIS`__               Spatial extensions for PostgreSQL     Yes (PostgreSQL only)             2.1, 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
========================  ====================================  ================================  ==========================

..
@@ -37,6 +37,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

@@ -299,4 +301,3 @@ file:
.. [#] Specifically, GeoDjango provides support for the `OGR
       <http://gdal.org/ogr>`_ library, a component of GDAL.
.. [#] See `GDAL ticket #2382 <http://trac.osgeo.org/gdal/ticket/2382>`_.