логотип проекта

Начало работы с GRASS GIS 7

GRASS GIS — мощная геоинформационная система, позволяющая визуализировать, упорядочивать, анализировать и редактировать пространственные данные.

Запуск

Чтобы запустить GRASS GIS с Live DVD, щёлкните по ссылке GRASS в меню Geospatial ‣ Desktop GIS. В появившемся окне “Welcome to GRASS GIS” выберите в качестве области North Carolina, затем выберите набор “user1” и нажмите [Start GRASS].

скриншот

Это запустит GRASS в режиме графического интерфейса на базе wxPython.

Tip

Если у вас нетбук с небольшим экраном (с разрешением 800x600), окно запуска может оказаться немного сжатым и кнопка [Start GRASS] будет скрыта под списками областей и наборов. Если это произойдёт, то нужно перетащить край окна, чтобы сделать его немного шире. Возможно, придётся переместить окно в верхнюю часть экрана, чтобы освободить место (нажмите клавишу Alt и, удерживая левую кнопку мыши, перетащите окно).

Отображение данных

скриншот

После запуска сессии GRASS выведем на экран растровый слой “elevation” из набора PERMANENT. Для этого перейдите в окно GIS Layer Manager и щёлкните по кнопке панели инструментов с шахматным рисунком и знаком “+”. Затем выберите имя карты из выпадающего списка “map to be displayed” и нажмите Ok.

Сходным образом добавим векторную карту “roadsmajor” из набора PERMANENT, нажав на панели инструментов кнопку со знаком “+” и изогнутой полилинией, напоминающей букву “V”.

Вам помогут подсказки, всплывающие при наведении курсора мыши на иконку.

Если нужно, щёлкните правой кнопкой на растровом слое карты и выберите “Zoom to selected map(s)” для масштабирования.

Теперь вы должны увидеть растр и векторную карту на экране.

Построение профиля поверхности

скриншот

Вернёмся в окну GIS Layer Manager. Выберите в списке слоёв растр elevation. В окне Map Display, справа от кнопок изменения масштаба, на панели Map Display есть кнопка с шахматным рисунком и линейным графиком. Нажмите её и выберите Profile surface map. Автоматически производится поиск в наборе карт @PERMANENT. Если список не появится автоматически, выберите снова карту elevation в качестве растрового слоя и нажмите Ok. Вторая кнопка слева позволяет задать линию профиля, нажмите её и затем отметьте несколько точек в окне карты. После этого вернитесь к окну Profile и нажмите на кнопку с изображением глаза, чтобы построить график профиля. Нажмите кнопку I/O справа, чтобы закрыть окно профиля.

Генерация случайной поверхности

Теперь давайте создадим новую карту. Вначале задайте вычислительный регион с охватом по умолчанию с помощью Settings ‣ Region ‣ Set region, выбрав “Set from default region” и нажав [Run]. Затем выберите Raster ‣ Generate surfaces ‣ Fractal surface из меню (внизу списка); задайте имя нового растра; настройте любые параметры по желанию на вкладке “Optional” (значения по умолчанию вполне подойдут); нажмите [Run]. Теперь вы можете закрыть окно модуля r.surf.fractal, нажав [Close].

скриншот

Настройка цветового отображения растра

Теперь вы можете видеть новый растр в списке слоёв вместе с растром рельефа, с тем отличием, что создан он был в вашем рабочем наборе “user1”. Вы можете снять галочку со слоя elevation, чтобы два растра не накладывались друг на друга. Нажмите на кнопку с пиктограммой глаза, чтобы увидеть вашу новую карту, если она не отрисовалась автоматически.

Цвета растра могут вас не устроить, так что давайте изменим их. Выбрав в списке слоёв растр фрактальной поверхности, щёлкните правой кнопкой на имени этого растрового слоя и выберите “Set color table”. Альтернативный способ управления цветовыми шкалами — выбрать в меню Raster Manage colors ‣ Color tables. На вкладке “Define” кликните на выпадающий список параметра “Type of color table” и выберите одну цветовую шкалу из этого списка. Хорошим выбором в нашем случае будет “terrain” или “srtm”. Выбрав цвета, нажмите кнопку [Run] и закройте диалоговое окно модуля r.colors. После этого цвета должны обновиться автоматически.

Создание растра светотеневой отмывки рельефа

скриншот

Следующим упражнением будет создание растра светотеневой отмывки рельефа из уже знакомого нам слоя “elevation”. Начнём с проверки, что вычислительный регион соответствует нужному растру (“elevation” в наборе PERMANENT). Чтобы сделать это, убедитесь, что растр открыт в списке слоёв в главном окне GIS Layer Manager, щёлкните правой кнопкой мыши по имени слоя и выберите “Set computation region from selected map(s)”. Вы заметите, что вкладка управления слоями переключится на текстовую консоль, чтобы отобразить новые настройки. Щёлкните на вкладке “Map layers” внизу, чтобы вернуться к списку слоёв.

В меню Raster выберите Terrain analysis ‣ Compute shaded relief (этот пункт в меню примерно посередине списка), должно появиться окно модуля. Выберите в качестве исходной карты растр “elevation” @PERMANENT, в качестве имени выходной карты можете указать “shaded_relief”. После этого нажмите [Run]. Вы увидите, что новая карта shaded_relief @user1 добавлена в ваш список слоёв. Снимите галочки с остальных растровых слоёв, чтобы отобразился только вновь созданный растровый слой отмывки рельефа.

Водотоки и бассейны

Опять откройте растр elevation @PERMANENT. Если вы изменяли регион после выполнения предыдущего шага, вновь щёлкните правой кнопкой на имени слоя и выберите Set computational region from selected map(s) в контекстном меню, чтобы в расчёте водосборных бассейнов участвовала вся карта.

Note

Охват и масштаб области отображения карты wxGUI не зависят от вычислительных задач геообработки и не влияют на них. Каждый раз проверяйте вычислительный регион с помощью Settings ‣ Region ‣ Display Region; это имеет фундаментальное значение для всех операций с растрами. Растровые карты, границы и разрешение которых отличаются, будут преобразованы к текущему вычислительному региону на лету.

Теперь в меню Raster выберите Hydrologic modeling ‣ Watershed analysis. Запустится интерфейс модуля r.watershed. Установите растр elevation как входной, на той же вкладке ‘Inputs’ задайте порог минимального размера внешнего водосборного бассейна (threshold) в 10000 ячеек, затем на вкладке ‘Outputs’ введите имя растра бассейнов (basins) “elev.basins” и имя растра водотоков (streams) “elev.streams”. Затем нажмите [Run].

Вернитесь к окну GIS Layer Manager, убедитесь, что эти два новых растра есть в списке слоёв и проверьте, чтобы слева от имени слоя стояла галочка отображения. Пока можете снять галочку с растра водотоков. Щёлкните правой кнопкой мыши по слою “elev.basins” и выберите “Change opacity level”. Выставьте уровень 50%, экран автоматически обновится. Перетащите слой вниз в списке слоёв (равно как и созданный ранее растр теневой отмывки), если вы хотите, чтобы он отображался позади слоя водосборных бассейнов, и поставьте галочку, чтобы растр отображался на заднем плане.

скриншот

В окне GIS Layer Manager щёлкните на кнопке Add various overlays и выберите Add a grid layer. Задайте размер сетки 5000 (в единицах карты, в данном случае метры). Сделав это, нажмите OK. Если хотите, можете изменить цвета линий сетки и текстовых подписей.

Чтобы добавить масштабную шкалу на экран, перейдите в окно Map Display и нажмите кнопку “Add map elements” справа от кнопки построения профиля. Выберите “Show/hide scalebar” и нажмите Ok. В верхнем левом углу экрана должна появиться шкала линейного масштаба. Перетащите её в нижний правый угол.

Теперь вы, наверное, можете подумать, что шрифты выглядят немного неэстетично. Это легко поправимо: в меню окна GIS Layer Manager выберите Settings ‣ Preferences и на вкладке Map Display нажмите кнопку [Set font]. Выберите один из имеющихся шрифтов (например, DroidSans) и нажмите [Apply] в окне Preferences. Вы должны полностью обновить экран, чтобы увидеть изменения, для этого нажмите кнопку перерисовки возле кнопки с изображением глаза в окне Map Display. Теперь шрифты должны выглядеть намного привлекательней.

Модули для работы с векторными данными

Описанные выше задачи касались только нескольких растровых модулей. Не делайте из этого вывод, что GRASS чисто растровая ГИС: векторный движок и модули для работы с векторными данными являются не менее функциональными. GRASS полностью поддерживает топологическую векторную модель данных, которая позволяет проводить все виды анализа.

скриншот

Продолжим работать с водосборными бассейнами, выделенными ранее. Теперь мы преобразуем их в векторные полигоны. В меню Raster выберите Map type conversions ‣ Raster to vector. В появившемся диалоге модуля r.to.vect выберите elev.basins @user1 как входную карту; задайте имя выходной карты, например, basins_areas (имена векторных карт должны быть SQL-совместимыми, поэтому не любые символы можно использовать); выставьте геометрический тип создаваемых объектов area. На вкладке Attributes поставьте галочку, чтобы использовать значения растра как номера (идентификаторы) категорий векторных данных, так как они будут соответствовать значениям созданного ранее растра участков водотоков. Затем нажмите [Run]. Когда новая векторная карта отобразится на экране, вы можете щёлкнуть правой кнопкой мыши по имени слоя в списке менеджера слоёв и выставить уровень прозрачности слоя равным 50%.

Настройка цветового отображения векторной карты

Так же, как мы это сделали с растровой картой, мы изменим цветовую шкалу отображения новой векторной карты водосборных бассейнов. Выбрав basins_areas в списке слоёв, щёлкните правой кнопкой мыши на имени этого векторного слоя и вывберите “Set color table”. На вкладке ‘Define’ щёлкните на выпадающем списке опции “Name of color table” и выберите, например, “bcyr” (blue-cyan-yellow-red). Затем нажмите кнопку [Run] и закройте диалоговое окно v.colors. Вам может понадобиться обновить карту, чтобы увидеть раскрашенный векторный слой.

скриншот

Работа с атрибутами

Теперь добавим к получившимся полигонам атрибутивные поля, содержащие среднюю высоту поверхности в каждой долине. В меню Vector выберите Update attributes ‣ Update area attributes from raster. Используйте векторную карту basin_areas в качестве входных полигональных данных и выберите растр elevation, по которому будет считаться статистика. Задайте префикс колонки elev и нажмите [Run]. Закройте окно модуля, когда тот закончит свою работу. Вы можете посмотреть значения в окне Map Display, используя пятую кнопку слева: после того, как убедитесь, что наш полигональный слой выделен в списке слоёв, щёлкайте по полигонам в окне карты.

Вы можете раскрасить полигоны в соответствии со средними высотами бассейнов, используя модуль v.colors. В меню Vector выберите Manage colors ‣ Color tables. Укажите входную векторную карту basin_areas, в качестве значения-источника выберите attr вместо cat. Затем на вкладке “Define” выберите атрибутивное поле elev_average в качестве колонки, содержащей числовой диапазон. Мы хотим скопировать цвета с растровой карты elevation, так что выберем её имя в качестве значения параметра “Raster map from which to copy color table”. После нажатия кнопки [Run] вам потребуется обновить отображение карты (вторая иконка слева), чтобы увидеть изменившуюся карту водосборных басейнов.

Теперь подробнее рассмотрим таблицу атрибутов и “построитель запросов” (SQL builder). В окне Layer Manager щёлкните по кнопке с таблицей (“Show attribute data for selected vector map”, вторая слева в нижнем ряду). Откроется отдельное окно с таблицей базы данных, связанной с выбранной векторной картой. В качестве примера сделаем простой запрос, чтобы найти бассейны без больших вариаций в них. Там, где написано SELECT * FROM basin_areas WHERE, выберите elev_stddev из выпадающего списка (это поле содержит информацию о стандартном отклонении), затем в текстовом поле справа введите < 50 и нажмите [Apply]. Вы заметите, что число выбранных записей в строке информации в нижней части окна сократилось, и что все строки с большими значениями стандартного отклонения теперь исчезли из отображаемой таблицы. Щёлкните правой кнопкой мыши по таблице и выберите Select all. Вновь щёлкните правой кнопкой мыши по таблице и выберите Highlight selected features. Вы увидите, что в окне Map Display будут показаны, например, аллювиальные равнины и плоские вершины гор.

3D-визуализация

скриншот

Чтобы запустить инструмент 3D-визуализации, выберите карту elevation в качестве растрового слоя высот в списке слоёв и дополнительно выделите этот пункт, затем выберите “3D view” в окне Map Display (в правой части панели инструментов). После загрузки пользовательского интерфейса 3D-отображения вы увидите несколько вкладок для управления трёхмерным видом. Выберите вкладку “Data” и установите значение “1” для высокого разрешения (чем меньше значение, тем выше разрешение), затем затем перемещайте “кружок” позиционирования и слайдер высоты для получения разных видов.

Чтобы наложить карты, космоснимки или аэрофото поверх цифровой модели рельефа, на вкладке “Data” в пункте Surface Attributes выберите имя карты. Карта “landuse” в наборе PERMANENT будет хорошим выбором. Новый вид будет отрисован немедленно.

Для облегчения навигации в окне 3D включите режим “Rotate 3D scene” в панели инструментов отображения карты и используйте мышь для вращения вида.

Что ещё можно попробовать?

Хотя это и не описано здесь, вам может быть интересно поэкспериментировать с графическим компоновщиком карт (Cartographic Composer) и объектно- ориентированным инструментом графического моделирования (Graphical Modeling Tool), поддерживающим экспорт в Python. Вы найдёте кнопки для их запуска в нижнем ряду иконок в окне Layer Manager. Дальнейшие детали могут быть найдены на страницах помощи wxGUI.

Интерфейс wxGUI написан на Python, и если вы поклонник этого языка программирования, то вам доступно много полезных инструментов и API. В нижней части окна Layer Manager нажмите на вкладку Python shell и наберите help(grass.core), чтобы посмотреть список функций, доступных в главной Python-библиотеке GRASS. Кроме базовых функций ГИС, доступны также библиотеки array (NumPy), db (базы данных), raster и vector. Для более сложных задач поддерживается также Python CTypes, дающий программистам на Python доступ к обширным C-библиотекам GRASS.

Выключение GRASS и командная строка

Закончив с примерами, выйдите из интерфейса GRASS через меню File ‣ Exit GUI. Прежде чем вы закроете сессию GRASS в терминале, попробуйте запуск модулей из командной строки, набрав “g.manual --help”. На экран будет выведен список опций этого модуля. Командная строка GRASS — это то, где проявляется настоящая мощь этой ГИС. GRASS спроектирована, чтобы все команды можно было соединять вместе скриптами для выполнения массовой обработки данных. Популярными скриптовыми языками являются Bourne Shell и Python, и для обоих доступно множество приёмов, облегчающих создание скриптов. С помощью этих средств всего лишь за 5 минут написания кода можно создать новый модуль GRASS, включающий мощный парсер, графический интерфейс и шаблон справочной страницы.

Команда “g.manual -i” запустит веб-браузер со страницей справки модуля. Когда закончите, закройте браузер и наберите “exit” в приглашении командной строки GRASS, чтобы покинуть среду ГИС.

Подробности