построить интерполированный с рек рельеф

AnnaAnna
Новоприбывший
Сообщения: 8
Зарегистрирован: 16 апр 2012, 23:53
Репутация: 0

построить интерполированный с рек рельеф

Сообщение AnnaAnna » 05 май 2012, 16:43

Здравствуйте!помогите пожалуйста.
Есть сетка гидросети с отметками высот,и сетка рельефа всей территории.нужно построить интерполированный с рек рельеф(получить базис эррозии),как это можно сделать?

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

Re: построить интерполированный с рек рельеф

Сообщение rhot » 05 май 2012, 17:20

Для интерполяции значений векторного слоя используйте модули v.kernel, v.surf.idw, v.surf.rst, и v.vol.rst.
А вообще, для оценки водоразделов тут интересно почитать. Ну и источник собственно.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

Re: построить интерполированный с рек рельеф

Сообщение Александр Мурый » 05 май 2012, 21:24

Что есть "сетка гидросети"? Это растр выделенных в GRASS водотоков?

Если я не ошибаюсь, вот тут первая заметка -- как раз то, что вам надо ("isobase" = "базис эрозии", так?)
Если что-то будет не понятно с командами -- приложите ваши данные, будем разбираться вместе :)
Редактор материалов, модератор форума

AnnaAnna
Новоприбывший
Сообщения: 8
Зарегистрирован: 16 апр 2012, 23:53
Репутация: 0

Re: построить интерполированный с рек рельеф

Сообщение AnnaAnna » 05 май 2012, 23:03

спасибо :)
да,сетка гидросети-это раст выделенных в грасс водотоков с отметками высот.
с командами не очень понятно. я векторизовала эту карту, потом с помощью v.surf.rst интерполировала. это правильно?

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

Re: построить интерполированный с рек рельеф

Сообщение Александр Мурый » 05 май 2012, 23:35

AnnaAnna писал(а):спасибо :)
с командами не очень понятно. я векторизовала эту карту, потом с помощью v.surf.rst интерполировала. это правильно?
Смотря что вам надо получить. Я вот, хоть и геоморфолог, не занимался выделением местных базисов эрозии.
Покажите полученный(е) растр(ы), что ли..

А делали пошагово как описано по ссылке, что я дал?
Редактор материалов, модератор форума

AnnaAnna
Новоприбывший
Сообщения: 8
Зарегистрирован: 16 апр 2012, 23:53
Репутация: 0

Re: построить интерполированный с рек рельеф

Сообщение AnnaAnna » 06 май 2012, 10:47

ну мне не очень понятно, что там написано вначале...я так поняла это я уже сделала и поэтому начала делать с предпоследнего пункта (r.to.vect).
Вложения
VVV.rar
mesha_otmetki_vis- растр выделенных водотоков.
interpol- это то,что получилось после v.surf.rst.
(421.19 КБ) 425 скачиваний

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

Re: построить интерполированный с рек рельеф

Сообщение Александр Мурый » 06 май 2012, 15:45

AnnaAnna писал(а):ну мне не очень понятно, что там написано вначале...я так поняла это я уже сделала и поэтому начала делать с предпоследнего пункта (r.to.vect).
Ваших точек с высотами (otm_vis_vect ) очень много для карты базисов -- больше 2000 (!) Точки, как я понял, просто построены по линиям рек. Соотв-но, растр "interpol" частично повторяет рельеф, но не даёт поверхность базиса эрозии.

В приведённом мной примере сначала для векторной сети водотоков находится их порядок по Штралеру (самое большое число = самый крупный водоток).
Я поэкспериментировал с модулем v.strahler, который разбивает векторную сеть по схеме Штралера, затем сделал всё как в примере.

Результат (область VVV_isobase, набор isobase) ниже.
VVV_isobase.zip
область VVV_isobase, набор isobase
(1.06 МБ) 437 скачиваний
Поверхности базисов эрозии, полученные по водотокам 1-го порядка -- растр "dem_isobase_1", 2-3-го -- растр "dem_isobase_2_3".
Последний раз редактировалось Александр Мурый 06 май 2012, 17:36, всего редактировалось 1 раз.
Редактор материалов, модератор форума

AnnaAnna
Новоприбывший
Сообщения: 8
Зарегистрирован: 16 апр 2012, 23:53
Репутация: 0

Re: построить интерполированный с рек рельеф

Сообщение AnnaAnna » 06 май 2012, 17:32

спасибо большое:)попытаюсь повторить))

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

Re: построить интерполированный с рек рельеф

Сообщение Александр Мурый » 06 май 2012, 17:50

На здоровье :) Мне было интересно попробовать.

Обобщу: для построения поверхностей базисов эрозии для водотоков разных порядков нужны след. исходные данные:
  • цифровая модель рельефа
  • векторная речная сеть (лучше, если выделенная по ЦМР с помощью r.watershed и векторизованная).
  • эта же речная сеть с порядками по Штралеру в атрибутах (вопрос, как и чем лучше делать..?)
Далее хочу расписать сам процесс, если получится..
Редактор материалов, модератор форума

Аватара пользователя
syroezhka
Завсегдатай
Сообщения: 290
Зарегистрирован: 21 апр 2008, 21:22
Репутация: 5
Откуда: 50°26'N 30°31'E
Контактная информация:

Re: построить интерполированный с рек рельеф

Сообщение syroezhka » 04 сен 2012, 02:13

amuriy, не могли бы вы подсказать, как правильно связать вектор и таблицу, полученную в результате работы v.strahler?
Я конвертировала txt в csv, потом загружала последний через db.in.ogr, затем устанавливала связь между вектором и таблицей через v.db.connect. Но при этом чего-то ерунда получается.
Я скачала набор, который вы делали для AnnaAnna и там, я так понимаю, лежит скрипт для этого дела. А как лучше сделать эту связь через графический интерфейс?

Аватара пользователя
syroezhka
Завсегдатай
Сообщения: 290
Зарегистрирован: 21 апр 2008, 21:22
Репутация: 5
Откуда: 50°26'N 30°31'E
Контактная информация:

Re: построить интерполированный с рек рельеф

Сообщение syroezhka » 04 сен 2012, 02:35

Сначала, я решила избежать этой задачи, воспользовавшись r.stream.order, но поскольку разбивка речной сети происходит на растре, то остаются многие артефакты. Например, появляются ложные порядки, из-за очень сближенных потоков.
1.png
1.png (12.85 КБ) 13108 просмотров
Поэтому, вернулась к v.strahler , потому что перед ним приходится делать r.thin. Тем самым неплохо чистится будущая дренажная сеть. Конечно, проблемы еще остаются. Например, "колечки" (синяя рамочка на картинке).

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

Re: построить интерполированный с рек рельеф

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

syroezhka писал(а):как правильно связать вектор и таблицу, полученную в результате работы v.strahler?
У меня ещё получилось так:
  • чистим текстовый файл, получившийся на выходе от <v.strahler> (streams_strahler.txt в моём архиве)

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

    == Result of Strahler Order ==
     Category:   Line:   Basin:    Order:
            1       1       1       0
            2       2       2       0
            3       3       3       2
            4       4       3       1
    приводим к виду:

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

    1,1,0
    2,2,0
    3,3,2
    4,3,1
    , т.е. убираем один из двух одинаковых столбцов (Category и Line), удаляем заголовки, пробелы заменяются на запятые --> получаем нормальный CSV (streams_strahler.csv)
  • Создаём файл streams_strahler.csvt -- файл описания типов полей:

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

    "Integer","Integer","Integer"
  • Конвертируем CSV в DBF с переименованием полей:

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

    ogr2ogr -f "ESRI Shapefile" -sql "SELECT field_1 AS 'cat', field_2 AS 'basin', field_3 AS 'str_order' FROM streams_strahler" streams_strahler.dbf streams_strahler.csv
  • Импортируем DBF в GRASS:

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

    db.in.ogr dsn=streams_strahler.dbf out=streams_strahler_db
  • Соединяем таблицу streams_strahler_db с векторными линиями, полученными в результате работы <v.strahler>:

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

    v.db.connect -o streams_strahler_cats table=streams_strahler_db
Редактор материалов, модератор форума

Аватара пользователя
syroezhka
Завсегдатай
Сообщения: 290
Зарегистрирован: 21 апр 2008, 21:22
Репутация: 5
Откуда: 50°26'N 30°31'E
Контактная информация:

Re: построить интерполированный с рек рельеф

Сообщение syroezhka » 04 сен 2012, 23:37

Спасибо, большое! Пытаюсь повторить.
Сейчас получился затык с
amuriy писал(а):Конвертируем CSV в DBF с переименованием полей:
Набираю в командной строке граса по аналогии. И вот вопрос: нужно указывать путь к csv файлу или его нужно помещать в некую дефолтную папку? Или на win эту процедуру не получится сделать?

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

Re: построить интерполированный с рек рельеф

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

syroezhka писал(а): Набираю в командной строке граса по аналогии. И вот вопрос: нужно указывать путь к csv файлу или его нужно помещать в некую дефолтную папку? Или на win эту процедуру не получится сделать?
ogr2ogr (с некоторыми оговорками) должен работать на Win точно так же, как и в любой другой системе. Необязательно запускать команду именно из командной строки GRASS (это не влияет на её выполнение).

Если CSV лежит в текущей папке, то команда запускается просто с названием файла, если нет, то нужно указывать полный путь к файлу типа D:\Files\myfile.csv.
Редактор материалов, модератор форума

Аватара пользователя
syroezhka
Завсегдатай
Сообщения: 290
Зарегистрирован: 21 апр 2008, 21:22
Репутация: 5
Откуда: 50°26'N 30°31'E
Контактная информация:

Re: построить интерполированный с рек рельеф

Сообщение syroezhka » 05 сен 2012, 18:56

Теперь конвертирование CSV в DBF получилось. Указала пути. Но пока, что без переименования полей, потому что при включенном -sql вылетает ошибка.
ERROR 1: SQL Expression Parsing Error: syntax error
Скажите, в выражении запроса после оператора FROM идет ссылка на streams_strahler. Это на csv или на вектор, который получился в результате работы модуля v.strahler?

И еще в последнем пункте фигурирует streams_strahler_cats. Это копия streams_strahler, полученого в результате работы модуля?

Ответить

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

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

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