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 オプションが追加されました。

Back to Top