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