GeoJSON 序列化器

GeoDjango 为 GeoJSON 格式提供了专用的序列化器。有关序列化的更多信息,请参阅 序列化 Django 对象

geojson 序列化器不适用于数据的往返,因为它没有相应的反序列化器。例如,您不能使用 loaddata 来重新加载该序列化器生成的输出。如果您计划重新加载输出的数据,请改用普通的 json 序列化器

除了 json 序列化器的选项外,当通过 serializers.serialize() 调用 geojson 序列化器时,还接受以下额外的选项:

  • geometry_field:一个包含要用于 GeoJSON 特征的 geometry 键的几何字段名称的字符串。只有当您的模型具有多个几何字段并且不希望使用第一个定义的几何字段时才需要此选项(默认情况下,会选择第一个几何字段)。
  • id_field:一个包含要用于 GeoJSON 特征的 id 键的字段名称的字符串。默认情况下,将使用对象的主键。
  • srid:用于 geometry 内容的 SRID。默认值为 4326(WGS 84)。

fields 选项可用于限制出现在 properties 键中的字段,与所有其他序列化器一样。

举例:

  1. from django.core.serializers import serialize
  2. from my_app.models import City
  3. serialize("geojson", City.objects.all(), geometry_field="point", fields=["name"])

将会输出:

  1. {
  2. "type": "FeatureCollection",
  3. "crs": {"type": "name", "properties": {"name": "EPSG:4326"}},
  4. "features": [
  5. {
  6. "type": "Feature",
  7. "id": 1,
  8. "geometry": {"type": "Point", "coordinates": [-87.650175, 41.850385]},
  9. "properties": {"name": "Chicago"},
  10. }
  11. ],
  12. }

当未指定 fields 参数时,geojson 序列化器会将一个 pk 键添加到 properties 字典中,其值为对象的主键。

Changed in Django 4.2:

已添加序列化特征的 id 键。此外,还向 geojson 序列化器添加了 id_field 选项。