sort geojson
This commit is contained in:
parent
e6cbe5bf27
commit
f0eec51d45
3 changed files with 14 additions and 2 deletions
|
@ -3,6 +3,8 @@ from rest_framework import serializers
|
|||
from rest_framework.exceptions import ValidationError
|
||||
from shapely.geometry import mapping, shape
|
||||
|
||||
from ..mapdata.utils import sort_geojson
|
||||
|
||||
|
||||
class GeometryField(serializers.DictField):
|
||||
"""
|
||||
|
@ -13,7 +15,7 @@ class GeometryField(serializers.DictField):
|
|||
}
|
||||
|
||||
def to_representation(self, obj):
|
||||
geojson = mapping(obj)
|
||||
geojson = sort_geojson(mapping(obj))
|
||||
return super().to_representation(geojson)
|
||||
|
||||
def to_internal_value(self, data):
|
||||
|
|
|
@ -3,6 +3,8 @@ import json
|
|||
from django.db import models
|
||||
from shapely.geometry import mapping, shape
|
||||
|
||||
from .utils import sort_geojson
|
||||
|
||||
|
||||
class GeometryField(models.TextField):
|
||||
def from_db_value(self, value, expression, connection, context):
|
||||
|
@ -14,4 +16,4 @@ class GeometryField(models.TextField):
|
|||
return shape(json.loads(value))
|
||||
|
||||
def get_prep_value(self, value):
|
||||
return json.dumps(mapping(value))
|
||||
return json.dumps(sort_geojson(mapping(value)))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import json
|
||||
from collections import OrderedDict
|
||||
|
||||
|
||||
def _preencode(data, magic_marker):
|
||||
|
@ -27,3 +28,10 @@ def json_encoder_reindent(method, data, *args, **kwargs):
|
|||
else:
|
||||
magic_marker = magic_marker.encode()
|
||||
return result.replace(b'"'+magic_marker, b'').replace(magic_marker+b'"', b'')
|
||||
|
||||
|
||||
def sort_geojson(data):
|
||||
return OrderedDict((
|
||||
('type', data['type']),
|
||||
('coordinates', data['coordinates']),
|
||||
))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue