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',
  'crs': {
    'type': 'name',
    'properties': {'name': 'EPSG:4326'}
  },
  'features': [
    {
      'type': 'Feature',
      'id': 1,
      'geometry': {
        'type': 'Point',
        'coordinates': [-87.650175, 41.850385]
      },
      'properties': {
        'name': 'Chicago'
      }
    }
  ]
}

Если параметр fields не указан, сериализатор geojson добавляет ключ pk в словарь properties с первичным ключом объекта в качестве значения.

Changed in Django 4.2:

Был добавлен ключ id для сериализованных функций. Также в сериализатор id_field была добавлена опция geojson.

Вернуться на верх