Обсудить в форуме Комментариев 28Редактировать в вики
Описание расширения 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 wxGUI Modeler рассматривается на примере создания серии композитных изображений по данным LANDSAT 7. Если неохота искать и качать сцены с сайта USGS, то можно потренироваться на доступных данных на этом сайте.
Часто нужно сделать композитные изображения различных каналов LANDSAT. Обычно этот процесс разделён на несколько этапов:
Автоматически создавать скорректированные по атмосфере, композитные изображения следующих комбинаций каналов: 321, 453, 543, 742, 745, 754.
Предположим, что растры уже импортированы в GRASS, район GRASS установлен корректно и метод, используемый при атмосферной коррекции - "uncorrected".
Прежде всего, следует начать с добавления новых команд (меню 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, то можно увидеть блок-схему всего процесса.
Я советую реорганизовать схему так, чтобы она выглядела более или менее понятной для тех, кто будет использовать модель позже.
И наконец, следует проверить модель и запустить её!
Впоследствии возможно сделать экспорт модели в скрипт 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
Обсудить в форуме Комментариев 28Редактировать в вики
Последнее обновление: 2014-05-14 22:42
Дата создания: 24.06.2012
Автор(ы): Владимир Наумов
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).