Fixed #29509 -- Added SpatiaLite support for covers and coveredby lookups.

This commit is contained in:
Sergey Fedoseev 2018-06-21 18:25:31 +05:00 committed by Tim Graham
parent 12018cef83
commit a799dc51b9
5 changed files with 21 additions and 4 deletions

View File

@ -47,6 +47,8 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
'contains': SpatialiteNullCheckOperator(func='Contains'), 'contains': SpatialiteNullCheckOperator(func='Contains'),
'intersects': SpatialiteNullCheckOperator(func='Intersects'), 'intersects': SpatialiteNullCheckOperator(func='Intersects'),
'relate': SpatialiteNullCheckOperator(func='Relate'), 'relate': SpatialiteNullCheckOperator(func='Relate'),
'coveredby': SpatialiteNullCheckOperator(func='CoveredBy'),
'covers': SpatialiteNullCheckOperator(func='Covers'),
# Returns true if B's bounding box completely contains A's bounding box. # Returns true if B's bounding box completely contains A's bounding box.
'contained': SpatialOperator(func='MbrWithin'), 'contained': SpatialOperator(func='MbrWithin'),
# Returns true if A's bounding box completely contains B's bounding box. # Returns true if A's bounding box completely contains B's bounding box.

View File

@ -329,8 +329,8 @@ Lookup Type PostGIS Oracle MySQL [#]_ SpatiaLite
:lookup:`contained` X X X N :lookup:`contained` X X X N
:lookup:`contains <gis-contains>` X X X X B :lookup:`contains <gis-contains>` X X X X B
:lookup:`contains_properly` X B :lookup:`contains_properly` X B
:lookup:`coveredby` X X B :lookup:`coveredby` X X X B
:lookup:`covers` X X B :lookup:`covers` X X X B
:lookup:`crosses` X X C :lookup:`crosses` X X C
:lookup:`disjoint` X X X X B :lookup:`disjoint` X X X X B
:lookup:`distance_gt` X X X N :lookup:`distance_gt` X X X N

View File

@ -179,7 +179,7 @@ PostGIS ``ST_ContainsProperly(poly, geom)``
------------- -------------
*Availability*: `PostGIS <https://postgis.net/docs/ST_CoveredBy.html>`__, *Availability*: `PostGIS <https://postgis.net/docs/ST_CoveredBy.html>`__,
Oracle, PGRaster (Bilateral) Oracle, PGRaster (Bilateral), SpatiaLite
Tests if no point in the geometry field is outside the lookup geometry. Tests if no point in the geometry field is outside the lookup geometry.
[#fncovers]_ [#fncovers]_
@ -188,11 +188,16 @@ Example::
Zipcode.objects.filter(poly__coveredby=geom) Zipcode.objects.filter(poly__coveredby=geom)
.. versionchanged:: 2.2
SpatiaLite support was added.
========== ============================= ========== =============================
Backend SQL Equivalent Backend SQL Equivalent
========== ============================= ========== =============================
PostGIS ``ST_CoveredBy(poly, geom)`` PostGIS ``ST_CoveredBy(poly, geom)``
Oracle ``SDO_COVEREDBY(poly, geom)`` Oracle ``SDO_COVEREDBY(poly, geom)``
SpatiaLite ``CoveredBy(poly, geom)``
========== ============================= ========== =============================
.. fieldlookup:: covers .. fieldlookup:: covers
@ -201,7 +206,7 @@ Oracle ``SDO_COVEREDBY(poly, geom)``
---------- ----------
*Availability*: `PostGIS <https://postgis.net/docs/ST_Covers.html>`__, *Availability*: `PostGIS <https://postgis.net/docs/ST_Covers.html>`__,
Oracle, PGRaster (Bilateral) Oracle, PGRaster (Bilateral), SpatiaLite
Tests if no point in the lookup geometry is outside the geometry field. Tests if no point in the lookup geometry is outside the geometry field.
[#fncovers]_ [#fncovers]_
@ -210,11 +215,16 @@ Example::
Zipcode.objects.filter(poly__covers=geom) Zipcode.objects.filter(poly__covers=geom)
.. versionchanged:: 2.2
SpatiaLite support was added.
========== ========================== ========== ==========================
Backend SQL Equivalent Backend SQL Equivalent
========== ========================== ========== ==========================
PostGIS ``ST_Covers(poly, geom)`` PostGIS ``ST_Covers(poly, geom)``
Oracle ``SDO_COVERS(poly, geom)`` Oracle ``SDO_COVERS(poly, geom)``
SpatiaLite ``Covers(poly, geom)``
========== ========================== ========== ==========================
.. fieldlookup:: crosses .. fieldlookup:: crosses

View File

@ -59,6 +59,9 @@ Minor features
* Added Oracle support for the * Added Oracle support for the
:class:`~django.contrib.gis.db.models.functions.Envelope` function. :class:`~django.contrib.gis.db.models.functions.Envelope` function.
* Added SpatiaLite support for the :lookup:`coveredby` and :lookup:`covers`
lookups.
:mod:`django.contrib.messages` :mod:`django.contrib.messages`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -421,6 +421,8 @@ class GeoLookupTest(TestCase):
('relate', (Point(1, 1), 'T*T***FF*')), ('relate', (Point(1, 1), 'T*T***FF*')),
('same_as', Point(1, 1)), ('same_as', Point(1, 1)),
('exact', Point(1, 1)), ('exact', Point(1, 1)),
('coveredby', Point(1, 1)),
('covers', Point(1, 1)),
] ]
for lookup, geom in queries: for lookup, geom in queries:
with self.subTest(lookup=lookup): with self.subTest(lookup=lookup):