API форм GeoDjango¶
GeoDjango предоставляет несколько специализированных полей форм и виджетов для визуального отображения и редактирования геолокализованных данных на карте. По умолчанию они используют карты на базе OpenLayers, а базовый слой WMS предоставлен NASA.
Аргументы поля¶
В дополнение к обычным аргументам полей формы, поля формы GeoDjango принимают следующие необязательные аргументы.
срид¶
- Field.srid¶
Это код SRID, в который должно быть преобразовано значение поля. Например, если SRID виджета карты отличается от SRID, обычно используемого вашим приложением или базой данных, поле автоматически преобразует входные значения в этот SRID.
geom_type¶
- Field.geom_type¶
You generally shouldn’t have to set or change that attribute which should be setup depending on the field class. It matches the OpenGIS standard geometry name.
Классы полей формы¶
Поле Геометрии¶
- class GeometryField¶
PointField¶
- class PointField¶
LineStringField¶
- class LineStringField¶
ПолигонФилд¶
- class PolygonField¶
МультиПоинтфилд¶
- class MultiPointField¶
MultiLineStringField¶
- class MultiLineStringField¶
Мультиполигонфилд¶
- class MultiPolygonField¶
GeometryCollectionField¶
- class GeometryCollectionField¶
Виджеты форм¶
Виджеты форм GeoDjango позволяют отображать и редактировать географические данные на визуальной карте. Обратите внимание, что ни один из доступных на данный момент виджетов не поддерживает 3D-геометрию, поэтому поля геометрии будут использовать виджет Textarea для таких данных.
Атрибуты виджета¶
Виджеты GeoDjango основаны на шаблонах, поэтому их атрибуты в основном отличаются от других атрибутов виджетов Django.
- BaseGeometryWidget.geom_type¶
Тип геометрии OpenGIS, обычно задаваемый полем формы.
- BaseGeometryWidget.map_height¶
- BaseGeometryWidget.map_width¶
Height and width of the widget map (default is 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.OpenLayersWidgetandOSMWidgetuse theopenlayers.jsfile hosted on thecdnjs.cloudflare.comcontent-delivery network. You can subclass these widgets in order to specify your own version of theOpenLayers.jsfile in thejsproperty of the innerMediaclass (see Определение статических файлов).
OSMWidget
- class OSMWidget¶
Этот виджет использует базовый слой OpenStreetMap для отображения географических объектов. Атрибуты:
- template_name¶
gis/openlayers-osm.html
- default_lat¶
- default_lon¶
Центральная широта и долгота по умолчанию — «47» и «5» соответственно, это местоположение на востоке Франции.
- default_zoom¶
Масштаб карты по умолчанию — «12».
Примечание
OpenLayersWidgetо хостинге файлов JavaScript, приведенное выше, также применимо и здесь. См. также ответ на часто задаваемые вопросы о доступе по протоколу https к фрагментам карты.