Страница 2 из 2
Re: построить интерполированный с рек рельеф
Добавлено: 05 сен 2012, 21:01
Александр Мурый
syroezhka писал(а): при включенном -sql вылетает ошибка.
ERROR 1: SQL Expression Parsing Error: syntax error
Попробуйте SQL-выражение заключить в одинарные кавычки, а не в двойные.
syroezhka писал(а):
Скажите, в выражении запроса после оператора FROM идет ссылка на streams_strahler. Это на csv или на вектор, который получился в результате работы модуля v.strahler?
"streams_strahler" в нашем случае -- не ссылка, а имя слоя в наборе данных streams_strahler.csv
syroezhka писал(а):
И еще в последнем пункте фигурирует streams_strahler_cats. Это копия streams_strahler, полученого в результате работы модуля?
Это те же линии (streams_strahler) с обновлёнными категориями. Делается так:
-- вначале удаляются старые категории
Код: Выделить всё
v.category in=streams_strahler out=streams_strahler_nocats opt=del
-- теперь добавляются новые
Код: Выделить всё
v.category in=streams_strahler_nocats out=streams_strahler_cats
-- или можно без удаления сразу прикрепить новые к атрибутивному "слою" №2
Код: Выделить всё
v.category in=streams_strahler out=streams_strahler_cats layer=2
, тогда надо будет везде использовать именно слой №2.
Re: построить интерполированный с рек рельеф
Добавлено: 13 сен 2012, 01:49
syroezhka
Переименовать при импорте через ogr2ogr, так и не получилось, как бы я не измывалась над синтаксисом. Но, в общем-то, соединить вектор и таблицу удалось. Правда до меня так и не дошла идеология, того, что категории нужно сначала удалить, а затем прописать заново. Логично предположить, что на выходе из модуля должны получаться и вектор, и таблица с каким-то одинаковым идентификатором, что бы их было возможно связать без проблем.
К сожалению, по результатам работы модуля также проявилась неприятная особенность. При наличии «колец» в векторе, порядок потоку не присваивается. Такое наблюдается и на моих данных и на данных AnnaAnna.

- 13-09-2012 1-23-01.png (21.38 КБ) 13788 просмотров
Re: построить интерполированный с рек рельеф
Добавлено: 14 сен 2012, 11:18
Александр Мурый
syroezhka писал(а): до меня так и не дошла идеология, того, что категории нужно сначала удалить, а затем прописать заново. Логично предположить, что на выходе из модуля должны получаться и вектор, и таблица с каким-то одинаковым идентификатором, что бы их было возможно связать без проблем.
Пардон, что тянул с ответом. Кажется, разобрался-таки с <
v.strahler>.
Все предыдущие действия с ogr2ogr и обновлением "категорий" векторов были ненужны. Модуль сам прописывает порядки водотоков в виде категорий векторов.
Пример: по ЦМР выделены 323 водотока (
r.watershed), в результате работы <
v.strahler> они оказались разбиты на 5 категорий (0 -- обрезанные линии; от 1 до 4 -- порядки водотоков):
Код: Выделить всё
GRASS 6.4.3svn (VVV_isobase):~/.../VVV_isobase > v.category in=streams_strahler opt=report
Layer: 1
type count min max
point 0 0 0
line 323 0 4
boundary 0 0 0
centroid 0 0 0
area 0 0 0
all 323 0 4

- strahler_order_trim.png (19.22 КБ) 13752 просмотра
syroezhka писал(а):
К сожалению, по результатам работы модуля также проявилась неприятная особенность. При наличии «колец» в векторе, порядок потоку не присваивается.
Выяснено опытным путём: для того, чтобы избежать неправильной работы <v.strahler>, нужно поиграться с площадным порогом (опция "threshold") в <
r.watershed>. Если всё равно появляются такие кольца, придётся до исп-я <v.strahler> удалять их вручную.
Re: построить интерполированный с рек рельеф
Добавлено: 15 сен 2012, 00:54
syroezhka
amuriy писал(а):Пардон, что тянул с ответом.
Большущее спасибо, что вообще отвечаете
Действительно, порядки в столбце категорий, кто бы мог подумать. На счет колец есть у меня мысль: перед использованием
v.strahler конвертировать кольца в полигоны, рассчитать по ним центральную линию и заменить эти полигоны ей. В полигоны конвертировала, сейчас разбираюсь с центральной линией.
Конечно, если изменять размер минимального бассейна, то поток пускается по краю кольца, а не по центру. Но, думаю, не велика беда, если пущу его по центру. А играться с настройками минимального бассейна мне не подходит, потому что очень уж разные размеры этих злосчастных колец.
Re: построить интерполированный с рек рельеф
Добавлено: 15 сен 2012, 13:47
Александр Мурый
syroezhka писал(а): На счет колец есть у меня мысль: перед использованием v.strahler конвертировать кольца в полигоны, рассчитать по ним центральную линию и заменить эти полигоны ей. В полигоны конвертировала, сейчас разбираюсь с центральной линией.
Не уверен, что это самое эффективное решение.
Лучше немного сгладить ЦМР (r.neighbors) и использовать флаг "-4" для <r.watershed> (только горизонтальный и вертикальный потоки) и без флага "-f" (MFD), т.к. от этого метода и получается много лишних "колец". Плюс желательно подобрать оптимальный размер минимального бассейна (threshold).
Примерный набор команд для получения сети водотоков по схеме Штралера:
Код: Выделить всё
g.region rast=mesha_relief
# немного сглаживаем ЦМР, если нужно
r.neighbors in=mesha_relief out=mesha_relief.filt3
# получаем водотоки в растре
r.watershed -4 elev=mesha_relief.filt3 stream=streams threshold=100
# утоняем растровые линии рек
r.thin in=streams out=streams.thin
# векторизуем линии рек
r.to.vect in=streams.thin out=streams feature=line
# если надо, удаляем "кольца" речной сети вручную (v.digit / wxGUI)
# разбиваем речную сеть по схеме Штралера
v.strahler in=streams out=streams_strahler dem=mesha_relief.filt3 txout=streams_strahler.txt layer=1
# при желании сглаживаем речную сеть
v.generalize in=streams_strahler out=streams_strahler_gener method=snakes alpha=0.1 beta=0.1 threshold=100
Похоже на правду?

- streams_strahler_gener_trim.png (355.8 КБ) 13708 просмотров
Re: построить интерполированный с рек рельеф
Добавлено: 17 сен 2012, 00:41
syroezhka
amuriy писал(а):Похоже на правду?

Весьма похоже

Re: построить интерполированный с рек рельеф
Добавлено: 17 фев 2013, 01:37
syroezhka
Опять подниму тему, очень она уж интересная для меня оказалась. Несколько замечаний уже с опыта проделанной работы.
От злосчастных колец лучше всего помогает медианить рельеф (5на5 больше всего понравилось)
Также я перепробовала различные рельефы
-
asterGDEM v2 – много артефактов и нужно серьезно предварительно чистить
-
hydroshed - он зачищен хорошо, много плоских мест, которые потом вылазят в прямые параллельные линии, как на рисунке. А те в свою очередь при переводе в вектор в «оленьи рога». Хотя не исключаю, что я просто не смогла правильно с ним работать, потому что дем все таки заточен работу с дренажной сетью
-
Srtm v4– как по мне самый удобный для работы ДЕМ

- picture1.jpg (84.84 КБ) 13477 просмотров
Re: построить интерполированный с рек рельеф
Добавлено: 17 фев 2013, 01:44
syroezhka
Я дошла и до задачи построения базисных поверхностей. В самом начале темы давалась ссылка на
туториал
В заметке находятся точки пересечения соответствующего порядка с горизонталями рельефа, прописываются высоты и далее и проводится интерполяция методом IDW. Без соблюдения каких либо условий интерполяции. Такой же подход встречала и в статьях
Грохмана
Подозреваю, что и в оригинальной статье Golts and Rosenthal, 1993, на которую все ссылаются ситуация аналогичная.
Но российский корифей геоморфологи Философов, пишет, что при интерполяции нужно соблюдать условие непересечения одноименной и нижележащих горизонталей рельефа. Как это условие соблюсти при автоматической интерполяции я не додумалась, в результате интерполяция проводилась ручками. В дальнейшем очень хотелось бы автоматизировать это дело.
Он так же пишет, что для правильного построения палеорельефа не правильно проводить интерполяцию по порядкам 2+, 3+, а нужно строго по какому-то одному порядку.
Re: построить интерполированный с рек рельеф
Добавлено: 18 фев 2013, 11:23
Александр Мурый
syroezhka писал(а):
- hydroshed - он зачищен хорошо, много плоских мест, которые потом вылазят в прямые параллельные линии, как на рисунке. А те в свою очередь при переводе в вектор в «оленьи рога». Хотя не исключаю, что я просто не смогла правильно с ним работать, потому что дем все таки заточен работу с дренажной сетью
HydroSHEDS — тот же гидрологически обработанный SRTM. Какие именно данные вы использовали — "15sec Void-filled Elevation" или "30sec Void-filled Elevation"? Какие именно модули применяли и с какими опциями?
Re: построить интерполированный с рек рельеф
Добавлено: 18 фев 2013, 11:52
syroezhka
15sec Void-filled Elevation.
Я знаю, что это обработанный под гидрологиеские задачи сртм. Собственно поэтому и удивляюсь, что получилось хуже.
А что касается модулей, делала так как вы описали
тут
Настройки-парметры - аналогичные для srtm. Т.е. в обоих случаях одинаковые параметры были, а результаты различные и не в пользу hydrosheds.
Или выложить полный листинг?
Re: построить интерполированный с рек рельеф
Добавлено: 18 фев 2013, 12:52
Александр Мурый
syroezhka писал(а):Или выложить полный листинг?
Лучше вообще весь набор (заархивированный), если можно. Там же и история сохранилась.
С методами Философова надо разбираться отдельно (со всякими пересечениями и т.д.).
Re: построить интерполированный с рек рельеф
Добавлено: 18 фев 2013, 13:22
syroezhka
Вечером выложу. Просто немного почищу его, а то он разросся до огромных размеров.
Re: построить интерполированный с рек рельеф
Добавлено: 22 фев 2013, 03:35
syroezhka
Простите, что я такой тормоз и не выложу уже три дня. Начинаю чистить проект - такие какие то паранормальные глюки вылазят, которых раньше и не было вовсе.
Re: построить интерполированный с рек рельеф
Добавлено: 22 фев 2013, 08:33
Александр Мурый
syroezhka писал(а):Начинаю чистить проект - такие какие то паранормальные глюки вылазят, которых раньше и не было вовсе.
Бывает...

Глюки можно обсудить в отдельной теме, если нужно.
Re: построить интерполированный с рек рельеф
Добавлено: 26 фев 2013, 20:10
syroezhka
В общем, я забыла, что после ручного разрыва колец обязательно нужно сделать dissolve, иначе при разбитии на порядки не получится адекватного результата. В грассе, к сожалению этого не получилось сделать.
Добавила колонку, прописала значения одинаковые в нее, но
Код: Выделить всё
v.dissolve input=srtm_streams_ed@PERMANENT output=srtm_streams_ed_diss column=new2
зависает.
Сделала dissolve в другом приложение, загрузила вектор, прогнала через v.strahler - получилось нормально разбить на порядки.