Страница 1 из 2
построить интерполированный с рек рельеф
Добавлено: 05 май 2012, 16:43
AnnaAnna
Здравствуйте!помогите пожалуйста.
Есть сетка гидросети с отметками высот,и сетка рельефа всей территории.нужно построить интерполированный с рек рельеф(получить базис эррозии),как это можно сделать?
Re: построить интерполированный с рек рельеф
Добавлено: 05 май 2012, 17:20
rhot
Для интерполяции значений векторного слоя используйте модули v.kernel, v.surf.idw, v.surf.rst, и v.vol.rst.
А вообще, для оценки водоразделов
тут интересно почитать. Ну и
источник собственно.
Re: построить интерполированный с рек рельеф
Добавлено: 05 май 2012, 21:24
Александр Мурый
Что есть "сетка гидросети"? Это растр выделенных в GRASS водотоков?
Если я не ошибаюсь, вот
тут первая заметка -- как раз то, что вам надо ("isobase" = "базис эрозии", так?)
Если что-то будет не понятно с командами -- приложите ваши данные, будем разбираться вместе

Re: построить интерполированный с рек рельеф
Добавлено: 05 май 2012, 23:03
AnnaAnna
спасибо
да,сетка гидросети-это раст выделенных в грасс водотоков с отметками высот.
с командами не очень понятно. я векторизовала эту карту, потом с помощью v.surf.rst интерполировала. это правильно?
Re: построить интерполированный с рек рельеф
Добавлено: 05 май 2012, 23:35
Александр Мурый
AnnaAnna писал(а):спасибо
с командами не очень понятно. я векторизовала эту карту, потом с помощью v.surf.rst интерполировала. это правильно?
Смотря что вам надо получить. Я вот, хоть и геоморфолог, не занимался выделением местных базисов эрозии.
Покажите полученный(е) растр(ы), что ли..
А делали пошагово как описано по ссылке, что я дал?
Re: построить интерполированный с рек рельеф
Добавлено: 06 май 2012, 10:47
AnnaAnna
ну мне не очень понятно, что там написано вначале...я так поняла это я уже сделала и поэтому начала делать с предпоследнего пункта (r.to.vect).
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 МБ) 526 скачиваний
Поверхности базисов эрозии, полученные по водотокам 1-го порядка -- растр "dem_isobase_1", 2-3-го -- растр "dem_isobase_2_3".
Re: построить интерполированный с рек рельеф
Добавлено: 06 май 2012, 17:32
AnnaAnna
спасибо большое:)попытаюсь повторить))
Re: построить интерполированный с рек рельеф
Добавлено: 06 май 2012, 17:50
Александр Мурый
На здоровье

Мне было интересно попробовать.
Обобщу: для построения поверхностей базисов эрозии для водотоков разных порядков нужны след. исходные данные:
- цифровая модель рельефа
- векторная речная сеть (лучше, если выделенная по ЦМР с помощью r.watershed и векторизованная).
- эта же речная сеть с порядками по Штралеру в атрибутах (вопрос, как и чем лучше делать..?)
Далее хочу расписать сам
процесс, если получится..
Re: построить интерполированный с рек рельеф
Добавлено: 04 сен 2012, 02:13
syroezhka
amuriy, не могли бы вы подсказать, как правильно связать вектор и таблицу, полученную в результате работы v.strahler?
Я конвертировала txt в csv, потом загружала последний через db.in.ogr, затем устанавливала связь между вектором и таблицей через v.db.connect. Но при этом чего-то ерунда получается.
Я скачала набор, который вы делали для AnnaAnna и там, я так понимаю, лежит скрипт для этого дела. А как лучше сделать эту связь через графический интерфейс?
Re: построить интерполированный с рек рельеф
Добавлено: 04 сен 2012, 02:35
syroezhka
Сначала, я решила избежать этой задачи, воспользовавшись r.stream.order, но поскольку разбивка речной сети происходит на растре, то остаются многие артефакты. Например, появляются ложные порядки, из-за очень сближенных потоков.

- 1.png (12.85 КБ) 14172 просмотра
Поэтому, вернулась к v.strahler , потому что перед ним приходится делать r.thin. Тем самым неплохо чистится будущая дренажная сеть. Конечно, проблемы еще остаются. Например, "колечки" (синяя рамочка на картинке).
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
приводим к виду:
, т.е. убираем один из двух одинаковых столбцов (Category и Line), удаляем заголовки, пробелы заменяются на запятые --> получаем нормальный CSV (streams_strahler.csv)
- Создаём файл streams_strahler.csvt -- файл описания типов полей:
- Конвертируем 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
Re: построить интерполированный с рек рельеф
Добавлено: 04 сен 2012, 23:37
syroezhka
Спасибо, большое! Пытаюсь повторить.
Сейчас получился затык с
amuriy писал(а):Конвертируем CSV в DBF с переименованием полей:
Набираю в командной строке граса по аналогии. И вот вопрос: нужно указывать путь к csv файлу или его нужно помещать в некую дефолтную папку? Или на win эту процедуру не получится сделать?
Re: построить интерполированный с рек рельеф
Добавлено: 04 сен 2012, 23:50
Александр Мурый
syroezhka писал(а):
Набираю в командной строке граса по аналогии. И вот вопрос: нужно указывать путь к csv файлу или его нужно помещать в некую дефолтную папку? Или на win эту процедуру не получится сделать?
ogr2ogr (с некоторыми оговорками) должен работать на Win точно так же, как и в любой другой системе. Необязательно запускать команду именно из командной строки GRASS (это не влияет на её выполнение).
Если CSV лежит в текущей папке, то команда запускается просто с названием файла, если нет, то нужно указывать полный путь к файлу типа D:\Files\myfile.csv.
Re: построить интерполированный с рек рельеф
Добавлено: 05 сен 2012, 18:56
syroezhka
Теперь конвертирование CSV в DBF получилось. Указала пути. Но пока, что без переименования полей, потому что при включенном -sql вылетает ошибка.
ERROR 1: SQL Expression Parsing Error: syntax error
Скажите, в выражении запроса после оператора FROM идет ссылка на streams_strahler. Это на csv или на вектор, который получился в результате работы модуля v.strahler?
И еще в последнем пункте фигурирует
streams_strahler_cats. Это копия streams_strahler, полученого в результате работы модуля?