summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Fedoseev <fedoseev.sergey@gmail.com>2015-12-04 09:52:16 +0500
committerTim Graham <timograham@gmail.com>2015-12-04 08:09:21 -0500
commit25f5b5c19dc23c6c09877c9c652a934e9669573d (patch)
treeb2a3b429032ac56c54ba633a9632a7753f2bea78
parentb61eab18f71f3afb36b3e8cb208a145046b3d8f6 (diff)
Fixed #25853 -- Added support for GeoHash function on SpatiaLite.
-rw-r--r--django/contrib/gis/db/backends/spatialite/operations.py9
-rw-r--r--docs/ref/contrib/gis/db-api.txt2
-rw-r--r--docs/ref/contrib/gis/functions.txt6
-rw-r--r--docs/releases/1.10.txt3
4 files changed, 16 insertions, 4 deletions
diff --git a/django/contrib/gis/db/backends/spatialite/operations.py b/django/contrib/gis/db/backends/spatialite/operations.py
index 485e7ed419..fcf44aa5c0 100644
--- a/django/contrib/gis/db/backends/spatialite/operations.py
+++ b/django/contrib/gis/db/backends/spatialite/operations.py
@@ -1,6 +1,7 @@
"""
SQL functions reference lists:
http://www.gaia-gis.it/spatialite-3.0.0-BETA/spatialite-sql-3.0.0.html
+https://web.archive.org/web/20130407175746/http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.0.0.html
http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.1.html
"""
import re
@@ -95,11 +96,13 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
@cached_property
def unsupported_functions(self):
- unsupported = {'BoundingCircle', 'ForceRHR', 'GeoHash', 'MemSize'}
+ unsupported = {'BoundingCircle', 'ForceRHR', 'MemSize'}
if self.spatial_version < (3, 1, 0):
unsupported.add('SnapToGrid')
if self.spatial_version < (4, 0, 0):
unsupported.update({'Perimeter', 'Reverse'})
+ elif not self.lwgeom_version():
+ unsupported.add('GeoHash')
return unsupported
@cached_property
@@ -212,6 +215,10 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
"Returns the version of the PROJ.4 library used by SpatiaLite."
return self._get_spatialite_func('proj4_version()')
+ def lwgeom_version(self):
+ """Return the version of LWGEOM library used by SpatiaLite."""
+ return self._get_spatialite_func('lwgeom_version()')
+
def spatialite_version(self):
"Returns the SpatiaLite library version as a string."
return self._get_spatialite_func('spatialite_version()')
diff --git a/docs/ref/contrib/gis/db-api.txt b/docs/ref/contrib/gis/db-api.txt
index 45bc18992b..3eebe4e1f8 100644
--- a/docs/ref/contrib/gis/db-api.txt
+++ b/docs/ref/contrib/gis/db-api.txt
@@ -316,7 +316,7 @@ Function PostGIS Oracle MySQL SpatiaLite
:class:`Distance` X X X (≥ 5.6.1) X
:class:`Envelope` X X X
:class:`ForceRHR` X
-:class:`GeoHash` X
+:class:`GeoHash` X X (≥ 4.0, LWGEOM)
:class:`Intersection` X X X (≥ 5.6.1) X
:class:`Length` X X X X
:class:`MemSize` X
diff --git a/docs/ref/contrib/gis/functions.txt b/docs/ref/contrib/gis/functions.txt
index 8fa45efbc7..4ac7a4bc72 100644
--- a/docs/ref/contrib/gis/functions.txt
+++ b/docs/ref/contrib/gis/functions.txt
@@ -266,11 +266,15 @@ GeoHash
.. class:: GeoHash(expression, **extra)
-*Availability*: PostGIS
+*Availability*: PostGIS, SpatiaLite (≥ 4.0, LWGEOM)
Accepts a single geographic field or expression and returns a `GeoHash`__
representation of the geometry.
+.. versionchanged:: 1.10
+
+ SpatiaLite support was added.
+
__ https://en.wikipedia.org/wiki/Geohash
Intersection
diff --git a/docs/releases/1.10.txt b/docs/releases/1.10.txt
index 37bdf61d13..88ef9fd2e6 100644
--- a/docs/releases/1.10.txt
+++ b/docs/releases/1.10.txt
@@ -80,7 +80,8 @@ Minor features
and :attr:`~django.contrib.gis.gdal.GDALBand.std` attributes.
* Added support for the :class:`~django.contrib.gis.db.models.MakeLine`
- aggregate on SpatiaLite.
+ aggregate and :class:`~django.contrib.gis.db.models.functions.GeoHash`
+ function on SpatiaLite.
* Added support for the
:class:`~django.contrib.gis.db.models.functions.Difference`,