Додавання інструментів GRASS

QGIS дозволяє використовувати модулі GRASS через Інструменти GRASS, якщо вона була запущена з командного рядка GRASS або у ній було відкрито набір даних GRASS. Модулі працюють виключно з даними GRASS.

Ви можете легко змінити меню або додати нові модулі, оскільки і меню, і модулі описуються конфігураційними файлами формату XML. Нижче розказується як саме створювати нові модулі та редагувати дерево модулів.

Настройки модуля

Загальні відомості

Настройки модуля знаходяться на вкладці _*Настройки*_, яка генерується на основі інформації з файлів QGM (QGIS GRASS module) та GMO (GRASS module options). Так як кожна настройка з файлу QGM пов’язана з однією (або декількома) настройками файлу GMO, корисно, ба навіть необхідно, мати перед очима файл GMO. GMO є XML-файлом, який автоматично генерується під час запуску модуля GRASS з параметром _*–interface-description_*, наприклад:

r.to.vect --interface-description

Деякі модулі GRASS мають дуже багато настройок, що може заплутувати новачків. Під час створення файлу QGM можна використовувати лише деякі з доступних настройок, а також вказати для частини з них значення за замовчанням або навіть приховати настройки з заздалегідь заданими значеннями. Це означає, що один модуль GRASS може бути представлений декількома модулями QGIS-GRASS. Наприклад, модуль r.to.vect представлено трьома модулями QGIS-GRASS із заданою настройкою «feature». Для кожного модуля QGIS-GRASS створюється свій файл QGM, який є файлом формату XML з розширенням .qgm. Файли описів знаходяться у каталозі _*qgis/src/plugins/grass/modules*_ та встановлюються у каталог _*share/qgis/grass/modules*_. Ім’я файлу повинно починатися з назви модуля GRASS, до якої додається слово, що описує відповідну задачу. Наприклад, модуль, який виділяє векторні лінії з растру, називається r.to.vect.line.qgm.

Нижче наведено приклад файлу опису:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">
<qgisgrassmodule label="Generate aspect map from DEM" module="r.slope.aspect">
       <option key="elevation" />
       <option key="aspect" />
</qgisgrassmodule>

Атрибути теґу qgisgrassmodule

  • label — опис, який буде відображено у дереві модулів

  • module — ім’я виконуваного файлу модуля або сценарію GRASS.

Теґи настройок

Кожний теґ qgisgrassmodule може містити один або декілька теґів настройок:

  • option — відповідає теґу parameter GMO, наприклад:

<option key="elevation" />
  • flag — відповідає теґу flag GMO, наприклад:

<flag key="o" answer="on" hidden="yes" />
  • field — для векторних шарів задає поле таблиці атрибутів, виглядає як випадаючий список з іменами наявних полів. Наприклад (v.to.db.qgm):

<field key="column" layer="map" type="integer,double" label="Attribute field" />
  • selection — доволі цікава та корисна настройка. Дозволяє задавати список категорій GRASS за допомогою інтерфейсу QGIS. Об’єкти (та їх категорії, еквівалент ID об’єктів у GRASS) можна вибирати за допомогою інструменту «Вибрати об’єкти» або через таблицю атрибутів. Список категорій оновлюється автоматично. Приклад (v.extract.list.qgm):

<selection key="list" layerid="input" label="Cats" />

Атрибути, спільні для теґів option та flag

  • key — назва настройки модуля у GMO.

  • answer — значення за замовчанням (перекриває значення за замовчанням з GMO); значення «on» активує перемикач.

  • hidden — настройка не буде доступна у діалозі, але модуль буде запущено з цією настройкою (hidden=»yes»).

  • label — назва настройки

  • advanced — «yes» або «no», за замовчанням «no». Якщо вказано «yes», настройка буде розміщена у прихованій панелі просунутих параметрів,і під панеллю з базовими настройками буде розміщено кнопку «Показати просунуті настройки >>»

  • version_min — мінімальна версія GRASS, де присутня вказана настройка/перемикач

  • version_max — максимальна версія GRASS, де присутня вказана настройка/перемикач

Атрибути теґу option

  • typeoption — атрибут використовується з векторними шарами, щоб задавати тип вхідного векторного шару. Наприклад (v.overlay.or.qgm):

    <option key="ainput" typeoption="atype" layeroption="alayer" typemask="area,line" />
    

    Це означає, що якщо шар було вибрано з випадаючого списку, то в якості типу шару буде використано _*atype*_, а значить додатково вказувати _*atype*_ не треба.

  • layeroption — те ж саме, що й typeoption.

  • typmask — задає тип вхідних шарів. В якості вхідних шарів будуть доступні лише шари вказаних типів. Приклад використання дивись у файлі v.overlay.or.qgm.

Атрибути теґу field

  • layer — головний атрибут, який визначає векторний шар, поля якого повинні використовуватися on

  • type — визначає тип даних полів, які повинні відображатися у випадаючому списку, наприклад

    <field key="column" layer="map" type="integer,double" label="Attribute field" />
    

    Це означає, що у випадаючому списку будуть лише поля, тип даних яких є цілим числом або числом з плавучою комою. Приклад використання дивись у файлі v.what.vect (2 різних вектори).

Як це працює

Ідея, що лежить в основі реалізації модулів QGIS-GRASS, полягає у використанні максимум інформації з GMO та спрощенні інтерфейсу. Тут описано в якому порядку та як саме використовується інформації з GMO.

  • label — якщо у GMO присутній атрибут label, він використовується як назва настройки. Якщо він відсутній — використовується теґ label параметру option. У випадку, якщо і він відсутній — використовується теґ description.

  • tooltip — (з’являється при наведені миші на настройку) якщо атрибут label задано (у QGM або GMO) та у GMO присутній теґ description (тобто label та description відрізняються), в якості tooltip використовується теґ decription GMO.

  • multiple values label — якщо настройка має тип multiple з заданим списком можливих значень (як настройка upload у v.distance) та для теґу value задано атрибут, вона використовується як підпис перемикача

Іконка

Кожний модуль повинен мати своє зображення/іконку, яке показує функціональне призначення модуля. Зображення зберігаються каталозі plugins/grass/modules у вигляді файлів SVG (.svg) або PNG (.png).

Наразі підтримується 3 варіанти зображень:

  • 1 зображення

  • 2 зображення — QGIS створить іконку: 1 -> 2

  • 3 зображення — QGIS створить іконку: 1 + 2 -> 3

Назва зображення починається з назви модуля QGIS-GRASS, до якої додається номер зображення. Наприклад: v.overlay.and.1.svg, v.overlay.and.2.svg, v.overlay.and.3.svg. Допускається одночасне використання зображень у форматах SVG та PNG.

Файли SVG та PNG можна отримати за допомогою редактора макетів QGIS. Розмір зображень у форматі PNG повинен бути більшим за розмір іконки, оскільки в подальшому це зображення також буде використовуватися для документації, і там необхідний більший розмір зображень.

Сценарії QGIS GRASS

Оскільки нові скрипти додаються до стабільного випуску GRASS з достатньо великою затримкою, а також через те, що деякі скрипти корисні лише для графічного інтерфейсу QGIS, передбачена можливість додавати скрипти «GRASS» до QGIS. Такі скрипти повинні відповідати загальним вимогам до скриптів GRASS та розміщуються у каталозі qgis/src/plugins/grass/scripts.

Загальні правила для нових модулів

Інструменти GRASS розраховані на недосвідчених користувачів та початківців. Основними правилами є:

  • Кожний модуль повинен мати 3 або більше параметрів, якщо необхідно додати більше параметрів, слід провести обговорення

  • Опис модуля повинен бути надійний, тобто не дозволяти користувачу виконувати операцію з неправильними настройками. Якщо для деяких настройок модуля це можливо реалізувати — модуль не повинен додаватися до меню

Вимоги до описів модулів

  • Уникайте використання дієслів у 3-й особі, наприклад, «Export raster» замість «Exports raster»

  • Не зловживайте словами «map», «layer» та «file», наприклад, «Export raster» замість «Export raster map layer»

  • Уникайте зайвого використання «GRASS», тобто «Export raster» а не «Export GRASS raster»

  • Уникайте використання «a|an», наприклад, «Export raster» замість «Exports a raster»

  • Уникайте використання допоміжних слів, наприклад, «Export raster» замість «Allows the export of a raster»

  • Уникайте слова «Convert»: використовуйте «Export» або «Import». «Convert» слід використовувати лише для внутрішніх перетворень GRASS (наприклад, з растру у вектор)

  • Абревіатури повинні набиратися у верхньому регістрі, наприклад, «ASCII» а не «ascii»

  • У випадку сумнівів — перегляньте наявні подібні модулі, щоб дотримуватися узгодженості

Настройки, які не можуть використовуватися

Технічно можна використовувати будь-які настройки. Але деякі з них зараз мають обмежену підтримку, наприклад, ті, що залежать від інших настройок. Тут наведено список (можливо неповний) настройок, які мають обмежену підтримку і не повинні використовуватися:

  • Вхідний шар/рядок підключення OGR (v.in.ogr)

Модулі, які можна додати

Більшість модулів вже додано. Якщо вам потрібні додаткові — будь ласка, напишіть до списку розсилки розробників QGIS та додайте до цього списку модулі, які на ваш погляд необхідно додати.

Необхідно вказати назву нового модуля QGIS-GRASS, назву модуля GRASS а також список настройок, які планується використовувати. Наприклад:

r.to.vect.area: r.to.vect input output feature=area

Також перегляньте обговорення «GRASS-QGIS relevant module list»:http://grass.osgeo.org/wiki/GRASS-QGIS_relevant_module_list.

Модулі, які будуть виключені

Нижче надано список модулів, які будуть видалені, з обґрунтуванням причин (наприклад: деякі модулі, пов’язані з проекціями, важко використовувати, деякі — мають специфічну сферу використання). Майте на увазі, деякі модулі не були ретельно протестовані. Будь ласка, протестуйте їх, і якщо знайдете помилки — повідомте про них (а краще — виправте самостійно та надішліть патч).