From efcc0f25a77120f728379a594af3e256e771b7f8 Mon Sep 17 00:00:00 2001 From: Stefan Brand Date: Fri, 17 Feb 2023 09:44:17 +0100 Subject: [PATCH] [4.2.x] Fixed #34302 -- Fixed SpatialReference.srid for objects without top-level authority. Backport of eacf6b73d8eace004f840bd9b80c8c671caab9da from main --- django/contrib/gis/gdal/srs.py | 2 +- tests/gis_tests/gdal_tests/test_srs.py | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/django/contrib/gis/gdal/srs.py b/django/contrib/gis/gdal/srs.py index 4df44190264..50fc41c1fda 100644 --- a/django/contrib/gis/gdal/srs.py +++ b/django/contrib/gis/gdal/srs.py @@ -208,7 +208,7 @@ class SpatialReference(GDALBase): def srid(self): "Return the SRID of top-level authority, or None if undefined." try: - return int(self.attr_value("AUTHORITY", 1)) + return int(self.auth_code(target=None)) except (TypeError, ValueError): return None diff --git a/tests/gis_tests/gdal_tests/test_srs.py b/tests/gis_tests/gdal_tests/test_srs.py index 293144aa8e5..9bfe5680dab 100644 --- a/tests/gis_tests/gdal_tests/test_srs.py +++ b/tests/gis_tests/gdal_tests/test_srs.py @@ -102,7 +102,10 @@ srlist = ( ang_name="Degree", lin_units=0.3048006096012192, ang_units=0.0174532925199, - auth={"PROJCS": (None, None)}, + auth={ + None: (None, None), # Top-level authority. + "PROJCS": (None, None), + }, attr=( ("PROJCS|GeOgCs|spheroid", "GRS 1980"), (("projcs", 9), "UNIT"), @@ -391,3 +394,10 @@ class SpatialRefTest(SimpleTestCase): self.assertIn('DATUM["D_North_American_1983"', srs.wkt) srs.from_esri() self.assertIn('DATUM["North_American_Datum_1983"', srs.wkt) + + def test_srid(self): + """The srid property returns top-level authority code.""" + for s in srlist: + if hasattr(s, "epsg"): + srs = SpatialReference(s.wkt) + self.assertEqual(srs.srid, s.epsg)