Очень хочу гидрологически связать полигоны

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Аватара пользователя
Jasen
Активный участник
Сообщения: 100
Зарегистрирован: 27 янв 2006, 18:33
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Очень хочу гидрологически связать полигоны

Сообщение Jasen » 05 июл 2018, 10:21

Всем доброго рабочего утра!

Вчера задавал этот вопрос на StackExchange но никто не ответил (не знают?).
Мне нужны красивые полигоны субводосборов для моделирования (специальное приложение не работает и решил делать все кустарно через бесплатные ГИС).

Сделал исправленный рельеф, аккумуляцию, речную сеть, субводосборы собственно. Но для модели нужен столбец, где указан нижележащий субводосбор (downstream subwatershed). И сколько я по интернету ни искал, как это сделать, не нашел. Хотя логика вроде бы проста: общие точки соприкосновения полигонов (они называются outlets). Но я на 99% уверен, что tool существует отдельно.
Есть QSWAT, но прежде чем использовать его, я хотел бы убедиться, что других способов нет.

Благодарю заранее!
Что написал - то написал!

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

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

Чтобы подсказать предметнее, нужны тестовые входные данные и требования к выходным данным.
Редактор материалов, модератор форума

Аватара пользователя
Jasen
Активный участник
Сообщения: 100
Зарегистрирован: 27 янв 2006, 18:33
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: Очень хочу гидрологически связать полигоны

Сообщение Jasen » 06 июл 2018, 11:14

Данные-то есть 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 не работает. Там хитрость есть?
Что написал - то написал!

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Очень хочу гидрологически связать полигоны

Сообщение rhot » 06 июл 2018, 13:29

Jasen писал(а):
06 июл 2018, 11:14
А скрипты что-то из консоли в QGIS не запускаются. import grass.script as grass не работает. Там хитрость есть?
Пути правильные должны быть и лучше версия 2.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Аватара пользователя
Jasen
Активный участник
Сообщения: 100
Зарегистрирован: 27 янв 2006, 18:33
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: Очень хочу гидрологически связать полигоны

Сообщение Jasen » 06 июл 2018, 16:20

Добрый день!
Кстати, r.stream.basins не работает в GRASS, видимо устарел, теперь там только r.basins.fill (не подходит, потому что надо рисовать водоразделы) и r.stream.extract.
Алгоритм-то несложно придумать. Например так:
Имеем shp субводосборов и raster аккумуляции по ячейкам.
Определяем для каждого полигона максимальное и минимальное значение растра. Получится, что есть полигоны минимумами 1, а есть с минимумами равными значению на водотоке.
Отсортировать полигоны по возрастанию максимального значения растра.
Взять первый полигон i и найти такой x, у которого минимальное значение растра будет минимально отстоять от максимального значения первого полигона (то есть разность min(x) - max(i) = MIN.
Присвоить искомое значение нижележащего водосбора значению ID x.
Если проделать это для каждого полигона, скорее всего должно получиться.
Но как из этого сделать скрипт? Тем более в ситуации, когда описания модулей в интернете не соответствуют реальному положению дел.
Что написал - то написал!

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

Re: Очень хочу гидрологически связать полигоны

Сообщение Александр Мурый » 08 июл 2018, 09:45

Какие версии QGIS и GRASS?
Jasen писал(а):
06 июл 2018, 16:20
описания модулей в интернете не соответствуют реальному положению дел.
Что вы имеете в виду? Модули <r.stream*> - дополнения, в основной ветке их всех нет, надо ставить отдельно. Описание модулей (мануалы) GRASS всегда соответствуют модулям. Их наличие/отсутствие может зависеть от ОС, версии GRASS/QGIS.
Сложный анализ с модулями GRASS я рекомендовал бы проводить в "чистой" GRASS, без участия QGIS.
Редактор материалов, модератор форума

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

Re: Очень хочу гидрологически связать полигоны

Сообщение Александр Мурый » 08 июл 2018, 09:50

Jasen писал(а):
06 июл 2018, 11:14
Данные-то есть https://disk.yandex.ru/client/disk/%D0% ... %D0%A0/GIS
Не получается перейти на страницу, перенаправляет на мой Яндекс-Диск.
Просьба сделать единый архив с тестовыми данными и расшарить ссылку на него.
Редактор материалов, модератор форума

Аватара пользователя
Jasen
Активный участник
Сообщения: 100
Зарегистрирован: 27 янв 2006, 18:33
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: Очень хочу гидрологически связать полигоны

Сообщение Jasen » 08 июл 2018, 13:49

Переложил: https://yadi.sk/d/ZinEHxtR3YvHxL
Версия GRASS 7.4.1, версия QGIS последняя тоже, 3.2.0.
Я уж понял, что надо в GRASS напрямую, в этом никакой проблемы нет.
Что написал - то написал!

Аватара пользователя
Jasen
Активный участник
Сообщения: 100
Зарегистрирован: 27 янв 2006, 18:33
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: Очень хочу гидрологически связать полигоны

Сообщение Jasen » 08 июл 2018, 14:44

запускаю из консоли, правильно?
Что значит, не может запустить парсер?
Вложения
2.PNG
2.PNG (8.07 КБ) 5628 просмотров
Что написал - то написал!

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

Re: Очень хочу гидрологически связать полигоны

Сообщение Александр Мурый » 08 июл 2018, 18:39

Jasen писал(а):
08 июл 2018, 14:44
запускаю из консоли, правильно?
Запускать можно любым из доступных способов. Проблема, как я понял, чисто виндовая. У меня на Линуксе все модули <r.stream.*> установились и работают. Попробую и на винде установить ради эксперимента.
А остальные модули также не запускаются? И что выдаёт команда "r.stream.watersheds -help"?
И да, откуда ставилась GRASS и как ставились доп. модули?
Редактор материалов, модератор форума

Аватара пользователя
Jasen
Активный участник
Сообщения: 100
Зарегистрирован: 27 янв 2006, 18:33
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: Очень хочу гидрологически связать полигоны

Сообщение Jasen » 09 июл 2018, 10:38

Э... Grass в данном случае пришла вместе с QGIS. Это неправильный путь?
r.stream.watershed -help => не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
У меня-то они тоже установились. Ставились через добавление модулей в GUI GRASS.
Что написал - то написал!

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Очень хочу гидрологически связать полигоны

Сообщение rhot » 09 июл 2018, 12:02

Jasen писал(а):
09 июл 2018, 10:38
У меня-то они тоже установились. Ставились через добавление модулей в GUI GRASS.
Дак куда установились-то?

Авторы писали этот модуль на bash, поэтому нужно делать как они рекомендуют или самому портировать на Питон :D
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

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). Так гораздо больше шансов на успех.

Я попробую поиграться с тестовыми данными, по результатам отпишусь.
Редактор материалов, модератор форума

Аватара пользователя
Jasen
Активный участник
Сообщения: 100
Зарегистрирован: 27 янв 2006, 18:33
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: Очень хочу гидрологически связать полигоны

Сообщение Jasen » 10 июл 2018, 11:15

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?
Судя по описанию там есть все что необходимо, кроме темы о связывании. Может быть есть, а может быть и нет, надо пробовать.
Что написал - то написал!

Аватара пользователя
Jasen
Активный участник
Сообщения: 100
Зарегистрирован: 27 янв 2006, 18:33
Репутация: 4
Ваше звание: Специалист
Откуда: Москва
Контактная информация:

Re: Очень хочу гидрологически связать полигоны

Сообщение Jasen » 10 июл 2018, 11:19

Александр Мурый писал(а):
09 июл 2018, 15:58
Автору настоятельно рекомендую сопровождать сообщения картинками (и здесь, и на StackExchange). Так гораздо больше шансов на успех.
Так, Александр, какие картинки, если неизвестно, как их делать ) Задачу я, вроде бы, описал исчерпывающе.
Что написал - то написал!

Ответить

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

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

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