Kaydet (Commit) 23fbd3ff authored tarafından Nicolas Noé's avatar Nicolas Noé Kaydeden (comit) Tim Graham

Fixed #26512 -- Added tests for SpatialRefSysMixin.get_units().

üst 5402f3ab
...@@ -164,15 +164,14 @@ class SpatialRefSysMixin(object): ...@@ -164,15 +164,14 @@ class SpatialRefSysMixin(object):
@classmethod @classmethod
def get_units(cls, wkt): def get_units(cls, wkt):
""" """
Class method used by GeometryField on initialization to Return a tuple of (unit_value, unit_name) for the given WKT without
retrieve the units on the given WKT, without having to use using any of the database fields.
any of the database fields.
""" """
if gdal.HAS_GDAL: if gdal.HAS_GDAL:
return gdal.SpatialReference(wkt).units return gdal.SpatialReference(wkt).units
else: else:
m = cls.units_regex.match(wkt) m = cls.units_regex.match(wkt)
return m.group('unit'), m.group('unit_name') return float(m.group('unit')), m.group('unit_name')
@classmethod @classmethod
def get_spheroid(cls, wkt, string=True): def get_spheroid(cls, wkt, string=True):
......
import re
import unittest import unittest
from django.contrib.gis.gdal import HAS_GDAL from django.contrib.gis.gdal import HAS_GDAL
from django.db import connection from django.db import connection
from django.test import skipUnlessDBFeature from django.test import mock, skipUnlessDBFeature
from django.utils import six from django.utils import six
from .utils import SpatialRefSys, oracle, postgis, spatialite from .utils import SpatialRefSys, oracle, postgis, spatialite
...@@ -20,6 +21,18 @@ test_srs = ({ ...@@ -20,6 +21,18 @@ test_srs = ({
# From proj's "cs2cs -le" and Wikipedia (semi-minor only) # From proj's "cs2cs -le" and Wikipedia (semi-minor only)
'ellipsoid': (6378137.0, 6356752.3, 298.257223563), 'ellipsoid': (6378137.0, 6356752.3, 298.257223563),
'eprec': (1, 1, 9), 'eprec': (1, 1, 9),
'wkt': re.sub('[\s+]', '', """
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]
""")
}, { }, {
'srid': 32140, 'srid': 32140,
'auth_name': ('EPSG', False), 'auth_name': ('EPSG', False),
...@@ -43,6 +56,19 @@ test_srs = ({ ...@@ -43,6 +56,19 @@ test_srs = ({
@skipUnlessDBFeature("has_spatialrefsys_table") @skipUnlessDBFeature("has_spatialrefsys_table")
class SpatialRefSysTest(unittest.TestCase): class SpatialRefSysTest(unittest.TestCase):
def test_get_units(self):
epsg_4326 = next(f for f in test_srs if f['srid'] == 4326)
unit, unit_name = SpatialRefSys().get_units(epsg_4326['wkt'])
self.assertEqual(unit_name, 'degree')
self.assertAlmostEqual(unit, 0.01745329251994328)
@mock.patch('django.contrib.gis.gdal.HAS_GDAL', False)
def test_get_units_without_gdal(self):
epsg_4326 = next(f for f in test_srs if f['srid'] == 4326)
unit, unit_name = SpatialRefSys().get_units(epsg_4326['wkt'])
self.assertEqual(unit_name, 'degree')
self.assertAlmostEqual(unit, 0.01745329251994328)
def test_retrieve(self): def test_retrieve(self):
""" """
Test retrieval of SpatialRefSys model objects. Test retrieval of SpatialRefSys model objects.
......
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