Sérialisation GeoJSON

GeoDjango fournit un sérialiseur spécifique au format GeoJSON. Voir Sérialisation d’objets Django pour plus d’informations sur la sérialisation.

La bibliothèque GDAL est requise si l’une des géométries sérialisées a besoin de transformations de coordonnées (c’est-à-dire si le système de référence spatial de l’objet géométrique diffère de l’option de sérialisation srid).

Changed in Django 1.9:

Le sérialiseur GeoJSON n’a plus besoin de GDAL si tous les éléments géométriques se trouvent dans le même système de coordonnées que l’option de sérialisation srid.

Le sérialiseur geojson n’est pas conçu pour des allers-retours de données, car il n’a pas d’équivalent de désérialisation. Par exemple, vous ne pouvez pas utiliser loaddata pour recharger le résultat produit par ce sérialiseur. Si vous pensez devoir recharger les données produites, utilisez plutôt le sérialiseur json simple.

En plus des options du sérialiseur json, le sérialiseur geojson accepte l’option supplémentaire suivante lorsqu’il est appelé par serializers.serialize():

  • geometry_field: une chaîne contenant le nom d’un champ géométrique à utiliser pour la clé geometry de l’entrée GeoJSON. C’est uniquement nécessaire si un modèle possède plus d’un champ géométrique et que vous ne voulez pas utiliser le premier champ géométrique défini (par défaut, le premier champ géométrique est choisi).

  • srid: le code SRID à utiliser pour le contenu géométrique. Contient 4326 par défaut (WGS 84).

L’option fields peut être utilisée pour limiter les champs qui seront présents dans la clé properties, comme cela fonctionne avec d’autres sérialiseurs.

Exemple :

from django.core.serializers import serialize
from my_app.models import City

serialize('geojson', City.objects.all(),
          geometry_field='point',
          fields=('name',))

Afficherait :

{
  'type': 'FeatureCollection',
  'crs': {
    'type': 'name',
    'properties': {'name': 'EPSG:4326'}
  },
  'features': [
    {
      'type': 'Feature',
      'geometry': {
        'type': 'Point',
        'coordinates': [-87.650175, 41.850385]
      },
      'properties': {
        'name': 'Chicago'
      }
    }
  ]
}

Lorsque le paramètre fields n’est pas précisé, le sérialiseur geojson ajoute une clé pk au dictionnaire properties avec comme valeur la clé primaire de l’objet.

Changed in Django 1.10:

La clé pk a été ajoutée au dictionnaire properties.

Back to Top