GeoJSON Сериализатор¶
GeoDjango предоставляет специальный сериализатор для формата GeoJSON. Более подробную информацию о сериализации смотрите в Сериализация объектов Django>.
Сериализатор geojson не предназначен для обхода данных, поскольку у него нет эквивалента десериализатора. Например, вы не можете использовать loaddata для перезагрузки вывода, созданного этим сериализатором. Если вы планируете перезагрузить выведенные данные, используйте вместо этого обычный json serializer.
В дополнение к опциям сериализатора json, сериализатор geojson принимает следующую дополнительную опцию, когда его вызывает serializers.serialize():
geometry_field: Строка, содержащая имя геометрического поля, которое будет использоваться для ключаgeometryфункции GeoJSON. Это необходимо только в том случае, если у вас есть модель с более чем одним геометрическим полем, и вы не хотите использовать первое определенное геометрическое поле (по умолчанию выбирается первое геометрическое поле).id_field: Строка, содержащая имя поля, используемого в качествеidключа 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",
"features": [
{
"type": "Feature",
"id": 1,
"geometry": {"type": "Point", "coordinates": [-87.650175, 41.850385]},
"properties": {"name": "Chicago"},
}
],
}
Если параметр fields не указан, сериализатор geojson добавляет ключ pk в словарь properties с первичным ключом объекта в качестве значения.