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)。
欄位 選項可用於限制將出現在 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
字典,並以物件的主鍵作為值。