GeoJSON 序列化程序

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

geojson 序列化程序不适用于往返数据,因为它没有等效的反序列化程序。例如,您无法使用 loaddata 重新加载此序列化程序生成的输出。如果您计划重新加载输出的数据,请改用普通的 json 序列化程序

除了 json 序列化程序的选项外,geojson 序列化程序在 serializers.serialize() 调用它时接受以下其他选项

  • geometry_field:一个字符串,包含要用于 GeoJSON 要素的 geometry 键的几何字段的名称。仅当您有一个具有多个几何字段的模型,并且您不想使用第一个已定义的几何字段(默认情况下,将选择第一个几何字段)时才需要此项。
  • id_field:一个包含一个字段名称的字符串,用于 GeoJSON 特征的 id 键。默认情况下,使用对象的初级键。
  • 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",
            "id": 1,
            "geometry": {"type": "Point", "coordinates": [-87.650175, 41.850385]},
            "properties": {"name": "Chicago"},
        }
    ],
}

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

在 Django 4.2 中更改

已添加序列化特征的 id 键。此外,已将 id_field 选项添加到 geojson 序列化器中。

返回顶部