Fixed #27972 -- Made BaseSpatialField.geodetic() use SpatialReference.geographic.

This commit is contained in:
Sergey Fedoseev 2017-04-01 01:02:28 +05:00 committed by Tim Graham
parent e2bd2539b6
commit df8f1d018f
1 changed files with 3 additions and 5 deletions

View File

@ -15,7 +15,7 @@ from django.utils.translation import gettext_lazy as _
_srid_cache = defaultdict(dict) _srid_cache = defaultdict(dict)
SRIDCacheEntry = namedtuple('SRIDCacheEntry', ['units', 'units_name', 'spheroid']) SRIDCacheEntry = namedtuple('SRIDCacheEntry', ['units', 'units_name', 'spheroid', 'geodetic'])
def get_srid_info(srid, connection): def get_srid_info(srid, connection):
@ -45,6 +45,7 @@ def get_srid_info(srid, connection):
units=units, units=units,
units_name=units_name, units_name=units_name,
spheroid='SPHEROID["%s",%s,%s]' % (srs['spheroid'], srs.semi_major, srs.inverse_flattening), spheroid='SPHEROID["%s",%s,%s]' % (srs['spheroid'], srs.semi_major, srs.inverse_flattening),
geodetic=srs.geographic,
) )
return _srid_cache[alias][srid] return _srid_cache[alias][srid]
@ -77,8 +78,6 @@ class BaseSpatialField(Field):
""" """
description = _("The base GIS field.") description = _("The base GIS field.")
empty_strings_allowed = False empty_strings_allowed = False
# Geodetic units.
geodetic_units = ('decimal degree', 'degree')
def __init__(self, verbose_name=None, srid=4326, spatial_index=True, **kwargs): def __init__(self, verbose_name=None, srid=4326, spatial_index=True, **kwargs):
""" """
@ -134,8 +133,7 @@ class BaseSpatialField(Field):
Return true if this field's SRID corresponds with a coordinate Return true if this field's SRID corresponds with a coordinate
system that uses non-projected units (e.g., latitude/longitude). system that uses non-projected units (e.g., latitude/longitude).
""" """
units_name = self.units_name(connection) return get_srid_info(self.srid, connection).geodetic
return units_name.lower() in self.geodetic_units if units_name else self.srid == 4326
def get_placeholder(self, value, compiler, connection): def get_placeholder(self, value, compiler, connection):
""" """