GRASS Graphical Modeler - массовый экспорт растров
- syroezhka
- Завсегдатай
- Сообщения: 290
- Зарегистрирован: 21 апр 2008, 21:22
- Репутация: 5
- Откуда: 50°26'N 30°31'E
- Контактная информация:
GRASS Graphical Modeler - массовый экспорт растров
Моя задача состоит в том, что бы экспортировать из грасса более сотни изображений. Со скриптами я не дружу, решила делать это через моделлер. Что я делаю:
1. Добавляю команду add command (r.out.gdal)
2. В свойствах команды, в поле input выставляю %map
3. Добавляю серию растров (add loop/series) и связываю ее с командой
Не могу понять как свойствах команды задать output. Мне нужно что бы у каждого результирующего файла имя было аналогично входящему растру.
1. Добавляю команду add command (r.out.gdal)
2. В свойствах команды, в поле input выставляю %map
3. Добавляю серию растров (add loop/series) и связываю ее с командой
Не могу понять как свойствах команды задать output. Мне нужно что бы у каждого результирующего файла имя было аналогично входящему растру.
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: GRASS Graphical Modeler - массовый экспорт растров
Вам надо задать переменную пути, куда хотите сохранить растры (например path), а в output прописать path+map.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
- syroezhka
- Завсегдатай
- Сообщения: 290
- Зарегистрирован: 21 апр 2008, 21:22
- Репутация: 5
- Откуда: 50°26'N 30°31'E
- Контактная информация:
Re: GRASS Graphical Modeler - массовый экспорт растров
Пытаюсь сделать:
Переменная пути должна быть типа string? Нужно ли в ней прописывать дефолтное значение?
И еще вопрос:
Спасибо за помощь!
Переменная пути должна быть типа string? Нужно ли в ней прописывать дефолтное значение?
И еще вопрос:
как именно эта запись выглядит? вот прям дословно со всеми значками %. я, просто, не понимаю как их соединить вместе.а в output прописать path+map.
Спасибо за помощь!
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: GRASS Graphical Modeler - массовый экспорт растров
Да, типа string. Дефолтное значение указывайте по желанию, я указывал.
Знак процента (%) обозначает переменную, поэтому их надо использовать.
Если не получится, делайте экспорт модели в скрипт на питоне, выкладывайте сюда - посмотрим что там не так.
Знак процента (%) обозначает переменную, поэтому их надо использовать.
Если не получится, делайте экспорт модели в скрипт на питоне, выкладывайте сюда - посмотрим что там не так.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
- syroezhka
- Завсегдатай
- Сообщения: 290
- Зарегистрирован: 21 апр 2008, 21:22
- Репутация: 5
- Откуда: 50°26'N 30°31'E
- Контактная информация:
Re: GRASS Graphical Modeler - массовый экспорт растров
Не получается. Я так вижу проблема именно в задании output. К сожалению, я не владею синтаксисом и поэтому не могу правильно прописать. Если делаю жестко вывод в файл, то все работает. Файл, при этом, естественно, переписывается столько раз, сколько у меня файлов для экспорта.
Вот так выглядят у меня свойства команды: Так выглядит код в окне Python Editor
Так выглядит код при экпорте в скрипт
Вот так выглядят у меня свойства команды: Так выглядит код в окне Python Editor
Код: Выделить всё
import sys
import os
import atexit
import grass.script as grass
def cleanup():
pass
def main():
for map in ['TSX1_1DEM_x3_ASM_0@classification', 'TSX1_1DEM_x3_ASM_135@classification']:
grass.run_command("r.out.gdal",
input = map,
format = "GTiff",
output = path+%map)
return 0
if __name__ == "__main__":
options, flags = grass.parser()
atexit.register(cleanup)
sys.exit(main())
Код: Выделить всё
import sys
import os
import atexit
import grass.script as grass
def cleanup():
pass
def main():
for map in ['TSX1_1DEM_x3_ASM_0@classification', 'TSX1_1DEM_x3_ASM_135@classification']:
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: GRASS Graphical Modeler - массовый экспорт растров
Видно, что переменная path нигде не задана.
Почему различается код?
Почему различается код?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
- syroezhka
- Завсегдатай
- Сообщения: 290
- Зарегистрирован: 21 апр 2008, 21:22
- Репутация: 5
- Откуда: 50°26'N 30°31'E
- Контактная информация:
Re: GRASS Graphical Modeler - массовый экспорт растров
Я ее задавала через вкладку Variables. Или этого не достаточно?Видно, что переменная path нигде не задана.
Меня этот вопрос тоже очень занимает.Почему различается код?
Пожалуйста, напишите как у вас выглядит запись в Output. У меня она %path+%map. Это правильно? Каким знаком соединяются две переменные?
- rhot
- Гуру
- Сообщения: 1727
- Зарегистрирован: 25 янв 2011, 17:50
- Репутация: 194
- Ваше звание: доктор
- Откуда: Архангельск
Re: GRASS Graphical Modeler - массовый экспорт растров
Вот как-то так...Не могу знать тонкостей работы этой программы в вашей операционной системе, т.к. у меня не виндоус.
Код: Выделить всё
#!/usr/bin/env python
#
##############################################################################
#
# MODULE: model
#
# AUTHOR(S): rhot
#
# PURPOSE: Script generated by wxGUI Graphical Modeler.
#
# DATE: Mon Aug 12 20:41:49 2013
#
##############################################################################
import sys
import os
import atexit
import grass.script as grass
def cleanup():
pass
def main():
tiffsdir = '/home/rhot/GIS_data/tiffs_export'
grass.run_command("g.region",
flags = 'd')
for map in ['B10@PERMANENT', 'B20@PERMANENT', 'B30@PERMANENT', 'B40@PERMANENT', 'B50@PERMANENT', 'B61@PERMANENT', 'B62@PERMANENT', 'B70@PERMANENT', 'B80@PERMANENT']:
grass.run_command("r.out.gdal",
input = map,
output = tiffsdir+map,
format = "GTiff", overwrite = True)
return 0
if __name__ == "__main__":
options, flags = grass.parser()
atexit.register(cleanup)
sys.exit(main())
Бывает, переменная не сохраняется, особенно когда делаешь много изменений в самой модели. Поэтому на помощь приходит скрипт на питоне, который потом дорабатывают.syroezhka писал(а):Я ее задавала через вкладку Variables. Или этого не достаточно?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: GRASS Graphical Modeler - массовый экспорт растров
Я тоже после многих попыток сегодня не смог заставить моделлер работать как надо. Надо, видимо, пробовать в версии 7.0.
Вот кроссплатформенное "костыльное" решение в виде мини-модуля для массового экспорта растров в геотиффы из данного набора:
Как видно, параметров у скрипта два: "pattern", т.е. шаблон для выбора растров, и "path", т.е. полный путь к каталогу, куда мы хотим их экспортировать.
Пример шаблона: "TSX1_1DEM_x3_ASM*".
Примеры путей: "C:\", "D:\Work","/home/user/Desktop" и т.п. (без кавычек, ест-но).
Проверено на Linux (GRASS 6.4.3), Win7 (OSGeo4W).
Краткая инструкция на примере OSGeo4W (для запуска из граф. интерфейса):
- скопировать скрипт в папку "C:\OSGeo4W\apps\grass\grass-6.4.3RC2\etc\gui\scripts";
- запустить GRASS с wxGUI;
- главном окне на вкладке "Command console" набрать "r.out.geotiffz.py", запустить модуль;
- в окне модуля в графе "Path" указать _полный_ путь (со всеми слэшами) к папке, куда будет производиться экспорт;
- на вкладке "Optional" можно задать шаблон ("Pattern") для имён растров; если не задано, то экспортированы будут все растры в текущем наборе.
Вот кроссплатформенное "костыльное" решение в виде мини-модуля для массового экспорта растров в геотиффы из данного набора:
Код: Выделить всё
> ./r.out.geotiffz.py -help
Description:
Mass raster export to GTiff
Keywords:
raster
Usage:
r.out.geotiffz.py [pattern=name] path=name [--verbose] [--quiet]
Flags:
--v Verbose module output
--q Quiet module output
Parameters:
pattern Pattern to select rasters
path Path to export rasters
Пример шаблона: "TSX1_1DEM_x3_ASM*".
Примеры путей: "C:\", "D:\Work","/home/user/Desktop" и т.п. (без кавычек, ест-но).
Проверено на Linux (GRASS 6.4.3), Win7 (OSGeo4W).
Краткая инструкция на примере OSGeo4W (для запуска из граф. интерфейса):
- скопировать скрипт в папку "C:\OSGeo4W\apps\grass\grass-6.4.3RC2\etc\gui\scripts";
- запустить GRASS с wxGUI;
- главном окне на вкладке "Command console" набрать "r.out.geotiffz.py", запустить модуль;
- в окне модуля в графе "Path" указать _полный_ путь (со всеми слэшами) к папке, куда будет производиться экспорт;
- на вкладке "Optional" можно задать шаблон ("Pattern") для имён растров; если не задано, то экспортированы будут все растры в текущем наборе.
Редактор материалов, модератор форума
- syroezhka
- Завсегдатай
- Сообщения: 290
- Зарегистрирован: 21 апр 2008, 21:22
- Репутация: 5
- Откуда: 50°26'N 30°31'E
- Контактная информация:
Re: GRASS Graphical Modeler - массовый экспорт растров
Спасибо, большое!
Без скриптов ни куда
буду разбираться. Статья по теме как раз есть на гислабе.
Кстати, окно Python Editor живет своей жизнью, результат в нем каждый раз разный. При одинаковой модели. Прототип, блин
Без скриптов ни куда

Кстати, окно Python Editor живет своей жизнью, результат в нем каждый раз разный. При одинаковой модели. Прототип, блин
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: GRASS Graphical Modeler - массовый экспорт растров
Подтверждаю. По крайней мере, в GRASS 6.4.*syroezhka писал(а): Кстати, окно Python Editor живет своей жизнью, результат в нем каждый раз разный. При одинаковой модели.
Ну да, как и весь wxGUI.syroezhka писал(а): Прототип, блин
Редактор материалов, модератор форума
- syroezhka
- Завсегдатай
- Сообщения: 290
- Зарегистрирован: 21 апр 2008, 21:22
- Репутация: 5
- Откуда: 50°26'N 30°31'E
- Контактная информация:
Re: GRASS Graphical Modeler - массовый экспорт растров
Александр Мурый, на Win7+Osgeo4W (Grass 6.4.3) отработал отлично. Запускала правда не через "Command console", а через File -> Launch Script. Сработала сила привычки работы через менюшки.
Еще раз спасибо!
Еще раз спасибо!
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: GRASS Graphical Modeler - массовый экспорт растров
На здоровье
Обращайтесь, если что.

Это по сути то же самое, разницы нет. Главное -- скопировать файл скрипта куда надо (в каталог, который прописан в спец. переменной GRASS_ADDON_PATH). Ну или указать нужный каталог в переменной.syroezhka писал(а): Запускала правда не через "Command console", а через File -> Launch Script. Сработала сила привычки работы через менюшки.
Редактор материалов, модератор форума
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость