GeoJSON 序列化器

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

geojson 序列化器并非旨在用于数据双向转换,因为它没有对应的反序列化器。例如,您不能使用 loaddata 来重新加载此序列化器生成的输出。如果您计划重新加载输出数据,请改用普通的 json 序列化器

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

  • geometry_field:包含要用于 GeoJSON 特征的 geometry 键的几何字段名称的字符串。只有当您的模型具有多个几何字段并且您不想使用第一个定义的几何字段时,才需要此选项(默认情况下,选择第一个几何字段)。

  • id_field:包含要用于 GeoJSON 特征的 id 键的字段名称的字符串。默认情况下,使用对象的 Primary Key。

  • 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 序列化器会向 properties 字典添加一个 pk 键,其值为对象的 Primary Key。

返回顶部