1
0
mirror of https://github.com/django/django.git synced 2025-04-01 12:06:43 +00:00

Removed GeoQuerySet leftovers.

Follow up to a0d166306fbdc41f49e6fadf4ec84b17eb147daa.
This commit is contained in:
Sergey Fedoseev 2017-03-16 18:38:02 +05:00 committed by Tim Graham
parent 6bc4ff36db
commit 1bf5e79394
5 changed files with 13 additions and 104 deletions

View File

@ -16,30 +16,6 @@ class BaseSpatialOperations:
geography = False geography = False
geometry = False geometry = False
area = False
bounding_circle = False
centroid = False
difference = False
distance = False
distance_sphere = False
distance_spheroid = False
envelope = False
force_rhr = False
mem_size = False
num_geom = False
num_points = False
perimeter = False
perimeter3d = False
point_on_surface = False
polygonize = False
reverse = False
scale = False
snap_to_grid = False
sym_difference = False
transform = False
translate = False
union = False
# Aggregates # Aggregates
disallowed_aggregates = () disallowed_aggregates = ()
@ -59,13 +35,6 @@ class BaseSpatialOperations:
'Translate', 'Union', 'Translate', 'Union',
} }
# Serialization
geohash = False
geojson = False
gml = False
kml = False
svg = False
# Constructors # Constructors
from_text = False from_text = False
from_wkb = False from_wkb = False

View File

@ -63,21 +63,7 @@ class OracleOperations(BaseSpatialOperations, DatabaseOperations):
Adapter = OracleSpatialAdapter Adapter = OracleSpatialAdapter
area = 'SDO_GEOM.SDO_AREA'
gml = 'SDO_UTIL.TO_GMLGEOMETRY'
centroid = 'SDO_GEOM.SDO_CENTROID'
difference = 'SDO_GEOM.SDO_DIFFERENCE'
distance = 'SDO_GEOM.SDO_DISTANCE'
extent = 'SDO_AGGR_MBR' extent = 'SDO_AGGR_MBR'
intersection = 'SDO_GEOM.SDO_INTERSECTION'
length = 'SDO_GEOM.SDO_LENGTH'
num_points = 'SDO_UTIL.GETNUMVERTICES'
perimeter = length
point_on_surface = 'SDO_GEOM.SDO_POINTONSURFACE'
reverse = 'SDO_UTIL.REVERSE_LINESTRING'
sym_difference = 'SDO_GEOM.SDO_XOR'
transform = 'SDO_CS.TRANSFORM'
union = 'SDO_GEOM.SDO_UNION'
unionagg = 'SDO_AGGR_UNION' unionagg = 'SDO_AGGR_UNION'
from_text = 'SDO_GEOMETRY' from_text = 'SDO_GEOMETRY'
@ -222,6 +208,8 @@ class OracleOperations(BaseSpatialOperations, DatabaseOperations):
SRID of the field. Specifically, this routine will substitute in the SRID of the field. Specifically, this routine will substitute in the
SDO_CS.TRANSFORM() function call. SDO_CS.TRANSFORM() function call.
""" """
tranform_func = self.spatial_function_name('Transform')
if value is None: if value is None:
return 'NULL' return 'NULL'
@ -230,7 +218,7 @@ class OracleOperations(BaseSpatialOperations, DatabaseOperations):
if hasattr(value, 'as_sql'): if hasattr(value, 'as_sql'):
if transform_value(value, f.srid): if transform_value(value, f.srid):
placeholder = '%s(%%s, %s)' % (self.transform, f.srid) placeholder = '%s(%%s, %s)' % (tranform_func, f.srid)
else: else:
placeholder = '%s' placeholder = '%s'
# No geometry value used for F expression, substitute in # No geometry value used for F expression, substitute in
@ -239,7 +227,7 @@ class OracleOperations(BaseSpatialOperations, DatabaseOperations):
return placeholder % sql return placeholder % sql
else: else:
if transform_value(value, f.srid): if transform_value(value, f.srid):
return '%s(SDO_GEOMETRY(%%s, %s), %s)' % (self.transform, value.srid, f.srid) return '%s(SDO_GEOMETRY(%%s, %s), %s)' % (tranform_func, value.srid, f.srid)
else: else:
return 'SDO_GEOMETRY(%%s, %s)' % f.srid return 'SDO_GEOMETRY(%%s, %s)' % f.srid

View File

@ -153,44 +153,12 @@ class PostGISOperations(BaseSpatialOperations, DatabaseOperations):
prefix = self.geom_func_prefix prefix = self.geom_func_prefix
self.area = prefix + 'Area'
self.bounding_circle = prefix + 'MinimumBoundingCircle'
self.centroid = prefix + 'Centroid'
self.collect = prefix + 'Collect' self.collect = prefix + 'Collect'
self.difference = prefix + 'Difference'
self.distance = prefix + 'Distance'
self.distance_sphere = prefix + 'distance_sphere'
self.distance_spheroid = prefix + 'distance_spheroid'
self.envelope = prefix + 'Envelope'
self.extent = prefix + 'Extent' self.extent = prefix + 'Extent'
self.extent3d = prefix + '3DExtent' self.extent3d = prefix + '3DExtent'
self.force_rhr = prefix + 'ForceRHR'
self.geohash = prefix + 'GeoHash'
self.geojson = prefix + 'AsGeoJson'
self.gml = prefix + 'AsGML'
self.intersection = prefix + 'Intersection'
self.isvalid = prefix + 'IsValid'
self.kml = prefix + 'AsKML'
self.length = prefix + 'Length'
self.length3d = prefix + '3DLength' self.length3d = prefix + '3DLength'
self.length_spheroid = prefix + 'length_spheroid'
self.makeline = prefix + 'MakeLine' self.makeline = prefix + 'MakeLine'
self.makevalid = prefix + 'MakeValid'
self.mem_size = prefix + 'mem_size'
self.num_geom = prefix + 'NumGeometries'
self.num_points = prefix + 'npoints'
self.perimeter = prefix + 'Perimeter'
self.perimeter3d = prefix + '3DPerimeter' self.perimeter3d = prefix + '3DPerimeter'
self.point_on_surface = prefix + 'PointOnSurface'
self.polygonize = prefix + 'Polygonize'
self.reverse = prefix + 'Reverse'
self.scale = prefix + 'Scale'
self.snap_to_grid = prefix + 'SnapToGrid'
self.svg = prefix + 'AsSVG'
self.sym_difference = prefix + 'SymDifference'
self.transform = prefix + 'Transform'
self.translate = prefix + 'Translate'
self.union = prefix + 'Union'
self.unionagg = prefix + 'Union' self.unionagg = prefix + 'Union'
@cached_property @cached_property
@ -324,6 +292,8 @@ class PostGISOperations(BaseSpatialOperations, DatabaseOperations):
not in the SRID of the field. Specifically, this routine will not in the SRID of the field. Specifically, this routine will
substitute in the ST_Transform() function call. substitute in the ST_Transform() function call.
""" """
tranform_func = self.spatial_function_name('Transform')
# Get the srid for this object # Get the srid for this object
if value is None: if value is None:
value_srid = None value_srid = None
@ -337,9 +307,9 @@ class PostGISOperations(BaseSpatialOperations, DatabaseOperations):
if value_srid is None or value_srid == f.srid: if value_srid is None or value_srid == f.srid:
placeholder = '%s' placeholder = '%s'
elif f.geom_type == 'RASTER' and isinstance(value, str): elif f.geom_type == 'RASTER' and isinstance(value, str):
placeholder = '%s((%%s)::raster, %s)' % (self.transform, f.srid) placeholder = '%s((%%s)::raster, %s)' % (tranform_func, f.srid)
else: else:
placeholder = '%s(%%s, %s)' % (self.transform, f.srid) placeholder = '%s(%%s, %s)' % (tranform_func, f.srid)
if hasattr(value, 'as_sql'): if hasattr(value, 'as_sql'):
# If this is an F expression, then we don't really want # If this is an F expression, then we don't really want

View File

@ -38,29 +38,9 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
Adapter = SpatiaLiteAdapter Adapter = SpatiaLiteAdapter
area = 'Area'
centroid = 'Centroid'
collect = 'Collect' collect = 'Collect'
contained = 'MbrWithin'
difference = 'Difference'
distance = 'Distance'
envelope = 'Envelope'
extent = 'Extent' extent = 'Extent'
geojson = 'AsGeoJSON'
gml = 'AsGML'
intersection = 'Intersection'
kml = 'AsKML'
length = 'GLength' # OpenGis defines Length, but this conflicts with an SQLite reserved keyword
makeline = 'MakeLine' makeline = 'MakeLine'
num_geom = 'NumGeometries'
num_points = 'NumPoints'
point_on_surface = 'PointOnSurface'
scale = 'ScaleCoords'
svg = 'AsSVG'
sym_difference = 'SymDifference'
transform = 'Transform'
translate = 'ShiftCoords'
union = 'GUnion' # OpenGis defines Union, but this conflicts with an SQLite reserved keyword
unionagg = 'GUnion' unionagg = 'GUnion'
from_text = 'GeomFromText' from_text = 'GeomFromText'
@ -178,11 +158,13 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
SRID of the field. Specifically, this routine will substitute in the SRID of the field. Specifically, this routine will substitute in the
Transform() and GeomFromText() function call(s). Transform() and GeomFromText() function call(s).
""" """
tranform_func = self.spatial_function_name('Transform')
def transform_value(value, srid): def transform_value(value, srid):
return not (value is None or value.srid == srid) return not (value is None or value.srid == srid)
if hasattr(value, 'as_sql'): if hasattr(value, 'as_sql'):
if transform_value(value, f.srid): if transform_value(value, f.srid):
placeholder = '%s(%%s, %s)' % (self.transform, f.srid) placeholder = '%s(%%s, %s)' % (tranform_func, f.srid)
else: else:
placeholder = '%s' placeholder = '%s'
# No geometry value used for F expression, substitute in # No geometry value used for F expression, substitute in
@ -192,7 +174,7 @@ class SpatiaLiteOperations(BaseSpatialOperations, DatabaseOperations):
else: else:
if transform_value(value, f.srid): if transform_value(value, f.srid):
# Adding Transform() to the SQL placeholder. # Adding Transform() to the SQL placeholder.
return '%s(%s(%%s,%s), %s)' % (self.transform, self.from_text, value.srid, f.srid) return '%s(%s(%%s,%s), %s)' % (tranform_func, self.from_text, value.srid, f.srid)
else: else:
return '%s(%%s,%s)' % (self.from_text, f.srid) return '%s(%%s,%s)' % (self.from_text, f.srid)

View File

@ -24,7 +24,7 @@ class GISFunctionsTests(TestCase):
def test_asgeojson(self): def test_asgeojson(self):
# Only PostGIS and SpatiaLite support GeoJSON. # Only PostGIS and SpatiaLite support GeoJSON.
if not connection.ops.geojson: if not connection.features.has_AsGeoJSON_function:
with self.assertRaises(NotImplementedError): with self.assertRaises(NotImplementedError):
list(Country.objects.annotate(json=functions.AsGeoJSON('mpoly'))) list(Country.objects.annotate(json=functions.AsGeoJSON('mpoly')))
return return