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
辞書に追加します。