Проблема с модулем r.fill.dir

Ответить
Ремесленник
Активный участник
Сообщения: 117
Зарегистрирован: 23 май 2011, 21:06
Репутация: 5

Проблема с модулем r.fill.dir

Сообщение Ремесленник » 09 ноя 2012, 22:36

Уважаемые Господа!
Столкнулся со следующей проблемой:
модуль r.fill.dir при загрузке цмр ASTER GDEM v2 (разрешение примерно 22 м, объем растра 105 мегабайт, версия GRASS 6.4.2 Win 7 pro x64 rus) очень долго работает и не выдает никакого результата. Загружает одно из ядер процессора примерно от 25 до 50 % и больше никакой информации. Ни полоски на прогресс-баре, ни чего.
Как быть ?
Заранее благодарен за ответы и подсказки!
Вложения
Clipboard-1.jpg
Clipboard-1.jpg (263.55 КБ) 9675 просмотров

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Проблема с модулем r.fill.dir

Сообщение KolesovDmitry » 10 ноя 2012, 07:42

Ничего не могу сказать по существу дела, никогда не пользовался этим модулем, но все-таки задам стандартный вопрос: попробуйте запустить модуль на значительно меньшей территории -- изменится ли поведение программы?

Ремесленник
Активный участник
Сообщения: 117
Зарегистрирован: 23 май 2011, 21:06
Репутация: 5

Re: Проблема с модулем r.fill.dir

Сообщение Ремесленник » 10 ноя 2012, 11:44

Благодарю за подсказку! При обработке данных SRTM объемом примерно 10 мегабайт, такого не происходит. Может проблема в значениях nodata? На моих данных есть участки с отрицательными высотами (-10--15 м ниже уровня моря , просто местность такая).

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Проблема с модулем r.fill.dir

Сообщение Александр Мурый » 13 ноя 2012, 00:17

Ремесленник, опишите последовательность ваших действий с ASTER GDEM v2.
Какие-то странные ошибки выдаёт Питон...
Редактор материалов, модератор форума

Ремесленник
Активный участник
Сообщения: 117
Зарегистрирован: 23 май 2011, 21:06
Репутация: 5

Re: Проблема с модулем r.fill.dir

Сообщение Ремесленник » 13 ноя 2012, 22:14

Последовательность примерно следующая
1. Тайлы скачаны с http://reverb.echo.nasa.gov (одноградусные фрагменты в формате Geotiff)
2. Объединил в единый фрагмент примерно 100 мегабайт объемом, в Global mapper 13, перепроецировал в UTM 38N WGS84.
3. Открываю Grass 6.4.2, который идет в составе с NextGIS (сборка NextGIS-QGIS-c64bb9d-22.10.2012.exe).
4.Открываю рабочий набор в который уже импортирован Aster GDEM.
5.Загружаю в GRASS GIS Layer Manager тот самый слой.
6. Набираю во вкладке Command console комманду r.fill.dir.
7. Указываю в открывшемся интерфейсе мой растр в раскрывающемся списке "Имя существующего растрового слоя содержащего поверхность высот"
8. Даю название в "Вывести растровый слой высот после заполнения"
9. Даю название в "Вывести растровый слой направлений"
10. Ставлю галочку "Закрыть диалоговое окно после окончания операции"
Нажимаю выполнить... и ждууууу.
Когда открываешь диспетчер задач, в списке процессов, процесс r.fill.dir.exe*32 занимает примерно 19-20 мегабайт и загружает процессор на 25 процентов.

Необходимо отметить, что в GRASS 7 ситуация повторяется (кроме сообщений на черном экране) .

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Проблема с модулем r.fill.dir

Сообщение Александр Мурый » 13 ноя 2012, 22:39

-- Операции с растрами очень ресурсоёмкие, поэтому (и в GRASS тоже) часто лучше обрабатывать по частям, а потом сшивать выходные растры (модуль r.patch);
-- перед запуском <r.fill.dir> надо задать текущий регион по нужному растру, для этого вызовите модуль <g.region> и укажите на входе растр, или в командной строке:

Код: Выделить всё

g.region rast=my_raster
Редактор материалов, модератор форума

Ремесленник
Активный участник
Сообщения: 117
Зарегистрирован: 23 май 2011, 21:06
Репутация: 5

Re: Проблема с модулем r.fill.dir

Сообщение Ремесленник » 13 ноя 2012, 23:04

Надо пробовать. Но боюсь возможны артефакты в местах стыковки.
Интересно, а как макросы (или скрипты. Как это правильно ?) создают?
Фрагментов будет много...

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Проблема с модулем r.fill.dir

Сообщение Александр Мурый » 13 ноя 2012, 23:08

Ремесленник писал(а): Интересно, а как макросы (или скрипты. Как это правильно ?) создают?
Фрагментов будет много...
Вам интересно, как создаются модули GRASS или как обработать много растровых фрагментов в скрипте?
Редактор материалов, модератор форума

Ремесленник
Активный участник
Сообщения: 117
Зарегистрирован: 23 май 2011, 21:06
Репутация: 5

Re: Проблема с модулем r.fill.dir

Сообщение Ремесленник » 13 ноя 2012, 23:20

Как обработать много фрагментов с помощью скрипта. (Спасибо , что поправили :D ).

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Проблема с модулем r.fill.dir

Сообщение Александр Мурый » 14 ноя 2012, 00:39

Ремесленник писал(а):Как обработать много фрагментов с помощью скрипта.
Можно сделать такой Python-скрипт с одним циклом внутри:

Код: Выделить всё


import sys,os
import grass.script as grass

for raster in grass.read_command('g.mlist',
type = "rast",
pat = "my_raster_part*").splitlines():
grass.read_command('g.region', rast = raster)
grass.read_command('r.fill.dir',
input = raster,
elevation = "raster."+"fill",
direction = "raster."+"dir")

Параметр <pat> в модуле <g.mlist> значит "pattern" и является шаблоном для имени растра, т.е. в случае выше растры называются, например, my_raster_part1, my_raster_part2, my_raster_part3 и т.д.

После того, как импортируете все нужные фрагменты ЦМР в GRASS, напишите сюда все имена этих растров, чтобы составить цикл с ними.
Редактор материалов, модератор форума

Ремесленник
Активный участник
Сообщения: 117
Зарегистрирован: 23 май 2011, 21:06
Репутация: 5

Re: Проблема с модулем r.fill.dir

Сообщение Ремесленник » 14 ноя 2012, 17:59

Бесподобно!!! У меня нет слов!!! amuriy Вы мне здорово помогли. Вышла большая экономия времени. Большое Вам Спасибо!!!
И напоследок... , а как научиться писать такие скрипты? Что нужно знать ?

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Проблема с модулем r.fill.dir

Сообщение Александр Мурый » 14 ноя 2012, 20:12

На здоровье :)
Ремесленник писал(а):а как научиться писать такие скрипты? Что нужно знать ?
1. Элементарное программирование на Питоне (переменные, циклы, типы данных, отступы, создание простейшего скрипта); почитайте статьи типа "Учимся программировать на Python за 10 минут", а затем, конечно, документацию :twisted: ;
2. общее устройство GRASS хотя бы на уровне пособия (т.е. создание области и набора / импорт и экспорт данных / запуск модулей);
3. работу нужных для решения задачи модулей GRASS (что уже сложнее); до того, как писать скрипт с исп-ем тех или иных модулей, желательно поиграться с каждым отдельно (опции, запуск, что на входе, что на выходе и т.д.).
Редактор материалов, модератор форума

Ответить

Вернуться в «GRASS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя