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
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
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
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
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
- Репутация: 793
- Ваше звание: званий не имею
- Откуда: Москва
Re: GRASS Graphical Modeler - массовый экспорт растров
На здоровье Обращайтесь, если что.
Это по сути то же самое, разницы нет. Главное -- скопировать файл скрипта куда надо (в каталог, который прописан в спец. переменной GRASS_ADDON_PATH). Ну или указать нужный каталог в переменной.syroezhka писал(а): Запускала правда не через "Command console", а через File -> Launch Script. Сработала сила привычки работы через менюшки.
Редактор материалов, модератор форума
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 18 гостей