GeoJSONシリアライザー—Djangoドキュメント

提供:Dev Guides
< DjangoDjango/docs/3.2.x/ref/contrib/gis/serializers
移動先:案内検索

GeoJSONシリアライザー

GeoDjangoは、 GeoJSON 形式用の特定のシリアライザーを提供します。 シリアル化の詳細については、 Djangoオブジェクトのシリアル化を参照してください。

geojsonシリアライザーは、同等のデシリアライザーがないため、データのラウンドトリップ用ではありません。 たとえば、:djadmin: `loaddata` を使用して、このシリアライザーによって生成された出力を再ロードすることはできません。 出力されたデータをリロードする場合は、代わりにプレーンな jsonシリアライザーを使用してください。

jsonシリアライザーのオプションに加えて、geojsonシリアライザーは、serializers.serialize()によって呼び出されたときに、次の追加オプションを受け入れます。

  • geometry_field:GeoJSON機能のgeometryキーに使用するジオメトリフィールドの名前を含む文字列。 これは、複数のジオメトリフィールドを持つモデルがあり、最初に定義されたジオメトリフィールドを使用したくない場合にのみ必要です(デフォルトでは、最初のジオメトリフィールドが選択されています)。
  • sridgeometryコンテンツに使用する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',
      'geometry': {
        'type': 'Point',
        'coordinates': [-87.650175, 41.850385]
      },
      'properties': {
        'name': 'Chicago'
      }
    }
  ]
}

fieldsパラメーターが指定されていない場合、geojsonシリアライザーは、オブジェクトの主キーを値としてpkキーをpropertiesディクショナリに追加します。