Commit 25f5b5c1 authored by Sergey Fedoseev's avatar Sergey Fedoseev Committed by Tim Graham
Browse files

Fixed #25853 -- Added support for GeoHash function on SpatiaLite.

parent b61eab18
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
"""
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()')
+1 −1
Original line number Diff line number Diff line
@@ -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
+5 −1
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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`,