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>
label — опис, який буде відображено у дереві модулів
module — ім’я виконуваного файлу модуля або сценарію GRASS.
key — назва настройки модуля у GMO.
answer — значення за замовчанням (перекриває значення за замовчанням з GMO); значення «on» активує перемикач.
hidden — настройка не буде доступна у діалозі, але модуль буде запущено з цією настройкою (hidden=»yes»).
label — назва настройки
advanced — «yes» або «no», за замовчанням «no». Якщо вказано «yes», настройка буде розміщена у прихованій панелі просунутих параметрів,і під панеллю з базовими настройками буде розміщено кнопку «Показати просунуті настройки >>»
version_min — мінімальна версія GRASS, де присутня вказана настройка/перемикач
version_max — максимальна версія GRASS, де присутня вказана настройка/перемикач
typeoption — атрибут використовується з векторними шарами, щоб задавати тип вхідного векторного шару. Наприклад (v.overlay.or.qgm):
<option key="ainput" typeoption="atype" layeroption="alayer" typemask="area,line" />
Це означає, що якщо шар було вибрано з випадаючого списку, то в якості типу шару буде використано _*atype*_, а значить додатково вказувати _*atype*_ не треба.
layeroption — те ж саме, що й typeoption.
typmask — задає тип вхідних шарів. В якості вхідних шарів будуть доступні лише шари вказаних типів. Приклад використання дивись у файлі v.overlay.or.qgm.
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 повинен бути більшим за розмір іконки, оскільки в подальшому це зображення також буде використовуватися для документації, і там необхідний більший розмір зображень.
Оскільки нові скрипти додаються до стабільного випуску 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.
Нижче надано список модулів, які будуть видалені, з обґрунтуванням причин (наприклад: деякі модулі, пов’язані з проекціями, важко використовувати, деякі — мають специфічну сферу використання). Майте на увазі, деякі модулі не були ретельно протестовані. Будь ласка, протестуйте їх, і якщо знайдете помилки — повідомте про них (а краще — виправте самостійно та надішліть патч).