1
0
mirror of https://github.com/django/django.git synced 2025-04-07 06:56:40 +00:00

[5.0.x] Fixed #34882 -- Fixed no options in AsGeoJSON() for geometries in non-default CRS.

Backport of 96e7a752b6c44a84e18d82d37524c1df64b32e12 from main
This commit is contained in:
Denis Rouzaud 2023-10-06 05:25:32 +02:00 committed by Mariusz Felisiak
parent 0e34ac8981
commit df3f97a7d6
2 changed files with 21 additions and 3 deletions

View File

@ -195,8 +195,7 @@ class AsGeoJSON(GeoFunc):
options = 1
elif crs:
options = 2
if options:
expressions.append(options)
expressions.append(options)
super().__init__(*expressions, **extra)
def as_oracle(self, compiler, connection, **extra_context):

View File

@ -11,7 +11,7 @@ from django.db.models import IntegerField, Sum, Value
from django.test import TestCase, skipUnlessDBFeature
from ..utils import FuncTestMixin
from .models import City, Country, CountryWebMercator, State, Track
from .models import City, Country, CountryWebMercator, ManyPointModel, State, Track
class GISFunctionsTests(FuncTestMixin, TestCase):
@ -119,6 +119,25 @@ class GISFunctionsTests(FuncTestMixin, TestCase):
chicago_json,
)
@skipUnlessDBFeature("has_AsGeoJSON_function")
def test_asgeojson_option_0(self):
p1 = Point(1, 1, srid=4326)
p2 = Point(2, 2, srid=4326)
obj = ManyPointModel.objects.create(
point1=p1,
point2=p2,
point3=p2.transform(3857, clone=True),
)
self.assertJSONEqual(
ManyPointModel.objects.annotate(geojson=functions.AsGeoJSON("point3"))
.get(pk=obj.pk)
.geojson,
# GeoJSON without CRS.
json.loads(
'{"type":"Point","coordinates":[222638.98158655,222684.20850554]}'
),
)
@skipUnlessDBFeature("has_AsGML_function")
def test_asgml(self):
# Should throw a TypeError when trying to obtain GML from a