Сериализация 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 с первичным ключом объекта в качестве значения.

Copyright ©2020 All rights reserved