API форм GeoDjango

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

Параметры поля

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

srid

Field.srid

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

geom_type

Field.geom_type

Этот атрибут обычно не требуется устанавливать или изменять, поскольку он устанавливается автоматически в зависимости от класса поля. Он соответствует названию геометрического объекта стандарта OpenGIS.

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

GeometryField

класс GeometryField

PointField

класс PointField

LineStringField

класс LineStringField

PolygonField

класс PolygonField

MultiPointField

класс MultiPointField

MultiLineStringField

класс MultiLineStringField

MultiPolygonField

класс MultiPolygonField

GeometryCollectionField

класс GeometryCollectionField

Компоненты формы

Компоненты формы GeoDjango позволяют визуально просматривать и редактировать географические данные на карте. Обратите внимание, что ни один из доступных в настоящее время компонентов не поддерживает трехмерные геометрические объекты, поэтому геометрические поля возвращаются к компоненту, 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

класс BaseGeometryWidget

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

OpenLayersWidget

класс OpenLayersWidget

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

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

OSMWidget

класс OSMWidget

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

template_name

gis/openlayers-osm.html

default_lat
default_lon

Широта и долгота центра соответственно 47 и 5 по умолчанию, что соответствует местоположению на востоке Франции.

default_zoom

По умолчанию масштаб карты равен 12 .

Примечание OpenLayersWidget о размещении файлов JavaScript также применимо в этом случае. См. Также ответ на часто задаваемые вопросы о доступе к https фрагментам карты .

Copyright ©2020 All rights reserved