Страница 1 из 3
Очень хочу гидрологически связать полигоны
Добавлено: 05 июл 2018, 10:21
Jasen
Всем доброго рабочего утра!
Вчера задавал этот вопрос на StackExchange но никто не ответил (не знают?).
Мне нужны красивые полигоны субводосборов для моделирования (специальное приложение не работает и решил делать все кустарно через бесплатные ГИС).
Сделал исправленный рельеф, аккумуляцию, речную сеть, субводосборы собственно. Но для модели нужен столбец, где указан нижележащий субводосбор (downstream subwatershed). И сколько я по интернету ни искал, как это сделать, не нашел. Хотя логика вроде бы проста: общие точки соприкосновения полигонов (они называются outlets). Но я на 99% уверен, что tool существует отдельно.
Есть QSWAT, но прежде чем использовать его, я хотел бы убедиться, что других способов нет.
Благодарю заранее!
Re: Очень хочу гидрологически связать полигоны
Добавлено: 05 июл 2018, 10:32
Александр Мурый
Именно такого инструмента нигде не встречал, но думаю, что можно заскриптовать получение такого столбца с помощью GRASS GIS и серии модулей
r.stream.*
Там в мануалах, кстати, много раз упоминается понятие "downstream":
https://grass.osgeo.org/grass74/manuals ... asins.html
https://grass.osgeo.org/grass74/manuals ... tance.html
Чтобы подсказать предметнее, нужны тестовые входные данные и требования к выходным данным.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 06 июл 2018, 11:14
Jasen
Данные-то есть
https://disk.yandex.ru/client/disk/%D0% ... %D0%A0/GIS
dem - гидрологически корректный рельеф
acc - аккумуляция
dir - flow directions
net - rivr network
subbasins лишние - их править еще надо.
А скрипты что-то из консоли в QGIS не запускаются. import grass.script as grass не работает. Там хитрость есть?
Re: Очень хочу гидрологически связать полигоны
Добавлено: 06 июл 2018, 13:29
rhot
Jasen писал(а): ↑06 июл 2018, 11:14
А скрипты что-то из консоли в QGIS не запускаются. import grass.script as grass не работает. Там хитрость есть?
Пути правильные должны быть и лучше версия 2.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 06 июл 2018, 16:20
Jasen
Добрый день!
Кстати, r.stream.basins не работает в GRASS, видимо устарел, теперь там только r.basins.fill (не подходит, потому что надо рисовать водоразделы) и r.stream.extract.
Алгоритм-то несложно придумать. Например так:
Имеем shp субводосборов и raster аккумуляции по ячейкам.
Определяем для каждого полигона максимальное и минимальное значение растра. Получится, что есть полигоны минимумами 1, а есть с минимумами равными значению на водотоке.
Отсортировать полигоны по возрастанию максимального значения растра.
Взять первый полигон i и найти такой x, у которого минимальное значение растра будет минимально отстоять от максимального значения первого полигона (то есть разность min(x) - max(i) = MIN.
Присвоить искомое значение нижележащего водосбора значению ID x.
Если проделать это для каждого полигона, скорее всего должно получиться.
Но как из этого сделать скрипт? Тем более в ситуации, когда описания модулей в интернете не соответствуют реальному положению дел.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 08 июл 2018, 09:45
Александр Мурый
Какие версии QGIS и GRASS?
Jasen писал(а): ↑06 июл 2018, 16:20
описания модулей в интернете не соответствуют реальному положению дел.
Что вы имеете в виду? Модули <r.stream*> - дополнения, в основной ветке их всех нет, надо ставить отдельно. Описание модулей (мануалы) GRASS всегда соответствуют модулям. Их наличие/отсутствие может зависеть от ОС, версии GRASS/QGIS.
Сложный анализ с модулями GRASS я рекомендовал бы проводить в "чистой" GRASS, без участия QGIS.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 08 июл 2018, 09:50
Александр Мурый
Не получается перейти на страницу, перенаправляет на мой Яндекс-Диск.
Просьба сделать единый архив с тестовыми данными и расшарить ссылку на него.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 08 июл 2018, 13:49
Jasen
Переложил:
https://yadi.sk/d/ZinEHxtR3YvHxL
Версия GRASS 7.4.1, версия QGIS последняя тоже, 3.2.0.
Я уж понял, что надо в GRASS напрямую, в этом никакой проблемы нет.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 08 июл 2018, 14:44
Jasen
запускаю из консоли, правильно?
Что значит, не может запустить парсер?
Re: Очень хочу гидрологически связать полигоны
Добавлено: 08 июл 2018, 18:39
Александр Мурый
Jasen писал(а): ↑08 июл 2018, 14:44
запускаю из консоли, правильно?
Запускать можно любым из доступных способов. Проблема, как я понял, чисто виндовая. У меня на Линуксе все модули <r.stream.*> установились и работают. Попробую и на винде установить ради эксперимента.
А остальные модули также не запускаются? И что выдаёт команда "r.stream.watersheds -help"?
И да, откуда ставилась GRASS и как ставились доп. модули?
Re: Очень хочу гидрологически связать полигоны
Добавлено: 09 июл 2018, 10:38
Jasen
Э... Grass в данном случае пришла вместе с QGIS. Это неправильный путь?
r.stream.watershed -help => не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
У меня-то они тоже установились. Ставились через добавление модулей в GUI GRASS.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 09 июл 2018, 12:02
rhot
Jasen писал(а): ↑09 июл 2018, 10:38
У меня-то они тоже установились. Ставились через добавление модулей в GUI GRASS.
Дак куда установились-то?
Авторы писали этот модуль
на bash, поэтому нужно делать как
они рекомендуют или самому портировать на Питон

Re: Очень хочу гидрологически связать полигоны
Добавлено: 09 июл 2018, 15:58
Александр Мурый
При попытке установить модуль <r.stream.watersheds> на винде у меня пишет:
Downloading precompiled GRASS Addons <r.stream.watersheds>...
ERROR: Extension <r.stream.watersheds> not found
Что правильно, т.к. это шелл-скрипт, и здесь ему не место. Все основные модули <r.stream.*> ставятся и работают нормально.
Вообще, мы отклонились от темы обсуждения. Не факт, что указанный модуль вообще нужен (как и вообще модули <r.stream.*>). Выше я сделал просто предположение, не разбираясь глубоко.
Автору настоятельно рекомендую сопровождать сообщения картинками (и здесь, и на StackExchange). Так гораздо больше шансов на успех.
Я попробую поиграться с тестовыми данными, по результатам отпишусь.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 10 июл 2018, 11:15
Jasen
rhot писал(а): ↑09 июл 2018, 12:02
Дак куда установились-то?
C:\Program Files\QGIS 3.2\apps\grass\grass-7.4.1 на Windows 7
rhot писал(а): ↑09 июл 2018, 12:02
Авторы писали этот модуль на bash, поэтому нужно делать как они рекомендуют
Стало быть, все их выкладки выполняются только из командной консоли Linux?
Судя по описанию там есть все что необходимо, кроме темы о связывании. Может быть есть, а может быть и нет, надо пробовать.
Re: Очень хочу гидрологически связать полигоны
Добавлено: 10 июл 2018, 11:19
Jasen
Александр Мурый писал(а): ↑09 июл 2018, 15:58
Автору настоятельно рекомендую сопровождать сообщения картинками (и здесь, и на StackExchange). Так гораздо больше шансов на успех.
Так, Александр, какие картинки, если неизвестно, как их делать ) Задачу я, вроде бы, описал исчерпывающе.