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。