# Django 5.0.9.dev20240806133106 ドキュメント

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

Changed in Django 4.2:

シリアライズ機能に `id` キーが追加されました。また、 `geojson` シリアライザに `id_field` オプションが追加されました。