Краткое описание GRASS Graphical Modeler: различия между версиями
Rhot (обсуждение | вклад) (→Выводы) |
Rhot (обсуждение | вклад) (→Выводы) |
||
(не показано 11 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{Статья|Опубликована|grass-modeller}} | |||
{{Аннотация|Описание расширения GRASS для визуального моделирования и материалы для самостоятельной работы}} | |||
[http://grass.osgeo.org/wiki/WxGUI_Modeler GRASS Graphical Modeler] - это расширение GRASS, которое позволяет пользователю создавать, редактировать, управлять и выполнять моделями геопространственного анализа. GRASS Graphical Modeler написана командой разработчиков GRASS. Документация была создана [http://geo.fsv.cvut.cz/~landa/ Мартином Ланда]. Начиная с версии GRASS 6.4.2 это расширение включено в программу по умолчанию, отдельная установка не требуется. | [http://grass.osgeo.org/wiki/WxGUI_Modeler GRASS Graphical Modeler] - это расширение GRASS, которое позволяет пользователю создавать, редактировать, управлять и выполнять моделями геопространственного анализа. GRASS Graphical Modeler написана командой разработчиков GRASS. Документация была создана [http://geo.fsv.cvut.cz/~landa/ Мартином Ланда]. Начиная с версии GRASS 6.4.2 это расширение включено в программу по умолчанию, отдельная установка не требуется. | ||
На момент написания статьи расширение находилось в стадии разработки. | На момент написания статьи расширение находилось в стадии разработки. | ||
=Введение= | ==Введение== | ||
Расширение wxGUI Modeler в некоторой степени напоминает [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w00000001000000 ArcGIS ModelBuilder], который в свою очередь, похож на [http://en.wikipedia.org/wiki/ERDAS_IMAGINE#ERDAS_IMAGINE_Spatial_Modeler ERDAS IMAGINE Spatial Modeler]. Согласно Википедии, Spatial Modeler впервые появилась в 1993 году. После этого в 2004 году ESRI (Environmental Systems Research Institute) создали собственный инструмент под названием ModelBuilder, [http://en.wikipedia.org/wiki/ERDAS_IMAGINE#ERDAS_IMAGINE_Spatial_Modeler сообщает Википедия]. | Расширение wxGUI Modeler в некоторой степени напоминает [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//002w00000001000000 ArcGIS ModelBuilder], который в свою очередь, похож на [http://en.wikipedia.org/wiki/ERDAS_IMAGINE#ERDAS_IMAGINE_Spatial_Modeler ERDAS IMAGINE Spatial Modeler]. Согласно Википедии, Spatial Modeler впервые появилась в 1993 году. После этого в 2004 году ESRI (Environmental Systems Research Institute) создали собственный инструмент под названием ModelBuilder, [http://en.wikipedia.org/wiki/ERDAS_IMAGINE#ERDAS_IMAGINE_Spatial_Modeler сообщает Википедия]. | ||
Строка 22: | Строка 25: | ||
Работа расширения GRASS wxGUI Modeler рассматривается на примере создания серии композитных изображений по данным LANDSAT 7. Если неохота искать и качать сцены с сайта [http://earthexplorer.usgs.gov/ USGS], то можно потренироваться на [http://gis-lab.info/data/samples/lt51700282007141mor00.7z доступных данных] на этом сайте. | Работа расширения GRASS wxGUI Modeler рассматривается на примере создания серии композитных изображений по данным LANDSAT 7. Если неохота искать и качать сцены с сайта [http://earthexplorer.usgs.gov/ USGS], то можно потренироваться на [http://gis-lab.info/data/samples/lt51700282007141mor00.7z доступных данных] на этом сайте. | ||
=Задача= | ==Задача== | ||
Часто нужно сделать композитные изображения различных каналов LANDSAT. Обычно этот процесс разделён на несколько этапов: | Часто нужно сделать композитные изображения различных каналов LANDSAT. Обычно этот процесс разделён на несколько этапов: | ||
Строка 30: | Строка 33: | ||
# Создание композитного изображения (модуль r.composite). | # Создание композитного изображения (модуль r.composite). | ||
===Цель=== | |||
Автоматически создавать скорректированные по атмосфере, композитные изображения следующих комбинаций каналов: 321, 453, 543, 742, 745, 754. | Автоматически создавать скорректированные по атмосфере, композитные изображения следующих комбинаций каналов: 321, 453, 543, 742, 745, 754. | ||
===Инструменты и данные=== | |||
* Операционная система Ubuntu 11.10 | * Операционная система Ubuntu 11.10 | ||
Строка 39: | Строка 42: | ||
* Любой набор снимков LANDSAT (сенсор ETM+) | * Любой набор снимков LANDSAT (сенсор ETM+) | ||
= | ==Алгоритм действий== | ||
Предположим, что растры уже импортированы в GRASS, район GRASS установлен корректно и метод, используемый при атмосферной коррекции - "uncorrected". | Предположим, что растры уже импортированы в GRASS, район GRASS установлен корректно и метод, используемый при атмосферной коррекции - "uncorrected". | ||
# Переименовать растры по шаблону B.* Например, ххххххххххххххх_B10 → B.1 (можно воспользоваться [http://grass.osgeo.org/wiki/LANDSAT#Hint:_Minimal_disk_space_copies скриптом] для переименования); | # Переименовать растры по шаблону B.* Например, ххххххххххххххх_B10 → B.1 (можно воспользоваться [http://grass.osgeo.org/wiki/LANDSAT#Hint:_Minimal_disk_space_copies скриптом] для переименования); | ||
# Запустить расширение через меню File → Graphical Modeler или кликая на иконку [[Файл:Modeler-icon.png|thunmb|24px|Modeler icon]] | # Запустить расширение через меню File → Graphical Modeler или кликая на иконку [[Файл:Modeler-icon.png|thunmb|24px|Modeler icon]] | ||
Строка 64: | Строка 65: | ||
# Запустить модель | # Запустить модель | ||
===Добавляем команды=== | |||
Прежде всего, следует начать с добавления новых команд (меню Model -> Add command). | Прежде всего, следует начать с добавления новых команд (меню Model -> Add command). | ||
[[Файл:Adding_new_module.png|center|Диалоговое окно Add command в GRASS wxGUI Modeler]] | [[Файл:Adding_new_module.png|center|Диалоговое окно Add command в GRASS wxGUI Modeler]] | ||
===Задаём переменные=== | |||
Переменные задаются знаком %, т.е. переменная ''%metfile'' обозначает название заголовока файла (.met / MTL.txt) для сенсоров Landsat ETM + или TM5. Переменные могут быть следующих типов: строковые, целые числа, числа с плавающей точкой, векторные, растровые, набор данных или путь к файлу. Все переменные, используемые в модели, должны быть добавлены на вкладке Variables. | Переменные задаются знаком %, т.е. переменная ''%metfile'' обозначает название заголовока файла (.met / MTL.txt) для сенсоров Landsat ETM + или TM5. Переменные могут быть следующих типов: строковые, целые числа, числа с плавающей точкой, векторные, растровые, набор данных или путь к файлу. Все переменные, используемые в модели, должны быть добавлены на вкладке Variables. | ||
[[Файл:Modeler_variables.png|thumb| | [[Файл:Modeler_variables.png|thumb|900px|center|Вкладка Variables, позволяющая управлять переменными в GRASS Graphical Modeler]] | ||
Таким образом, первая команда будет выглядеть так: | Таким образом, первая команда будет выглядеть так: | ||
Строка 78: | Строка 79: | ||
В результате мы должны получить список команд, которые будут выполнены автоматически при запуске модели. | В результате мы должны получить список команд, которые будут выполнены автоматически при запуске модели. | ||
[[Файл:Modeler_items.png|thumb| | [[Файл:Modeler_items.png|thumb|900px|center|Список команд, которые будут выполнены автоматически при запуске модели в wxGUI Modeler]] | ||
Если вернуться к вкладке Model, то можно увидеть блок-схему всего процесса. | Если вернуться к вкладке Model, то можно увидеть блок-схему всего процесса. | ||
[[Файл:Modeler_model1.png|thumb| | [[Файл:Modeler_model1.png|thumb|900px|center|Изначальная блок-схема в окне wxGUI Modeler]] | ||
===Реорганизуем блок-схему=== | |||
Я советую реорганизовать схему так, чтобы она выглядела более или менее понятной для тех, кто будет использовать модель позже. | Я советую реорганизовать схему так, чтобы она выглядела более или менее понятной для тех, кто будет использовать модель позже. | ||
[[Файл:Model_image.png|thumb| | [[Файл:Model_image.png|thumb|900px|center|Блок-схема, приведённая в нормальный вид]] | ||
===Проверяем и запускаем модель=== | |||
И наконец, следует проверить модель и запустить её! | И наконец, следует проверить модель и запустить её! | ||
[[Файл:Model_in_process.png| | [[Файл:Model_in_process.png|900px|center|Модель в действии]] | ||
= | ==Экспорт в Python== | ||
Впоследствии возможно сделать экспорт модели в скрипт Pyhton для более тонкой доработки модели. Вид первоначального скрипта имеет вид: | |||
<syntaxhighlight lang="python"> | |||
Впоследствии возможно сделать экспорт в скрипт Pyhton для более тонкой доработки модели. Вид первоначального скрипта имеет вид: | |||
#!/usr/bin/env python | #!/usr/bin/env python | ||
# | # | ||
Строка 225: | Строка 224: | ||
options, flags = grass.parser() | options, flags = grass.parser() | ||
atexit.register(cleanup) | atexit.register(cleanup) | ||
sys.exit(main()) | sys.exit(main())</syntaxhighlight> | ||
Зная язык программирования [http://www.python.org/ Python], первоначальный скрипт можно привести к более лаконичному виду и использовать его уже в повседневной работе: | Зная язык программирования [http://www.python.org/ Python], первоначальный скрипт можно привести к более лаконичному виду и использовать его уже в повседневной работе: | ||
<syntaxhighlight lang="python">#!/usr/bin/env python | |||
import sys | import sys | ||
import os | import os | ||
Строка 272: | Строка 271: | ||
options, flags = grass.parser() | options, flags = grass.parser() | ||
atexit.register(cleanup) | atexit.register(cleanup) | ||
sys.exit(main()) | sys.exit(main())</syntaxhighlight> | ||
==Выводы== | |||
В результате запуска модели, шесть растров были готовы менее, чем за десять минут. | |||
[[Файл:Results grass modeler.png|thumb|900px|center|Коллаж из растров, созданных в результате работы GRASS wxGUI Modeler.]] | |||
Время начала запуска: 9:34:16; время окончания работы модели: 9:41:35. Кроме того, помимо собственно композитных изображений были созданы скорректированные по атмосфере растры всех каналов, которые могут быть использованы для дальнейшего анализа. | |||
[http://wiki.gis-lab.info/w/%D0%A4%D0%B0%D0%B9%D0%BB:L7_toar_composite.zip Файл] модели и скрипт переименования каналов LANDSAT могут быть использованы для самостоятельного запуска модели. | [http://wiki.gis-lab.info/w/%D0%A4%D0%B0%D0%B9%D0%BB:L7_toar_composite.zip Файл] модели и скрипт переименования каналов LANDSAT могут быть использованы для самостоятельного запуска модели. |
Текущая версия от 04:08, 18 октября 2012
по адресу http://gis-lab.info/qa/grass-modeller.html
Описание расширения GRASS для визуального моделирования и материалы для самостоятельной работы
GRASS Graphical Modeler - это расширение GRASS, которое позволяет пользователю создавать, редактировать, управлять и выполнять моделями геопространственного анализа. GRASS Graphical Modeler написана командой разработчиков GRASS. Документация была создана Мартином Ланда. Начиная с версии GRASS 6.4.2 это расширение включено в программу по умолчанию, отдельная установка не требуется.
На момент написания статьи расширение находилось в стадии разработки.
Введение
Расширение wxGUI Modeler в некоторой степени напоминает ArcGIS ModelBuilder, который в свою очередь, похож на ERDAS IMAGINE Spatial Modeler. Согласно Википедии, Spatial Modeler впервые появилась в 1993 году. После этого в 2004 году ESRI (Environmental Systems Research Institute) создали собственный инструмент под названием ModelBuilder, сообщает Википедия.
Расширение позволяет выполнять следующее:
- задавать действия (команды GRASS);
- задавать входящие данные (растровые, векторные и 3D-растровые);
- устанавливать связи между действиями и входными данными;
- задавать циклы и условия выполнения;
- проверять модель на работоспособность;
- запускать модель;
- сохранять настройки модели в файл (*.gxm);
- экспортировать модель в скрипт на Python'е;
- экспортировать концептуальную модель в изображение (поддерживаемые форматы: PNG, BMP, GIF, JPG, PCX, PNM, TIF, XPM).
Работа расширения GRASS wxGUI Modeler рассматривается на примере создания серии композитных изображений по данным LANDSAT 7. Если неохота искать и качать сцены с сайта USGS, то можно потренироваться на доступных данных на этом сайте.
Задача
Часто нужно сделать композитные изображения различных каналов LANDSAT. Обычно этот процесс разделён на несколько этапов:
- Импорт растров в GRASS (модуль r.in.gdal);
- Атмосферная коррекция для устранения влияния атмосферы (модуль i.landsat.toar);
- Автоматическое улучшение цветовой карты (модуль i.landsat.rgb);
- Создание композитного изображения (модуль r.composite).
Цель
Автоматически создавать скорректированные по атмосфере, композитные изображения следующих комбинаций каналов: 321, 453, 543, 742, 745, 754.
Инструменты и данные
- Операционная система Ubuntu 11.10
- GRASS 7.0.svn50461 (2012)
- Любой набор снимков LANDSAT (сенсор ETM+)
Алгоритм действий
Предположим, что растры уже импортированы в GRASS, район GRASS установлен корректно и метод, используемый при атмосферной коррекции - "uncorrected".
- Переименовать растры по шаблону B.* Например, ххххххххххххххх_B10 → B.1 (можно воспользоваться скриптом для переименования);
- Запустить расширение через меню File → Graphical Modeler или кликая на иконку
- Добавить команды, необходимые для решения поставленной задачи
- i.landsat.toar -t --overwrite --verbose input_prefix=B. output_prefix=toar. metfile=%metfile sensor=tm7 method=uncorrected percent=0.01 pixel=1000 sat_zenith=8.2000 rayleigh=0.0
- i.landsat.rgb --verbose red=toar.3 green=toar.2 blue=toar.1 strength=98
- r.composite --overwrite --verbose red=toar.3 green=toar.2 blue=toar.1 levels=32 output=321
- i.landsat.rgb --verbose red=toar.4 green=toar.5 blue=toar.3 strength=98
- r.composite --overwrite --verbose red=toar.4 green=toar.5 blue=toar.3 levels=32 output=453
- i.landsat.rgb --verbose red=toar.5 green=toar.4 blue=toar.3 strength=98
- r.composite --overwrite --verbose red=toar.5 green=toar.4 blue=toar.3 levels=32 output=543
- i.landsat.rgb --verbose red=toar.7 green=toar.4 blue=toar.2 strength=98
- r.composite --overwrite --verbose red=toar.7 green=toar.4 blue=toar.2 levels=32 output=742
- i.landsat.rgb --verbose red=toar.7 green=toar.4 blue=toar.5 strength=98
- r.composite --overwrite --verbose red=toar.7 green=toar.4 blue=toar.5 levels=32 output=745
- i.landsat.rgb --verbose red=toar.7 green=toar.5 blue=toar.4 strength=98
- r.composite --overwrite --verbose red=toar.7 green=toar.5 blue=toar.4 levels=32 output=754
- Задать переменные (в нашем случае она одна - %metfile)
- Проверить модель на работоспособность
- Запустить модель
Добавляем команды
Прежде всего, следует начать с добавления новых команд (меню Model -> Add command).
Задаём переменные
Переменные задаются знаком %, т.е. переменная %metfile обозначает название заголовока файла (.met / MTL.txt) для сенсоров Landsat ETM + или TM5. Переменные могут быть следующих типов: строковые, целые числа, числа с плавающей точкой, векторные, растровые, набор данных или путь к файлу. Все переменные, используемые в модели, должны быть добавлены на вкладке Variables.
Таким образом, первая команда будет выглядеть так:
i.landsat.toar -t –overwrite –verbose input_prefix=B. output_prefix=toar. metfile=%metfile sensor=tm7 method=uncorrected percent=0.01 pixel=1000 sat_zenith=8.2000 rayleigh=0.0
В результате мы должны получить список команд, которые будут выполнены автоматически при запуске модели.
Если вернуться к вкладке Model, то можно увидеть блок-схему всего процесса.
Реорганизуем блок-схему
Я советую реорганизовать схему так, чтобы она выглядела более или менее понятной для тех, кто будет использовать модель позже.
Проверяем и запускаем модель
И наконец, следует проверить модель и запустить её!
Экспорт в Python
Впоследствии возможно сделать экспорт модели в скрипт Pyhton для более тонкой доработки модели. Вид первоначального скрипта имеет вид:
#!/usr/bin/env python
#
############################################################################
#
# MODULE: model_atcor7_composite
#
# AUTHOR(S): Vladimir Naumov
#
# PURPOSE: Script generated by wxGUI Graphical Modeler.
#
# DATE: Tue Jul 24 09:32:51 2012
#
#############################################################################
import sys
import os
import atexit
import grass.script as grass
def cleanup():
pass
def main():
grass.run_command("i.landsat.toar",
flags = 't',
overwrite = True,
verbose = True,
input_prefix = "B.",
output_prefix = "toar.",
metfile = metfile,
sensor = "tm7",
method = "uncorrected",
percent = 0.01,
pixel = 1000,
sat_zenith = 8.2000,
rayleigh = 0.0)
grass.run_command("i.landsat.rgb",
verbose = True,
red = "toar.3",
green = "toar.2",
blue = "toar.1",
strength = 98)
grass.run_command("r.composite",
overwrite = True,
verbose = True,
red = "toar.3",
green = "toar.2",
blue = "toar.1",
levels = 32,
output = "321")
grass.run_command("i.landsat.rgb",
verbose = True,
red = "toar.4",
green = "toar.5",
blue = "toar.3",
strength = 98)
grass.run_command("r.composite",
overwrite = True,
verbose = True,
red = "toar.4",
green = "toar.5",
blue = "toar.3",
levels = 32,
output = "453")
grass.run_command("i.landsat.rgb",
verbose = True,
red = "toar.5",
green = "toar.4",
blue = "toar.3",
strength = 98)
grass.run_command("r.composite",
overwrite = True,
verbose = True,
red = "toar.5",
green = "toar.4",
blue = "toar.3",
levels = 32,
output = "543")
grass.run_command("i.landsat.rgb",
verbose = True,
red = "toar.7",
green = "toar.4",
blue = "toar.2",
strength = 98)
grass.run_command("r.composite",
overwrite = True,
verbose = True,
red = "toar.7",
green = "toar.4",
blue = "toar.2",
levels = 32,
output = "742")
grass.run_command("i.landsat.rgb",
verbose = True,
red = "toar.7",
green = "toar.4",
blue = "toar.5",
strength = 98)
grass.run_command("r.composite",
overwrite = True,
verbose = True,
red = "toar.7",
green = "toar.4",
blue = "toar.5",
levels = 32,
output = "745")
grass.run_command("i.landsat.rgb",
verbose = True,
red = "toar.7",
green = "toar.5",
blue = "toar.4",
strength = 98)
rass.run_command("r.composite",
overwrite = True,
verbose = True,
red = "toar.7",
green = "toar.5",
blue = "toar.4",
levels = 32,
output = "754")
return 0
if __name__ == "__main__":
options, flags = grass.parser()
atexit.register(cleanup)
sys.exit(main())
Зная язык программирования Python, первоначальный скрипт можно привести к более лаконичному виду и использовать его уже в повседневной работе:
#!/usr/bin/env python
import sys
import os
import atexit
import grass.script as grass
def cleanup():
pass
def main():
grass.run_command("i.landsat.toar",
flags = 't',
overwrite = True,
verbose = True,
input_prefix = "B.",
output_prefix = "toar.",
metfile = metfile,
sensor = "tm7",
method = "uncorrected",
percent = 0.01,
pixel = 1000,
sat_zenith = 8.2000,
rayleigh = 0.0)
list = ["321", "453", "543", "742", "745", "754"]
for band in list:
grass.run_command("i.landsat.rgb",
red="toar."+band[0],
green="toar."+band[1],
blue="toar."+band[2],
strength=98)
grass.run_command("r.composite",
red="toar."+band[0],
green="toar."+band[1],
blue="toar."+band[2],
levels=32,
output=band)
return 0
if __name__ == "__main__":
options, flags = grass.parser()
atexit.register(cleanup)
sys.exit(main())
Выводы
В результате запуска модели, шесть растров были готовы менее, чем за десять минут.
Время начала запуска: 9:34:16; время окончания работы модели: 9:41:35. Кроме того, помимо собственно композитных изображений были созданы скорректированные по атмосфере растры всех каналов, которые могут быть использованы для дальнейшего анализа.
Файл модели и скрипт переименования каналов LANDSAT могут быть использованы для самостоятельного запуска модели.
Ссылки
Источник: Vladimir Naumov – Graphical Modeler in GRASS
Официальная страница GRASS Graphical Modeler