GeoJSON
Сериализатор¶
GeoDjango предоставляет специальный сериализатор для формата GeoJSON. Более подробную информацию о сериализации смотрите в Сериализация объектов Django>.
Сериализатор geojson
не предназначен для обхода данных, поскольку у него нет эквивалента десериализатора. Например, вы не можете использовать loaddata
для перезагрузки вывода, созданного этим сериализатором. Если вы планируете перезагрузить выведенные данные, используйте вместо этого обычный json serializer.
В дополнение к опциям сериализатора json
, сериализатор geojson
принимает следующую дополнительную опцию, когда его вызывает serializers.serialize()
:
geometry_field
: Строка, содержащая имя геометрического поля, которое будет использоваться для ключаgeometry
функции GeoJSON. Это необходимо только в том случае, если у вас есть модель с более чем одним геометрическим полем, и вы не хотите использовать первое определенное геометрическое поле (по умолчанию выбирается первое геометрическое поле).srid
: SRID, который будет использоваться для содержимогоgeometry
. По умолчанию 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
с первичным ключом объекта в качестве значения.