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.
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).id_field
: une chaîne contenant le nom d’un champ à utiliser pour la cléid
de l’objet géographique GeoJSON. Par défaut, c’est la clé primaire des objets qui est utilisée.srid
: le code SRID à utiliser pour le contenu géométrique. Contient4326
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",
"id": 1,
"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.