Важно
Перевод - это работа сообщества : ссылка:Вы можете присоединиться. Эта страница в настоящее время переводится |прогресс перевода|.
5.3. Урок: Формы
При добавлении новых данных с помощью оцифровки появляется диалоговое окно, позволяющее заполнить атрибуты для этой функции. Однако этот диалоговое окно по умолчанию выглядит не очень приятно. Это может вызвать проблему для удобства использования, особенно если вам надо создать большие наборы данных или если вы хотите, чтобы другие люди помогали вам оцифровывать, а они считают, что формы по умолчанию запутаны.
К счастью, QGIS позволяет создавать собственные диалоговые окна для слоя. На этом занятии показывается как это сделать.
Цель этого занятия: создать форму для слоя.
5.3.1. ★☆☆ Follow Along: Использование функции проектирования форм в QGIS
Выберите слой
roadsна панели Layers.Переходите в режим редактирования, как и ранее.
Откройте таблицы атрибутов слоя
roadsдорог.Кликните правой кнопкой мыши любую ячейку в таблице. Появится короткое меню, включающее Open form.
Кликните его, чтобы увидеть форму, которую QGIS создает для этого уровня.
Очевидно, что было бы неплохо делать это, глядя на карту, вместо того, чтобы постоянно искать конкретную улицу в таблице атрибутов Attribute Table.
Выберите слой
roadsна панели Layers.С помощью инструмента Идентификация функций Identify Features кликните любую улицу на карте.
Панель Identify Results откроется, на которой отображается «дерево» значений полей и другая общая информация о выбранной функции.
В верхней части панели в меню |опции| Настройки идентификации установите флажок Автоматически открывать форму для результатов по одному признаку.
Теперь кликните еще раз на любой улице на карте. В предыдущем диалоговом окне Identify Results отображается знакомая форма:
Each time you click on a single feature with the
Identify Features tool,
its form pops up as long as the Auto open form is
checked.
5.3.2. ★☆☆ Попробуйте себя: Использование формы для редактирования значений
Если вы находитесь в режиме редактирования, эту форму можно использовать для редактирования атрибутов функции.
Активировать режим редактирования (если он еще не активирован).
С помощью инструмента Определить функции
Identify Features кликните главную улицу, проходящую через Swellendam Swellendam:
Редактируйте его значение highway как
secondary.Выходите из режима редактирования и сохраняйте изменения.
Откройте таблицу атрибутов Attribute Table и отметьте что значение было обновлено в таблице атрибутов и, следовательно, в исходных данных.
5.3.3. ★★☆ Follow Along: Установка типов полей формы
Приятно редактировать вещи с помощью формы, но все равно надо вводить все вручную. К счастью, формы имеют различные виды так называемых виджетов, которые позволяют редактировать данные различными способами.
Open the
roadslayer’s Properties…Переедите на вкладку Fields. Вы увидите это:
Перейдите на вкладку Attributes Form. Вы увидите это:
Кликните на ряд
onewayи выберите Checkbox как Widget Type в списке вариантов:
Кликните OK.
Переход в режим редактирования (если слой
roadsне находится уже в режим редактирования)Кликните на ту же главную дорогу, которую вы выбрали ранее.
Теперь вы увидите, что oneway однонаправленный атрибут имеет флажок рядом с ним, обозначающий True (флажок) или False (нет флажка).
5.3.4. ★★★ Попробуй себя:
Задайте более подходящий виджет формы для поля highway.
Ответить
Что касается TYPE, то очевидно, что существует ограниченное количество типов, которыми может быть дорога, и если вы посмотрите таблицу атрибутов для этого слоя, то увидите, что они предопределены.
Установите виджет на Карта значений и нажмите Загрузить данные из слоя.
Select
roadsin the Label dropdown andhighwayfor both the Value and Description options:
Нажмите кнопку OK три раза.
If you use the
Identify Features tool on a street now while edit mode is
active, the dialog you get should look like this:
5.3.5. ★★★★ Попробуй себя: Создание тестовых данных
Также можно полностью создать собственную пользовательскую форму.
Создайте простой слой точек с именем
test-dataс двумя атрибутами:название (текст)
возраст (целое число)
Зафиксируйте несколько точек на новом слое с помощью инструментов оцифровки, чтобы у вас было немного данных для воспроизведения. При каждой записисъемке новой точки вам должна быть представлена форма записи атрибутов, сгенерированных QGIS по умолчанию.
Примечание
Может потребоваться отключить привязку, если она все еще включена для предыдущих задач.
5.3.6. ★★★ Follow Along: Создание новой формы
Теперь мы хотим создать собственную пользовательскую форму для фазы сбора данных атрибутов. Для этого необходимо установить Дизайнер QT (только для лица, создающего формы).
Запустить QT Designer.
В появившемся диалоговом окне создайте новое диалоговое окно:
Найдите Widget Box в левой части экрана (по умолчанию). Он содержит элемент с именем Line Edit.
Кликните и перетащите этот элемент в форму. Это создаст новый Line Edit в форме.
При выборе нового элемента редактирования строки его свойства будут отображаться на боковой стороне экрана (по умолчанию справа):
Задайте для его имени значение
name.Используя тот же подход, создайте новый Spin Box Box и задайте для его имени значение
age.Добавьте Label`с текстом жирным шрифтом ``Add a New Person` (просмотрите свойства объекта, чтобы узнать, как это задать). Можно также задать заголовок самого диалогового окна (вместо добавления надписи).
Добавьте Label к вашему Line Edit и Spin Box.
Упорядочить элементы по собственному желанию.
Кликните в любом месте диалогового окна.
Find the Lay Out in a Form Layout button (in a toolbar along the top edge of the screen, by default). This lays out your dialog automatically.
Установите максимальный размер диалогового окна (в его свойствах) равным
200(ширина) на150(высота).Теперь форма должна выглядеть примерно так:
Сохраните свою новую форму как
exercise_data/forms/add_people.uiКогда закончится сохранение, можете закрыть Qt Designer
5.3.7. ★★★★ Follow Along: Ассоциирование формы с вашим слоем
Вернитесь в QGIS.
Double click the
test-datalayer in the legend to access its properties.Кликните на Attributes Form в диалоговом окне Layer Properties.
В раскрывающемся списке Attribute editor layout выберите Provide ui-file.
Кликните кнопку многоточия и выберите только что созданный файл
add_people.ui:
Кликните OK в диалоговом окне Layer Properties.
Переходите в режим редактирования и берите новую точку.
При этом будет представлено ваше пользовательское диалоговое окно (вместо общего, которое обычно создает QGIS).
Если вы кликните по одной из точек с помощью инструмента
Identify Features теперь можно вызвать форму, кликнув правой кнопкой мыши в окне определения результатов, и выбрать в контекстном меню.Если вы находитесь в режиме редактирования для этого слоя, то вместо этого контекстное меню будет отображать . После этого можно скорректировать атрибут в новой форме даже после первоначальной записисъемке точки.
5.3.8. В заключение
С помощью форм можно облегчить себе жизнь при редактировании или создании данных. Редактируя типы виджетов или создавая совершенно новую форму с нуля, можно контролировать работу того, кто оцифровывает новые данные для этого слоя, минимизируя тем самым недоразумения и ненужные ошибки.
5.3.9. Дальнейшее чтение
Если вы завершили усложнённый раздел выше и знаете о программе Python, вы можете посмотреть `this blog entry `_ запись блога о создании пользовательских форм функций с логикой Python, которая позволяет использовать расширенные функции, включая проверку данных, автозавершение и т.д.
5.3.10. Что дальше?
Открытие формы для идентификации функции является одним из стандартных действий, которые может выполнить QGIS. Однако его можно также направить на выполнение определяемых пользователем действий. Это тема следующего занятия.