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
键中的字段,与所有其他序列化器一样。
举例:
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
字典中,其值为对象的主键。