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

This commit is contained in:
Denis Rouzaud 2023-10-06 05:25:32 +02:00 committed by GitHub
parent e47298aec4
commit 96e7a752b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 3 deletions

View File

@ -195,8 +195,7 @@ class AsGeoJSON(GeoFunc):
options = 1 options = 1
elif crs: elif crs:
options = 2 options = 2
if options: expressions.append(options)
expressions.append(options)
super().__init__(*expressions, **extra) super().__init__(*expressions, **extra)
def as_oracle(self, compiler, connection, **extra_context): 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 django.test import TestCase, skipUnlessDBFeature
from ..utils import FuncTestMixin 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): class GISFunctionsTests(FuncTestMixin, TestCase):
@ -119,6 +119,25 @@ class GISFunctionsTests(FuncTestMixin, TestCase):
chicago_json, 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") @skipUnlessDBFeature("has_AsGML_function")
def test_asgml(self): def test_asgml(self):
# Should throw a TypeError when trying to obtain GML from a # Should throw a TypeError when trying to obtain GML from a