Сериализация GeoJSON
¶
GeoDjango предоставляет специальный сериализатор в формате GeoJSON . См. Сериализация объектов Django для получения дополнительной информации о сериализации.
Сериализатор geojson
не предназначен для передачи данных туда и обратно, потому что у него нет эквивалента десериализации. Например, вы не можете использовать loaddata
для перезагрузки вывода, созданного этим сериализатором. Если вы считаете, что вам нужно перезагрузить созданные данные, используйте вместо этого простой сериализатор json .
В дополнение к параметрам сериализатора json
, сериализатор geojson
принимает следующие дополнительные параметры при вызове serializers.serialize()
:
geometry_field
: строка, содержащая имя геометрического поля для использования в качестве ключаgeometry
записи GeoJSON. Это необходимо только в том случае, если модель имеет более одного геометрического поля и вы не хотите использовать первое определенное геометрическое поле (по умолчанию выбирается первое геометрическое поле).srid
: код SRID, используемый для геометрического содержимого.4326
По умолчанию содержит (WGS 84).
Параметр fields может использоваться для ограничения полей, которые будут присутствовать в ключе properties
, поскольку он работает с другими сериализаторами.
Пример:
from django.core.serializers import serialize
from my_app.models import City
serialize('geojson', City.objects.all(),
geometry_field='point',
fields=('name',))
Будет отображать:
{
'type': 'FeatureCollection',
'crs': {
'type': 'name',
'properties': {'name': 'EPSG:4326'}
},
'features': [
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [-87.650175, 41.850385]
},
'properties': {
'name': 'Chicago'
}
}
]
}
Если параметр fields
не указан, сериализатор geojson
добавляет ключ pk
в словарь properties
с первичным ключом объекта в качестве значения.