GeoJSON 序列化程序 — Django 文档

来自菜鸟教程
Django/docs/3.2.x/ref/contrib/gis/serializers
跳转至:导航、​搜索

GeoJSON 序列化器

GeoDjango 为 GeoJSON 格式提供了一个特定的序列化程序。 有关序列化的更多信息,请参阅 序列化 Django 对象

geojson 串行器不适用于往返数据,因为它没有等效的解串器。 例如,您不能使用 :djadmin:`loaddata` 重新加载此序列化程序生成的输出。 如果您打算重新加载输出的数据,请改用普通的 json 序列化程序

除了 json 序列化器的选项之外,geojson 序列化器在被 serializers.serialize() 调用时还接受以下附加选项:

  • geometry_field:包含几何字段名称的字符串,用于 GeoJSON 功能的 geometry 键。 仅当您的模型具有多个几何字段并且您不想使用第一个定义的几何字段(默认情况下,选择第一个几何字段)时才需要这样做。
  • srid:用于 geometry 内容的 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序列化器以对象的主键为值,在properties字典中增加一个pk键。