Интеграция с GRASS GIS

Расширение GRASS предоставляет доступ к базам данных ГИС GRASS (см. GRASS-PROJECT Литература и ссылки на web-ресурсы) и её функциональности, включая визуализацию растровых и векторных слоёв GRASS, оцифровку векторных слоёв, правку атрибутивных данных, создание новых векторных слоёв и анализ 2D и 3D данных GRASS с помощью более чем 400 модулей.

В этом разделе описывается функциональность расширения GRASS и даются некоторые примеры управления данными GRASS и работы с ними. При запуске расширения GRASS, как описано в разделе sec_starting_grass, через меню предоставляются следующие функции:

  • grass_open_mapset Открыть набор

  • grass_new_mapset Новый набор

  • grass_close_mapset Закрыть набор

  • grass_add_vector Добавить векторный слой GRASS

  • grass_add_raster Добавить растровый слой GRASS

  • grass_new_vector_layer Создать новый векторный слой GRASS

  • grass_edit Редактировать векторный слой GRASS

  • grass_tools Открыть инструменты GRASS

  • grass_region Показать текущий регион GRASS

  • grass_region_edit Изменить текущий регион GRASS

Запуск расширения GRASS

Для использования функциональности GRASS и/или визуализации векторных и растровых слоёв GRASS в QGIS необходимо выбрать и загрузить расширение GRASS в Менеджере модулей. Для этого выберите в меню Модули ‣ mActionShowPluginManager Управление модулями, активируйте checkbox GRASS и нажмите кнопку [OK].

Теперь вы можете подключать растровые и векторные слои из существующей области GRASS (см. раздел sec_load_grassdata). Также вы можете создать новую область GRASS в QGIS (см. раздел Создание новой области GRASS) и импортировать растровые и векторные данные (см. раздел Импорт данных в область GRASS) для дальнейшего анализа с помощью Инструментов GRASS (см. раздел Панель инструментов GRASS).

Загрузка растровых и векторных слоёв GRASS

С помощью расширения GRASS вы можете подключать векторные или растровые слои, используя соответствующие кнопки на панели инструментов. В качестве примера мы используем набор данных «Alaska» для QGIS (см. раздел Примеры данных). Он включает небольшую демонстрационную область GRASS с 3 векторными слоями и 1 растровой картой рельефа.

  1. Создайте новую папку grassdata, загрузите набор данных «Alaska» qgis_sample_data.zip по ссылке http://download.osgeo.org/qgis/data/ и разархивируйте файл в папку grassdata.

  2. Запустите QGIS.

  3. Если предыдущая сессия QGIS еще не закончена, подключите модуль GRASS: нажмите Модули ‣ mActionShowPluginManager Управление модулями и активируйте checkbox GRASS. В главном окне QGIS должна появиться панель GRASS.

  4. “В панели GRASS нажмите на иконку grass_open_mapset Открыть набор для появления диалога с выбором набора.

  5. В поле Gisdbase выберите или введите путь к недавно созданной папке grassdata.

  6. Теперь в выпадающем списке Район selectstring должен появиться пункт alaska, а в списке Набор selectstring — пункт demo.

  7. Нажмите [OK]. Обратите внимание, что некоторые ранее недоступные инструменты на панели GRASS теперь доступны.

  8. Нажмите на кнопку grass_add_raster Добавить растровый слой GRASS, выберите название слоя gtopo30 и нажмите кнопку [OK]. Будет отображена карта рельефа.

  9. Нажмите на кнопку grass_add_vector Добавить векторный слой GRASS, выберите название слоя alaska и нажмите кнопку [OK]. Векторный слой границ штата Аляска будет наложен поверх слоя gtopo30. Теперь вы можете изменять свойства слоя (прозрачность, параметры заливки, параметры обводки и др.), как описано в главе Свойства векторного слоя.

  10. Откройте также два других векторных слоя — rivers и airports — и настройте их свойства.

Как видно, в QGIS очень просто открывать растровые и векторные слои GRASS. Смотрите соответствующие разделы по редактированию данных GRASS и созданию новой области. Другие наборы данных GRASS доступны на сайте http://grass.osgeo.org/download/data.php.

Совет

Подключение данных GRASS

Если у вас возникли проблемы с подключением данных или QGIS завершает работу некорректно, убедитесь, что вы правильно включили модуль GRASS, как описывается в разделе sec_starting_grass.

Область и набор GRASS

Данные GRASS находятся в директории, названной GISDBASE. Эта директория часто именуется grassdata, она должна быть создана до того, как вы начнете работать с модулем GRASS в QGIS. Внутри этой директории данные GRASS организованы в виде проектов, содержащихся в поддиректориях, называемых область. Каждая область определяется её системой координат, проекцией и географическим охватом. Каждая область может содержать несколько наборов (поддиректории области), которые используются для разделения проекта по различным темам, субрегионам, или в качестве отдельных наборов для разных членов рабочей группы (Neteler & Mitasova 2008 Литература и ссылки на web-ресурсы). Для того, чтобы проводить анализ векторных и растровых слоев с помощью модулей GRASS, необходимо импортировать их в область GRASS (строго говоря, это не совсем так — с помощью модулей GRASS r.external и v.external можно создавать ссылки (только для чтения) на внешние GDAL/OGR-совместимые данные без их импорта. Но т.к. это не совсем обычный способ начать работу с GRASS для новичков, эти функции не будут описаны здесь.).

Figure GRASS location 1:

../../../_images/grass_location1.png

Данные GRASS в районе «alaska»

Создание новой области GRASS

В качестве примера вы найдете здесь инструкции, по которым была создана демонстрационная область «alaska» в равновеликой конической проекции Альберса с единицами измерения в футах. Эта область может быть использована для всех примеров и упражнений в последующих разделах, связанных с ГИС GRASS. Так что будет полезно загрузить и установить этот набор данных на ваш компьютер, как это описано в разделе Примеры данных.

  1. Запустите QGIS и убедитесь, что расширение GRASS загружено.

  2. Откройте shape-файл alaska.shp (см. раздел vector_load_shapefile из набора данных «Alaska» Примеры данных.

  3. На панели GRASS нажмите кнопку grass_new_mapset Новый набор для появления диалога с выбором набора.

  4. Выберите существующую директорию базы данных GRASS (GISDBASE) grassdata или создайте таковую для новой области, используя файловый менеджер. Затем нажмите кнопку [Next].

  5. Можно использовать этот диалог для создания нового набора в существующей области (см. раздел Добавление нового набора) или для создания новой области. Выберите пункт radiobuttonon Создать новый район (см. figure_grass_location_2).

  6. Введите имя области (мы используем «alaska») и нажмите кнопку [Next].

  7. Определите проекцию, выбрав пункт radiobuttonon Проекция и включив список проекций.

  8. Мы используем равновеликую коническую проекцию Альберса (в футах). Так как мы знаем, что она представлена EPSG-кодом 2964, вводим код в строку поиска. (Замечание: если вы хотите повторить этот процесс для другой области и другой проекции, не обязательно запоминать код EPSG, просто нажмите значок mIconProjectionEnabled Преобразование координат в нижнем правом углу строки состояния QGIS (см. раздел Работа с проекциями)).

  9. Нажмите кнопку Фильтр для выбора проекции.

  10. Нажмите кнопку [Next].

  11. Чтобы определить регион по умолчанию, мы должны ввести границы области в северном, южном, западном и восточном направлении. Здесь мы просто нажимаем на кнопку [Установить текущие границы QGIS], чтобы применить охват открытого слоя alaska.shp в качестве региона GRASS по умолчанию.

  12. Нажмите кнопку [Next].

  13. Также мы должны определить набор внутри нашей новой области. Вы можете называть его как угодно — мы используем имя «demo» (при создании новой области). Когда создается новая область, GRASS автоматически создает специальный набор, называемый PERMANENT, спроектированный для хранения главных данных проекта, его исходного пространственного охвата и определений системы координат (Neteler & Mitasova 2008 Литература и ссылки на web-ресурсы).

  14. Проверьте общий вывод, чтобы быть уверенным в корректности введенного, и нажмите [Finish].

  15. Были созданы: новая область«alaska» и два набора — «demo» и «PERMANENT». Текущий рабочий набор — «demo», как было задано.

  16. Обратите внимание, что некоторые из инструментов на панели GRASS, которые раньше были отключены, теперь доступны.

Figure GRASS location 2:

../../../_images/create_grass_location.png

Создание новой области GRASS или нового набора в QGIS

Хотя все это выглядит как множество ходов, в реальности не все так плохо и это очень быстрый способ создания области. Область «alaska» теперь готова для импорта данных (см. раздел Импорт данных в область GRASS). Вы также можете использовать уже имеющиеся векторные и растровые данные в области «alaska», включенные в набор данных для QGIS «Alaska» Примеры данных и перейти к разделу Модель векторных данных GRASS.

Добавление нового набора

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

Все наборы включают файл WIND, который содержит текущие значения координат и текущее выбранное разрешение растров (Neteler & Mitasova 2008 Литература и ссылки на web-ресурсы, см. раздел Инструмент работы с регионом GRASS).

  1. Запустите QGIS и убедитесь, что расширение GRASS загружено.

  2. На панели GRASS нажмите кнопку grass_new_mapset Новый набор для появления диалога с выбором набора.

  3. Выберите каталог базы данных GRASS (GISDBASE) grassdata с областью «alaska», где мы хотим добавить следующий набор с именем «test».

  4. Нажмите кнопку [Next].

  5. Мы можем использовать этот диалог для создания нового набора в существующей области или для создания новой области. Выберите пункт radiobuttonon Выбрать район (см. figure_grass_location_2) и нажмите кнопку [Next].

  6. Введите имя test для нового набора. Ниже в диалоге вы видите список имеющихся наборов и их владельцев.

  7. Нажмите кнопку [Next], проверьте общий вывод, чтобы быть уверенными в корректности введенного, и нажмите кнопку [Finish].

Импорт данных в область GRASS

Этот раздел показывает пример того, как импортируются растровые и векторные данные, имеющиеся в наборе данных QGIS «Alaska», в область GRASS«alaska». Для этого мы используем растровую карту растительности landcover.img и векторный GML-файл lakes.gml из набора данных QGIS Примеры данных.

  1. Запустите QGIS и убедитесь, что расширение GRASS загружено.

  2. На панели GRASS нажмите кнопку grass_open_mapset Открыть набор для появления диалога с выбором набора.

  3. Выберите папку базы данных GRASS grassdata в наборе данных QGIS «alaska», далее область «alaska» и набор «demo», нажмите кнопку [OK].

  4. Теперь нажмите кнопку grass_tools Открыть инструменты GRASS. Появится окно инструментов GRASS (см. раздел Панель инструментов GRASS).

  5. Для импорта растрового слоя landcover.img, выберите модуль r.in.gdal на вкладке Дерево модулей. Этот модуль GRASS позволяет импортировать растровые файлы, поддерживаемые GDAL, в область GRASS. Появится окно модуля r.in.gdal.

  6. Откройте каталог raster в наборе данных QGIS «Alaska» и выберите файл landcover.img.

  7. Определите имя выходного растра как landcover_grass, нажмите кнопку [Выполнить]. Во вкладке Вывод вы видите текущую запущенную команду GRASS r.in.gdal -o input=/path/to/landcover.img output=landcover_grass.

  8. Когда появится надпись Успешное завершение, нажмите кнопку [Открыть вывод]. Растровый слой landcover_grass теперь импортирован в GRASS и может быть показан в окне карты QGIS.

  9. Для импорта векторного GML файла lakes.gml выберите модуль v.in.ogr на вкладке Дерево модулей. Этот модуль GRASS позволяет импортировать векторные файлы, поддерживаемые OGR, в область GRASS. Появится окно модуля v.in.ogr.

  10. Откройте каталог gml в наборе данных QGIS «Alaska» и выберите файл lakes.gml как файл OGR.

  11. Определите имя выходного векторного слоя как lakes_grass, нажмите кнопку [Выполнить]. Вы можете не беспокоиться о других опциях в этом примере. Во вкладке Вывод вы видите текущую запущенную команду GRASS v.in.ogr -o dsn=/path/to/lakes.gml output=lakes_grass.

  12. Когда появится сообщение [Успешное завершение], нажмите кнопку [Открыть вывод]. Векторный слой lakes_grass теперь импортирован в GRASS и может быть показан в окне карты QGIS.

Модель векторных данных GRASS

Важно понять модель векторных данных GRASS до начала процесса оцифровки.

В общем виде, GRASS использует топологическую векторную модель.

Это означает, что площадные объекты представлены не замкнутыми полигонами, а одной или более границами. Граница между двумя смежными полигонами оцифровывается только один раз и является общей для обоих полигонов. Границы должны быть соединены без разрывов. Полигон определяется с помощью центроида внутри полигона.

Кроме границ и центроидов, векторный слой содержит также точки и линии. Все эти геометрические элементы могут быть смешаны в одной векторной карте, а могут быть представлены в виде так называемых «слоёв» в векторной карте GRASS. Таким образом, в GRASS «слой» — это не векторная или растровая карта, а «уровень» внутри векторной карты. Важно тщательно разделять эти понятия (Хотя и возможно совмещать геометрические элементы, обычно это не принято и используется в GRASS только в специальных целях для сетевого векторного анализа. В большинстве случаев предпочтительнее хранить разные геометрические элементы в разных слоях.).

Один векторный «набор» может содержать несколько «слоёв». Например, поля, леса и озера могут быть помещены в один векторный слой. Смежные леса и озера могут иметь одну и ту же границу, но они имеют отдельные атрибутивные таблицы. Также возможно присоединять атрибуты к границам. Например, если граница между озером и лесом — дорога, то она имеет свою таблицу атрибутов.

«Слой» объекта определяется «слоем» внутри GRASS. «Слой» — это номер, который отражает присутствие более чем одного слоя в наборе данных (относится ли геометрия к лесу или к озеру?). На сегодняшний день он может быть только числом, в будущем GRASS будет поддерживать также названия в виде полей в графическом интерфейсе.

Атрибуты могут содержаться внутри области GRASS (как DBase или SQLite) или во внешних таблицах баз данных, например, PostgreSQL, MySQL, Oracle и т.д.

Атрибуты в таблицах баз данных соотносятся с геометрическими элементами с помощью значения «категорий».

«Категории» (ключ, ID) — это целые числа, присоединенные к геометрическим элементам, они используются как ссылка на ключевую колонку в базе данных.

Совет

Изучение модели векторных данных GRASS

Лучший способ изучить модель векторных данных GRASS и её возможности — скачать одно из пособий по GRASS, где модель векторных данных описана более подробно. Смотрите http://grass.osgeo.org/gdp/manuals.php для более подробной информации, книг и пособий на нескольких языках.

Создание нового векторного слоя GRASS

Чтобы создать новый векторный слой GRASS с помощью расширения GRASS, нажмите значок grass_new_vector_layer Создать новый векторный слой GRASS. Введите имя в текстовое окно, и можете начать оцифровывать точки, линии и полигоны, следуя процедуре, описанной в разделе Оцифровка и правка векторных слоёв GRASS.

В GRASS возможно создание всех геометрических типов объектов (точек, линий и полигонов) в одном слое, потому что GRASS использует топологическую векторную модель, так что вам не надо выбирать тип геометрии, когда создаете новый векторный слой GRASS. Это отличается от создания shape-файлов в QGIS, т.к. они используют векторную модель «Simple Feature» (см. раздел sec_create_shape).

Совет

Создание таблицы атрибутов для нового векторного слоя GRASS

Если вы хотите назначить атрибуты оцифрованным геометрическим объектам, убедитесь, что до начала оцифровки была создана таблица атрибутов с полями (см. рисунок figure_grass_digitizing_5).

Оцифровка и правка векторных слоёв GRASS

Средства оцифровки векторных слоёв GRASS доступны через кнопку grass_edit Редактировать векторный слой GRASS на панели. Убедитесь, что векторный слой подгружен и он является выбранным слоем в легенде до того, как использовать инструменты правки. Рисунок figure_grass_digitizing_2 показывает диалог правки слоя GRASS, появляющийся при нажатии на кнопку редактирования. Инструменты и настройки обсуждаются в следующих разделах.

Совет

Оцифровка полигонов в GRASS

Если вы хотите создать полигон в GRASS, необходимо вначале оцифровать границу полигона, задав режим «Без категорий». Затем добавляется центроид (именованная точка) внутрь замкнутой границы в режиме «Следующая не используемая». Причина в том, что топологическая векторная модель соотносит атрибутивную информацию всегда с центроидом, а не с границей.

Панель инструментов

На рисунке figure_grass_digitizing_1 показаны инструменты оцифровки, предоставляемые модулем GRASS. Таблица table_grass_digitizing_1 объясняет их возможные функции.

Figure GRASS digitizing 1:

../../../_images/grass_digitizing_toolbar.png

Панель инструментов оцифровки GRASS

Иконка

Инструмент

Назначение

grass_new_point

Новая точка

Оцифровать новую точку

grass_new_line

Новая линия

Оцифровать новую линию (завершается выбором нового инструмента)

grass_new_boundary

Новая граница

Оцифровать новую границу (завершается выбором нового инструмента)

grass_new_centroid

Новый центроид

Оцифровать новый центроид (дать метку существующему полигону)

grass_move_vertex

Переместить вершину

Переместить одну вершину имеющейся линии или границы и определить новое положение

grass_add_vertex

Добавить вершину

Добавить новую вершину к существующей линии

grass_delete_vertex

Удалить вершину

Удалить вершину из существующей линии (подтвердить выбор вершины ещё одним нажатием)

grass_move_line

Переместить элемент

Переместить выбранную границу, линию, точку или центроид на новую позицию и кликнуть в месте нового положения

grass_split_line

Разбить линию

Разбить существующую линию на 2 части

grass_delete_line

Удалить элемент

Удалить существующую границу, линию, точку или центроид (подтвердить выбор элемента ещё одним нажатием)

grass_edit_attributes

Изменить атрибуты

Изменить атрибуты выбранного элемента (заметьте, что один элемент может представлять много объектов, см. выше)

grass_close_edit

Закрыть

Завершить сессию и сохранить текущий статус (с последующей перестройкой топологии)

Table GRASS Digitizing 1: Средства оцифровки GRASS

Вкладка «Категории»

Вкладка Категории позволяет определить способ присваивания значений категорий новым геометрическим элементам.

Figure GRASS digitizing 2:

../../../_images/grass_digitizing_category.png

Вкладка Категории в панели оцифровки GRASS

  • Режим: какое значение категорий должно быть применено к новым геометрическим элементам

    • Следующая неиспользуемая — применяет следующее еще не использованное значение категорий к геометрическому элементу

    • Ручной ввод — значение категорий определяется вручную в поле «Категории»

    • Без категории — не применяет значения категорий к геометрическому элементу. Это используется прежде всего для границ полигонов, т.к. значения категорий присоединяются через центроид

  • Категории — Номер (ID), назначенный каждому оцифрованному геометрическому элементу. Используется для соединения геометрического элемента с его атрибутами

  • Слой — Каждый геометрический элемент может быть связан с несколькими атрибутивными таблицами с помощью разных геометрических слоев GRASS. Номер по умолчанию — 1

Совет

Создание дополнительного «слоя» GRASS в QGIS

Если вы хотите добавить больше слоёв в набор данных, просто введите новый номер в графу «Слой» и нажмите Enter. На вкладке Таблица вы можете создать новую таблицу, присоединенную к новому слою.

Вкладка «Параметры»

Вкладка Параметры позволяет задавать прилипание в пикселах экрана. Порог прилипания определяется тем, на каком расстоянии новые точки или конечные узлы линий должны быть «притянуты» к существующим узлам. Это помогает избегать разрывов и висячих узлов между границами. По умолчанию задан порог в 10 пикселов.

Figure GRASS digitizing 3:

../../../_images/grass_digitizing_settings.png

Вкладка «Параметры» в панели оцифровки GRASS

Вкладка «Символика»

Вкладка Символика позволяет просматривать и задавать параметры символики и цвета для различных геометрических типов и их топологического статуса (например, закрытая/открытая граница).

Figure GRASS digitizing 4:

../../../_images/grass_digitizing_symbology.png

Вкладка «Символика» в панели оцифровки GRASS

Вкладка «Таблица»

Вкладка Таблица предоставляет информацию о таблице в базе данных для данного «слоя». Здесь можно добавить новые поля к существующей таблице атрибутов или создать новую таблицу для векторного слоя GRASS (см. раздел Создание нового векторного слоя GRASS).

Figure GRASS digitizing 5:

../../../_images/grass_digitizing_table.png

Вкладка «Таблица» в панели оцифровки GRASS

Совет

Права редактирования GRASS

Вы должны быть владельцем набора GRASS, данные которого вы хотите редактировать. Кроме того, можно править данные в наборе, который не принадлежит вам, если у вас есть права для записи.

Инструмент работы с регионом GRASS

Определение региона (задание пространственных характеристик) в GRASS важно для работы с растровыми данными. Векторный анализ по умолчанию не ограничен любыми определенными параметрами района. Но все вновь созданные растры будут иметь пространственный охват и разрешение текущего региона GRASS (независимо от их оригинального охвата и разрешения). Текущий регион GRASS находится в файле $LOCATION/$MAPSET/WIND и определяет северную, южную, восточную и западную границы, число столбцов и строк, горизонтальное и вертикальное пространственное разрешение.

Возможно отключать/включать показ региона GRASS в окне карты QGIS с помощью кнопки grass_region Показать текущий регион GRASS.

С помощью кнопки grass_region_edit Изменить текущий регион GRASS можно открыть диалог для изменения текущего региона и символики границ региона в окне QGIS. Наберите новые значения границ и разрешения региона и нажмите кнопку [OK]. Инструмент также позволяет выделять регион интерактивно в окне карты QGIS при помощи мышки. Для этого поместите курсор в область карты QGIS, нажмите левую кнопку, выделите прямоугольник и снова нажмите левую кнопку мыши, а затем нажмите [OK].

Модуль GRASS g.region предоставляет гораздо больше параметров для определения необходимого охвата и разрешения для растрового анализа. Вы можете использовать эти параметры с помощью модуля инструментов GRASS, описанного в разделе Панель инструментов GRASS.

Панель инструментов GRASS

Окно grass_tools Открыть инструменты GRASS предоставляет функциональность модулей GRASS для работы с данными внутри выбранных области и набора. Чтобы использовать инструменты GRASS, требуется открыть область и набор, где у вас есть права записи (обычно даются при создании набора). Это необходимо, т.к. новые растровые и векторные слои, создающиеся в процессе анализа, должны быть записаны в текущие выбранные область и набор.

Figure GRASS toolbox 1:

../../../_images/grass_toolbox_moduletree.png

Инструменты GRASS и дерево модулей nix

«Оболочка GRASS» в панели «Инструменты GRASS» предоставляет доступ почти ко всем (более чем к 330) модулям GRASS в режиме командной строки. Чтобы предложить более дружественную к пользователю рабочую среду, примерно 200 из числа доступных модулей и их функций представлены также в графических диалогах (меню).

Работа с модулями GRASS

«Оболочка GRASS» в панели «Инструменты GRASS» предоставляет доступ почти ко всем (более чем к 330) модулям GRASS в режиме командной строки. Чтобы предложить более дружественную к пользователю рабочую среду, примерно 200 из числа доступных модулей и их функций представлены также в графических диалогах (меню).

Ознакомиться с полным списком модулей GRASS, доступных в QGIS версии 2.0 можно на GRASS wiki (http://grass.osgeo.org/wiki/GRASS-QGIS_relevant_module_list).

Также возможно настраивать содержимое Инструментов GRASS. Это описано в разделе Настройка инструментов GRASS.

Как показано на рисунке figure_grass_toolbox_1, вы можете найти необходимый модуль GRASS, используя тематически сгруппированный перечень на вкладке Дерево модулей или вкладку Список модулей с возможностью поиска.

Нажатие на графическую иконку модуля открывает новую вкладку, которая добавляется к диалогу и имеет три собственные вкладки Параметры, Вывод и Справка.

Параметры

Вкладка Параметры отображает упрощенный диалог модуля, где вы можете обычно выбрать растровый или векторный слой, отображенный в окне карты QGIS и ввести дальнейшие специфические параметры для запуска модуля.

Figure GRASS module 1:

../../../_images/grass_module_option.png

Модули GRASS, вкладка «Параметры» nix

Предоставляемые параметры модуля в большинстве случаев являются неполным отражением диалога. Если вы хотите использовать остальные параметры и флаги данного модуля, необходимо открыть оболочку GRASS и запустить модуль из командной строки.

Новая функция, доступная начиная с версии QGIS 1.8.0 — поддержка кнопки [Показать расширенные параметры >>] под упрощенным диалогом модуля на вкладке Параметры. В настоящее время эта функция добавлена только для модуля v.in.ascii как образец, но, возможно, будет добавлена для части модулей или всех модулей в будущих версиях QGIS. Это позволит использовать все возможности модулей GRASS без необходимости переключаться на командную строку GRASS.

Вывод

Figure GRASS module 2:

../../../_images/grass_module_output.png

Модули GRASS, вкладка «Вывод» nix

Вкладка Вывод предоставляет информацию о статусе вывода модуля. Когда вы нажимаете кнопку [Запустить], модуль переключается во вкладку Вывод и вы можете видеть информацию о процессе анализа. Если все закончилось успешно, в конце вы увидите сообщение Завершено успешно.

Справка

Figure GRASS module 3:

../../../_images/grass_module_manual.png

Модули GRASS, вкладка «Справка» nix

Вкладка Справка показывает HTML-страницу помощи по модулю GRASS. Вы можете использовать ее для проверки дополнительных параметров модулей и флагов или для более глубокого изучения назначения модуля. В конце каждой страницы-мануала присутствуют дополнительные ссылки Main Help index, Thematic index и Full index. Эти ссылки дают ту же информацию, что и при использовании модуля g.manual.

Совет

Показать результат сразу

Если вы хотите отобразить результаты выших вычислений сразу же в окне карты, используйте кнопку [Показать вывод] внизу вкладки модуля.

Примеры модулей GRASS

Следующие примеры продемонстрируют применение некоторых из модулей GRASS.

Создание изолиний

В первом примере создадим векторный слой изолиний из растровой карты поверхности (цифровой модели рельефа). Предполагается, что вы имеете регион alaska, созданный так, как объяснено в разделе Импорт данных в область GRASS.

  • Сперва откройте область, нажав на кнопку grass_open_mapset Открыть набор и выбрав область alaska.

  • Теперь откройте карту рельефа gtopo30, нажав кнопку grass_add_raster Добавить растровый слой GRASS и выбрав растр gtopo30 из набора demo.

  • Теперь откройте панель инструментов с помощью кнопки grass_tools Открыть инструменты GRASS.

  • В списке категорий инструментов выберите Растр ‣ Обработка поверхностей ‣ Создание изолиний.

  • Теперь единичный клик на инструменте r.contour откроет диалог, как было объяснено выше в разделе Работа с модулями GRASS. Растр gtopo30 должен появиться в поле Имя исходной растровой карты.

  • Напечатайте в Шаг горизонталей selectnumber значение 100 (тогда будут создаваться изолинии с интервалом в 100 метров).

  • Введите в поле Имя выходного векторного слоя имя ctour_100.

  • Нажмите кнопку [Выполнить] для начала процесса. Подождите некоторое время, пока в окне вывода не появится сообщение Успешное завершение. Тогда нажмите кнопку [Открыть вывод] и кнопку [Закрыть].

Так как текущий регион довольно обширен, отображение на экране может занять какое-то время. После завершения отрисовки вы можете открыть окно свойств слоя, чтобы изменить цвет линии, так, чтобы изолинии были заметны на слое рельефа, как описано в разделе Свойства векторного слоя.

Следующим шагом увеличьте небольшой горный участок в центре Аляски. Увеличив сильно, вы заметите, что изолинии имеют острые края. GRASS предлагает инструмент v.generalize для небольшого видоизменения векторных карт с сохранением их общей формы. Инструмент использует несколько различных алгоритмов для различных целей. Некоторые из алгоритмов (например, Дугласа-Пойкера (Douglas-Peuker) и сокращения узлов) упрощают линию путем удаления некоторой части вершин. Конечный векторный слой будет подгружаться быстрее. Этот процесс может быть использован, когда вы имеете очень подробную векторную карту, но создаете мелкомасштабную карту, так что детали нежелательны.

Совет

Инструмент упрощения геометрии

Заметьте, что модуль QGIS fTools имеет инструмент Упростить геометрию, который работает почти так же, как алгоритм Дугласа-Пойкера в v.generalize.

Однако, цель этого примера другая. Изолинии, созданные модулем r.contour, имеют острые края, которые должны быть сглажены. Среди алгоритмов модуля v.generalize имеется алгоритм Чейкена (Chaikens), который как раз это делает (а также интерполяция кубическими сплайнами Эрмитова (Hermite)). Имейте в виду, что эти алгоритмы могут и добавлять дополнительные вершины к векторным объектам, что может привести к их более медленной загрузке.

  • Откройте Инструменты GRASS и выберите Вектор ‣ Обработка карт ‣ Генерализация, затем нажмите на модуль v.generalize, чтобы открыть окно его параметров.

  • Проверьте, что в поле Имя исходного векторного слоя находится вектор ctour_100.

  • Из списка алгоритмов выберите «Алгоритм Чейкена». Оставьте другие опции по умолчанию и промотайте вниз до последней строки, чтобы ввести в поле Имя выходного векторного слоя значение ctour_100_smooth, и нажмите [Выполнить].

  • Процесс займет какое-то время. Когда в окне вывода появится сообщение Успешное завершение, нажмите [Открыть вывод] и затем [Закрыть].

  • Вы можете изменить цвет векторных изолиний, чтобы четче отобразить их поверх растра и в контрасте с оригинальными изолиниями. Вы заметите, что новые изолинии имеют более гладкие края, чем оригинальные, оставаясь в целом исходной формы.

Figure GRASS module 4:

../../../_images/grass_toolbox_vgeneralize.png

Модуль GRASS v.generalize для сглаживания объектов векторного слоя nix

Совет

Другие применения модуля r.contour

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

Создание 3D эффекта методом свето-теневой отмывки

Для отображения земной поверхности и придания картам эффекта трехмерности применяются несколько методов. Использование изолиний, как показано выше, — один из популярных методов, часто применяемый при производстве топографических карт. Другой метод получения 3D эффекта — с помощью т.н. свето-теневой отмывки. Свето-теневой эффект создается на основе цифровой модели рельефа (ЦМР) сперва путём вычисления уклона и экспозиции склонов в каждой ячейке, затем симуляцией позиции Солнца на небосклоне и заданием значения отражения в каждой ячейке. Так вы получаете освещенные склоны, находящиеся на пути света, и затемнённые, находящиеся против света.

  • Начнем этот пример с загрузки карты поверхности gtopo30. Запустите панель инструментов GRASS и в разделе Растр нажмите Пространственный анализ ‣ Морфометрический анализ.

  • Затем выберите r.shaded.relief, чтобы открыть этот модуль.

  • Измените значение поля Азимут selectnumber с 270 на 315.

  • Введите gtopo30_shade в качестве имени нового растра теневой отмывки и нажмите [Выполнить].

  • Когда процесс закончится, добавьте растр отмывки на карту. Как вы видите, он отображается в серой цветовой шкале.

  • Чтобы увидеть вместе и теневую отмывку, и цвета gtopo30, передвиньте растр отмывки под растр gtopo30 в слоях карты, затем откройте окно Свойства слоя gtopo30, перейдите на вкладку Прозрачность и выставите уровень прозрачности 25%.

Вы должны получить слой рельефа gtopo30 с его цветовой картой и заданной прозрачностью поверх слоя отмывки в серых тонах. Для того, чтобы оценить визуальный эффект теневой отмывки рельефа, отключите слой gtopo30_shade, затем опять верните его.

Использование оболочки GRASS

Расширение GRASS в QGIS разработано для пользователей, которые являются новичками в GRASS, и не знакомы со всеми модулями и их опциями. Некоторые модули, как таковые, не отображают на панели инструментов все возможные параметры, а некоторые модули вообще не присутствуют. Оболочка GRASS (или консоль) дает пользователю доступ к тем дополнительным модулям, которых нет в дереве модулей, а также к некоторым дополнительным опциям тех модулей, которые присутствуют на панели инструментов с минимальным параметрами по умолчанию. Этот пример демонстрирует использование расширенных опций в модуле r.shaded.relief, который был рассмотрен выше.

Figure GRASS module 5:

../../../_images/grass_toolbox_shell.png

Оболочка GRASS, модуль r.shaded.relief nix

Модуль r.shaded.relief может принимать параметр zmult, который увеличивает значения поверхности относительно единиц измерения координат X-Y так, что эффект теневой отмывки становится более отчетливым.

  • Откройте карту рельефа gtopo30 как сказано выше, затем запустите Инструменты GRASS и выберите оболочку GRASS. В окне оболочки введите команду: r.shaded.relief map=gtopo30 shade=gtopo30_shade2 azimuth=315 zmult=3 и нажмите Enter.

  • Когда процесс закончится, переключитесь на вкладку Браузер и дважды кликните на новом растре gtopo30_shade2, чтобы отобразить его в QGIS.

  • Как объяснено выше, переместите слой теневого рельефа ниже слоя gtopo30 в списке слоев, затем проверьте прозрачность цветного растра gtopo30. Вы должны увидеть, что 3D эффект усилился по сравнению с первой картой теневой отмывки рельефа.

Figure GRASS module 6:

../../../_images/grass_toolbox_shadedrelief.png

Карта теневой отмывки рельефа, созданная с помощью модуля r.shaded.relief nix

Растровая статистика на векторной карте

Следующий пример показывает, как модуль GRASS может обрабатывать растровые данные и добавлять колонки статистики для каждого полигона в векторном слое.

  • Снова используем данные набора данных Alaska, ссылаясь на Импорт данных в область GRASS для импорта shape-файла растительности из директории shapefiles в GRASS.

  • Теперь необходим промежуточный шаг: к импортированной карте растительности нужно добавить центроиды, чтобы получить законченные полигоны GRASS (включая и границы, и центроиды).

  • Из панели инструментов выберите Вектор ‣ Обработка объектов и откройте модуль v.centroids.

  • Введите в поле Имя выходного векторного слоя имя forest_areas и запустите модуль.

  • Теперь загрузите векторный слой forest_areas и отобразите типы лесов — лиственные, вечнозелёные, смешанные — в различных цветах: в окне Свойства, вкладке Стиль, выберите Тип легенды selectstring «Уникальное значения» и задайте Поле классификации selectstring «VEGDESC» (обратитесь для объяснения вкладки символики к параграфу vector_style_tab в разделе Свойства векторного слоя).

  • Далее заново откройте панель инструментов GRASS и выберите Вектор ‣ Обновление данных на основе других карт.

  • Выберите модуль v.rast.stats. Введите gtopo30 и forest_areas.

  • Только один дополнительный параметр необходим: введите column prefix elev и нажмите [Выполнить]. Это сложная вычислительная операция, которая будет продолжаться долгое время (возможно, вплоть до двух часов).

  • Наконец, откройте таблицу атрибутов слоя forest_areas и проверьте, что было добавлено несколько новых полей, включая elev_min, elev_max, elev_mean и т.д. для каждого полигона в слое.

Работа с браузером GRASS

Другой полезной функцией в Инструментах GRASS является браузер области GRASS. На рисунке figure_grass_module_7 вы можете видеть текущий рабочую область с её наборами.

В левом окне браузера вы можете просматривать все наборы внутри текущей области. В правом окне браузера показывается некоторые метаданные для выбранных растровых или векторных слоев (разрешение, охват, источник данных, присоединенная атрибутивная таблица для векторных данных и история команд).

Figure GRASS module 7:

../../../_images/grass_mapset_browser.png

Браузер GRASS nix

Панель внутри вкладки Браузер предлагает следующие инструменты управления выбранной областью:

  • grass_add_map Добавить выбранную карту в область QGIS

  • grass_copy_map Копировать выбранную карту

  • grass_rename_map Переименовать выбранную карту

  • grass_delete_map Удалить выбранную карту

  • grass_set_region Задать регион по границам выбранной карты

  • grass_refresh Обновить

Инструменты grass_rename_map Переименовать выбранную карту и grass_delete_map Удалить выбранную карту работают только с картами внутри текущего выбранного набора. Все остальные инструменты работают также с растровыми и векторными слоями в других наборах.

Настройка инструментов GRASS

Практически все модули GRASS могут быть добавлены в панель инструментов GRASS. Интерфейс XML производит анализ простых XML-файлов, которые настраивают внешний вид и параметры модулей внутри панели инструментов.

Простой XML-файл для генерации модуля v.buffer (v.buffer.qgm) выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">

<qgisgrassmodule label="Vector buffer" module="v.buffer">
        <option key="input" typeoption="type" layeroption="layer" />
        <option key="buffer"/>
        <option key="output" />
</qgisgrassmodule>

Парсер читает это описание и создает новую вкладку внутри панели инструментов при выборе модуля. Более детальное описание добавления новых модулей, изменения групп модулей и т.д. может быть найдено в QGIS Wiki по адресу http://hub.qgis.org/projects/quantum-gis/wiki/Adding_New_Tools_to_the_GRASS_Toolbox.