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
序列化器中。