API des formulaires GeoDjango

GeoDjango propose quelques champs et composants de formulaires spécialisés afin d’afficher et de modifier visuellement des données géolocalisées sur une carte. Par défaut, ils utilisent des cartes motorisées par OpenLayers, avec une couche de base WMS fournie par la NASA.

Paramètres de champs

En plus des paramètres de champs de formulaires habituels, les champs de formulaires GeoDjango acceptent les paramètres facultatifs suivants.

srid

Field.srid

Il s’agit du code SRID utilisé pour transformer la valeur du champ. Par exemple, si le SRID du composant de carte est différent du SRID utilisé plus généralement par votre application ou base de données, le champ convertit automatiquement les valeurs d’entrée dans ce SRID.

geom_type

Field.geom_type

Cet attribut n’a généralement pas besoin d’être défini ou modifié, car il est automatiquement défini en fonction de la classe du champ. Il correspond au nom d’objet géométrique du standard OpenGIS.

Classes de champs de formulaires

GeometryField

class GeometryField

PointField

class PointField

LineStringField

class LineStringField

PolygonField

class PolygonField

MultiPointField

class MultiPointField

MultiLineStringField

class MultiLineStringField

MultiPolygonField

class MultiPolygonField

GeometryCollectionField

class GeometryCollectionField

Composants de formulaires

Les composants de formulaires GeoDjango permettent d’afficher et de modifier des données géographiques visuellement sur une carte. Notez qu’aucun des composants actuellement disponibles ne prend en charge les objets géométriques 3D, ce qui fait que les champs géométriques se rabattent sur un composant Textarea s’ils ont affaire à de tels objets.

Attributs de composants

Les composants GeoDjango sont basés sur les gabarits, ce qui fait que leurs attributs sont majoritairement différents des autres attributs de composants Django.

BaseGeometryWidget.geom_type

Le type de géométrie OpenGIS, généralement défini par le champ de formulaire.

BaseGeometryWidget.map_height
BaseGeometryWidget.map_width

Hauteur et largeur du composant de carte (la valeur par défaut est 400x600).

Obsolète depuis la version 4.2: Les attributs map_height et map_width sont obsolètes, utilisez plutôt les styles CSS pour dimensionner correctement vos composants de cartes.

BaseGeometryWidget.map_srid

Code SRID utilisé par la carte (la valeur par défaut est 4326).

BaseGeometryWidget.display_raw

Valeur booléenne indiquant si une boîte de saisie de texte affichant la représentation sérialisée de l’objet géométrique en cours est visible, principalement à des fins de débogage (la valeur par défaut est False).

BaseGeometryWidget.supports_3d

Indique si le composant prend en charge l’édition de données 3D (la valeur par défaut est False).

BaseGeometryWidget.template_name

Le gabarit utilisé pour produire le composant de carte.

Vous pouvez transmettre des attributs de composants de la même façon que pour tout autre composant Django. Par exemple :

from django.contrib.gis import forms


class MyGeoForm(forms.Form):
    point = forms.PointField(widget=forms.OSMWidget(attrs={"display_raw": True}))

Classes de composants

BaseGeometryWidget

class BaseGeometryWidget

Il s’agit d’un composant de base abstrait contenant la logique nécessaire aux sous-classes. Il n’est pas possible d’utiliser directement ce composant pour un champ géométrique. Notez que la production de composants GeoDjango est basée sur les gabarits, par l’intermédiaire de l’attribut de classe template_name.

OpenLayersWidget

class OpenLayersWidget

Il s’agit du composant par défaut utilisé par tous les champs de formulaires GeoDjango. template_name contient gis/openlayers.html.

OpenLayersWidget et OSMWidget utilisent le fichier ol.js hébergé sur le réseau de diffusion de contenu cdn.jsdelivr.net. Vous pouvez créer des sous-classes de ces composants afin de placer dans la propriété js de la classe Media interne votre propre version du fichier ol.js (voir Fichiers annexes définis statiquement).

OSMWidget

class OSMWidget

Ce composant utilise une couche de base OpenStreetMap comme base d’affichage pour les objets géographiques. Ses attributs sont :

template_name

gis/openlayers-osm.html

default_lat
default_lon

Les latitude et longitude du centre sont respectivement 47 et 5 par défaut, ce qui correspond à un emplacement à l’est de la France.

default_zoom

Le zoom de carte par défaut est 12.

La note OpenLayersWidget au sujet de l’hébergement des fichiers JavaScript est aussi valable dans ce cas. Voir aussi cette réponse de FAQ au sujet de l’accès https aux tuiles de cartes.

Back to Top