Spec-Zone.ru › Django 1.11

API форм GeoDjango

GeoDjango предоставляет специализированные поля форм и виджеты для визуального отображения и редактирования геолокационных данных на карте. По умолчанию они используют карты на основе OpenLayers с базовым слоем WMS, предоставляемым NASA.

Аргументы полей

В дополнение к обычным аргументам полей форм, поля форм GeoDjango принимают следующие необязательные аргументы.

srid

Field.srid

Это код SRID, к которому должно быть преобразовано значение поля. Например, если SRID виджета карты отличается от SRID, используемого в вашей приложении или базе данных, поле автоматически преобразует входные значения в этот SRID.

geom_type

Field.geom_type

Как правило, вам не нужно устанавливать или изменять этот атрибут, который должен быть настроен в зависимости от класса поля. Он соответствует стандартному имени геометрии OpenGIS.

Классы полей форм

GeometryField

class GeometryField

PointField

class PointField

LineStringField

class LineStringField

PolygonField

class PolygonField

MultiPointField

class MultiPointField

MultiLineStringField

class MultiLineStringField

MultiPolygonField

class MultiPolygonField

GeometryCollectionField

class GeometryCollectionField

Виджеты форм

Виджеты форм GeoDjango позволяют отображать и редактировать географические данные на визуальной карте. Обратите внимание, что ни один из доступных виджетов не поддерживает 3D-геометрии, поэтому поля геометрии будут использовать простой виджет Textarea для таких данных.

Атрибуты виджетов

Виджеты GeoDjango основаны на шаблонах, поэтому их атрибуты в основном отличаются от атрибутов других виджетов Django.

BaseGeometryWidget.geom_type

Тип геометрии OpenGIS, как правило, задается полем формы.

BaseGeometryWidget.map_height
BaseGeometryWidget.map_width

Высота и ширина карты виджета (по умолчанию 400x600).

BaseGeometryWidget.map_srid

Код SRID, используемый картой (по умолчанию 4326).

BaseGeometryWidget.display_raw

Булевое значение, указывающее, отображается ли текстовое поле ввода, показывающее сериализованное представление текущей геометрии, в основном для отладки (по умолчанию False).

BaseGeometryWidget.supports_3d

Указывает, поддерживает ли виджет редактирование 3D-данных (по умолчанию False).

BaseGeometryWidget.template_name

Шаблон, используемый для рендеринга виджета карты.

Вы можете передавать атрибуты виджета таким же образом, как и для любого другого виджета Django. Например:

from django.contrib.gis import forms

class MyGeoForm(forms.Form):
    point = forms.PointField(widget=
        forms.OSMWidget(attrs={'map_width': 800, 'map_height': 500}))

Классы виджетов

BaseGeometryWidget

class BaseGeometryWidget

Это абстрактный базовый виджет, содержащий логику, необходимую для подклассов. Вы не можете напрямую использовать этот виджет для поля геометрии. Обратите внимание, что отображение виджетов GeoDjango основано на шаблоне, определенном атрибутом класса template_name.

OpenLayersWidget

class OpenLayersWidget

Это виджет по умолчанию, используемый всеми полями форм GeoDjango. template_name — gis/openlayers.html.

OpenLayersWidget и OSMWidget используют файл openlayers.js, размещенный на cdnjs.cloudflare.com сети доставки контента. Вы можете подклассировать эти виджеты, чтобы указать свою собственную версию файла OpenLayers.js созданной для ваших нужд в свойстве js внутреннего класса Media (см. Ассеты как статическое определение).

Изменено в Django 1.11:

Старые версии используют OpenLayers.js из openlayers.org, что непригодно для использования в производстве, так как не гарантирует бесперебойной работы и работает на медленном сервере.

Также виджет теперь использует OpenLayers 3 вместо OpenLayers 2.

OSMWidget

class OSMWidget

Этот виджет использует базовый слой OpenStreetMap для отображения географических объектов. Атрибуты:

template_name

gis/openlayers-osm.html

default_lat
default_lon

По умолчанию центральная широта и долгота — 47 и 5 соответственно, что является местоположением во Франции.

Примечание о размещении файлов JavaScript, приведенное выше для OpenLayersWidget, также относится сюда. Также см. этот ответ FAQ об доступе https к плиткам карты.

Изменено в Django 1.11:

OpenLayers 2.x был исключен в пользу OpenLayers 3. Если вы расширяете шаблон gis/openlayers-osm.html , проверьте свой настраиваемый шаблон.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.11/ref/contrib/gis/forms-api/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API