GeoDjango Forms API

GeoDjango proporciona algunos campos de formulario y controles especializados para visualizar y editar datos geolocalizados en un mapa. Por defecto, utilizan mapas impulsados por OpenLayers, con una capa base WMS proporcionada por NASA.

Argumentos del campo

Además de los argumentos de campo de formulario regulares form field arguments, los campos de formulario de GeoDjango admiten los siguientes argumentos opcionales.

srid

Field.srid

Este es el código de SRID al que debe transformarse el valor del campo. Por ejemplo, si el código de SRID del widget de mapa difiere del SRID utilizado generalmente por tu aplicación o base de datos, el campo convierte automáticamente los valores de entrada a ese SRID.

geom_type`

Field.geom_type

No deberías tener que establecer o cambiar ese atributo, ya que debe estar configurado según la clase del campo. Se ajusta al nombre de geometría estándar OpenGIS.

Clases de campos de formulario

GeometryField

class GeometryField[fuente]

Campo de Punto

class PointField[fuente]

Campo de Línea String

class LineStringField[fuente]

Campo de Polígono

class PolygonField[fuente]

Campo de Multipuntos

class MultiPointField[fuente]

Campo de MultiLínea String

class MultiLineStringField[fuente]

Campo de Multipolígono

class MultiPolygonField[fuente]

Campo de Colección Geométrica

class GeometryCollectionField[fuente]

Herramientas de formulario

Las herramientas de formulario GeoDjango te permiten mostrar y editar datos geográficos en una mapa visual. Ten en cuenta que ninguna de las herramientas disponibles actualmente admite geometrías 3D, por lo que los campos de geometría recaerán en utilizar la herramienta Textarea para dichos datos.

Atributos de widget

Los textos traducidos son:

BaseGeometryWidget.geom_type

El tipo de geometría OpenGIS, generalmente establecido por el campo del formulario.

BaseGeometryWidget.map_srid

Código SRID utilizado por la mapa (por defecto es 4326).

BaseGeometryWidget.display_raw

Valor booleano que especifica si un textarea de entrada mostrando la representación serializada de la geometría actual está visible, principalmente con fines de depuración (por defecto es False).

BaseGeometryWidget.supports_3d

Indica si el widget admite la edición de datos 3D (por defecto es False).

BaseGeometryWidget.template_name

La plantilla utilizada para renderizar el widget del mapa.

Puedes pasar atributos de widget de la misma manera que para cualquier otro widget Django. Por ejemplo:

from django.contrib.gis import forms


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

Clases de widgets

BaseGeometryWidget

class BaseGeometryWidget[fuente]

Esta es una clase base abstracta que contiene la lógica necesaria por las subclases. No puedes utilizar directamente este widget para un campo de geometría. Ten en cuenta que la representación de los widgets GeoDjango se basa en una plantilla, identificada por el atributo de clase template_name.

OpenLayersWidget

class OpenLayersWidget[fuente]

Esta es la widget por defecto utilizada por todos los campos formularios GeoDjango. template_name es gis/openlayers.html.

OpenLayersWidget y OSMWidget utilizan el archivo ol.js alojado en la red de entrega de contenido cdn.jsdelivr.net. Puedes heredar estas widgets para especificar tu propia versión del archivo ol.js en la propiedad js de la clase Media interior (ver Activos como definición estática).

OSMWidget

class OSMWidget[fuente]

Esta widget utiliza una capa base de OpenStreetMap para mostrar objetos geográficos. Las atributos son:

template_name

gis/openlayers-osm.html

default_lat
default_lon

La latitud y longitud por defecto del centro son 47 y 5, respectivamente, lo que es un lugar en el este de Francia.

default_zoom

El nivel de zoom por defecto es 12.

La nota sobre alojamiento de archivos JavaScript de la OpenLayersWidget arriba también se aplica aquí. Consulta también esta respuesta del FAQ sobre acceso a mapas con https.