Kaydet (Commit) a799dc51 authored tarafından Sergey Fedoseev's avatar Sergey Fedoseev Kaydeden (comit) Tim Graham

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

üst 12018cef
...@@ -47,6 +47,8 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations): ...@@ -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.
......
...@@ -329,8 +329,8 @@ Lookup Type PostGIS Oracle MySQL [#]_ SpatiaLite ...@@ -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
......
...@@ -179,7 +179,7 @@ PostGIS ``ST_ContainsProperly(poly, geom)`` ...@@ -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:: ...@@ -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)`` ...@@ -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:: ...@@ -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
......
...@@ -59,6 +59,9 @@ Minor features ...@@ -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`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
...@@ -421,6 +421,8 @@ class GeoLookupTest(TestCase): ...@@ -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):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment