GeoJSON Serializer

GeoDjango provides a specific serializer for the GeoJSON format. See 序列化 Django 对象 for more information on serialization.

The geojson serializer is not meant for round-tripping data, as it has no deserializer equivalent. For example, you cannot use loaddata to reload the output produced by this serializer. If you plan to reload the outputted data, use the plain json serializer instead.

In addition to the options of the json serializer, the geojson serializer accepts the following additional option when it is called by serializers.serialize():

  • geometry_field: A string containing the name of a geometry field to use for the geometry key of the GeoJSON feature. This is only needed when you have a model with more than one geometry field and you don't want to use the first defined geometry field (by default, the first geometry field is picked).
  • id_field: A string containing the name of a field to use for the id key of the GeoJSON feature. By default, the primary key of objects is used.
  • srid: The SRID to use for the geometry content. Defaults to 4326 (WGS 84).

The fields option can be used to limit fields that will be present in the properties key, as it works with all other serializers.

举例:

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"},
        }
    ],
}

When the fields parameter is not specified, the geojson serializer adds a pk key to the properties dictionary with the primary key of the object as the value.

Changed in Django 4.2:

The id key for serialized features was added. Also, the id_field option was added to the geojson serializer.