From 918e7a2c766e67144f1e2bfcc029abe16ce28f54 Mon Sep 17 00:00:00 2001 From: Jeremy Thompson Date: Mon, 9 Dec 2024 12:55:27 -0500 Subject: [PATCH] Fixed #35989 -- Removed crs from GeoJSON serializer. Specification of coordinate reference systems (crs) was removed from the GeoJSON spec in 2016. https://datatracker.ietf.org/doc/html/rfc7946#appendix-B.1 --- django/contrib/gis/serializers/geojson.py | 6 +----- docs/ref/contrib/gis/serializers.txt | 1 - tests/gis_tests/geoapp/test_serializers.py | 2 ++ 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/django/contrib/gis/serializers/geojson.py b/django/contrib/gis/serializers/geojson.py index 072ee9dc48..187af26eed 100644 --- a/django/contrib/gis/serializers/geojson.py +++ b/django/contrib/gis/serializers/geojson.py @@ -25,11 +25,7 @@ class Serializer(JSONSerializer): def start_serialization(self): self._init_options() self._cts = {} # cache of CoordTransform's - self.stream.write( - '{"type": "FeatureCollection", ' - '"crs": {"type": "name", "properties": {"name": "EPSG:%d"}},' - ' "features": [' % self.srid - ) + self.stream.write('{"type": "FeatureCollection", "features": [') def end_serialization(self): self.stream.write("]}") diff --git a/docs/ref/contrib/gis/serializers.txt b/docs/ref/contrib/gis/serializers.txt index e62b6ef306..2ce2e22c33 100644 --- a/docs/ref/contrib/gis/serializers.txt +++ b/docs/ref/contrib/gis/serializers.txt @@ -46,7 +46,6 @@ Would output:: { "type": "FeatureCollection", - "crs": {"type": "name", "properties": {"name": "EPSG:4326"}}, "features": [ { "type": "Feature", diff --git a/tests/gis_tests/geoapp/test_serializers.py b/tests/gis_tests/geoapp/test_serializers.py index 40a4f47487..d57d221add 100644 --- a/tests/gis_tests/geoapp/test_serializers.py +++ b/tests/gis_tests/geoapp/test_serializers.py @@ -23,6 +23,8 @@ class GeoJSONSerializerTests(TestCase): def test_serialization_base(self): geojson = serializers.serialize("geojson", City.objects.order_by("name")) geodata = json.loads(geojson) + self.assertEqual(list(geodata.keys()), ["type", "features"]) + self.assertEqual(geodata["type"], "FeatureCollection") self.assertEqual(len(geodata["features"]), len(City.objects.all())) self.assertEqual(geodata["features"][0]["geometry"]["type"], "Point") self.assertEqual(geodata["features"][0]["properties"]["name"], "Chicago")