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

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

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.
Редактор материалов, модератор форума

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

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

Сообщение syroezhka » 13 сен 2012, 01:49

Переименовать при импорте через ogr2ogr, так и не получилось, как бы я не измывалась над синтаксисом. Но, в общем-то, соединить вектор и таблицу удалось. Правда до меня так и не дошла идеология, того, что категории нужно сначала удалить, а затем прописать заново. Логично предположить, что на выходе из модуля должны получаться и вектор, и таблица с каким-то одинаковым идентификатором, что бы их было возможно связать без проблем.
К сожалению, по результатам работы модуля также проявилась неприятная особенность. При наличии «колец» в векторе, порядок потоку не присваивается. Такое наблюдается и на моих данных и на данных AnnaAnna.
13-09-2012 1-23-01.png
13-09-2012 1-23-01.png (21.38 КБ) 12705 просмотров

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

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
strahler_order_trim.png (19.22 КБ) 12669 просмотров
syroezhka писал(а): К сожалению, по результатам работы модуля также проявилась неприятная особенность. При наличии «колец» в векторе, порядок потоку не присваивается.
Выяснено опытным путём: для того, чтобы избежать неправильной работы <v.strahler>, нужно поиграться с площадным порогом (опция "threshold") в <r.watershed>. Если всё равно появляются такие кольца, придётся до исп-я <v.strahler> удалять их вручную.
Редактор материалов, модератор форума

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

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

Сообщение syroezhka » 15 сен 2012, 00:54

amuriy писал(а):Пардон, что тянул с ответом.
Большущее спасибо, что вообще отвечаете :D
Действительно, порядки в столбце категорий, кто бы мог подумать. На счет колец есть у меня мысль: перед использованием v.strahler конвертировать кольца в полигоны, рассчитать по ним центральную линию и заменить эти полигоны ей. В полигоны конвертировала, сейчас разбираюсь с центральной линией.
Конечно, если изменять размер минимального бассейна, то поток пускается по краю кольца, а не по центру. Но, думаю, не велика беда, если пущу его по центру. А играться с настройками минимального бассейна мне не подходит, потому что очень уж разные размеры этих злосчастных колец.

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

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
streams_strahler_gener_trim.png (355.8 КБ) 12625 просмотров
Редактор материалов, модератор форума

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

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

Сообщение syroezhka » 17 сен 2012, 00:41

amuriy писал(а):Похоже на правду? :)
Весьма похоже :)

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

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

Сообщение syroezhka » 17 фев 2013, 01:37

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

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

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

Сообщение syroezhka » 17 фев 2013, 01:44

Я дошла и до задачи построения базисных поверхностей. В самом начале темы давалась ссылка на
туториал
В заметке находятся точки пересечения соответствующего порядка с горизонталями рельефа, прописываются высоты и далее и проводится интерполяция методом IDW. Без соблюдения каких либо условий интерполяции. Такой же подход встречала и в статьях Грохмана
Подозреваю, что и в оригинальной статье Golts and Rosenthal, 1993, на которую все ссылаются ситуация аналогичная.
Но российский корифей геоморфологи Философов, пишет, что при интерполяции нужно соблюдать условие непересечения одноименной и нижележащих горизонталей рельефа. Как это условие соблюсти при автоматической интерполяции я не додумалась, в результате интерполяция проводилась ручками. В дальнейшем очень хотелось бы автоматизировать это дело.
Он так же пишет, что для правильного построения палеорельефа не правильно проводить интерполяцию по порядкам 2+, 3+, а нужно строго по какому-то одному порядку.

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

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

Сообщение Александр Мурый » 18 фев 2013, 11:23

syroezhka писал(а): - hydroshed - он зачищен хорошо, много плоских мест, которые потом вылазят в прямые параллельные линии, как на рисунке. А те в свою очередь при переводе в вектор в «оленьи рога». Хотя не исключаю, что я просто не смогла правильно с ним работать, потому что дем все таки заточен работу с дренажной сетью
HydroSHEDS — тот же гидрологически обработанный SRTM. Какие именно данные вы использовали — "15sec Void-filled Elevation" или "30sec Void-filled Elevation"? Какие именно модули применяли и с какими опциями?
Редактор материалов, модератор форума

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

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

Сообщение syroezhka » 18 фев 2013, 11:52

15sec Void-filled Elevation.
Я знаю, что это обработанный под гидрологиеские задачи сртм. Собственно поэтому и удивляюсь, что получилось хуже.
А что касается модулей, делала так как вы описали тут
Настройки-парметры - аналогичные для srtm. Т.е. в обоих случаях одинаковые параметры были, а результаты различные и не в пользу hydrosheds.
Или выложить полный листинг?

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

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

Сообщение Александр Мурый » 18 фев 2013, 12:52

syroezhka писал(а):Или выложить полный листинг?
Лучше вообще весь набор (заархивированный), если можно. Там же и история сохранилась.

С методами Философова надо разбираться отдельно (со всякими пересечениями и т.д.).
Редактор материалов, модератор форума

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

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

Сообщение syroezhka » 18 фев 2013, 13:22

Вечером выложу. Просто немного почищу его, а то он разросся до огромных размеров.

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

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

Сообщение syroezhka » 22 фев 2013, 03:35

Простите, что я такой тормоз и не выложу уже три дня. Начинаю чистить проект - такие какие то паранормальные глюки вылазят, которых раньше и не было вовсе.

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

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

Сообщение Александр Мурый » 22 фев 2013, 08:33

syroezhka писал(а):Начинаю чистить проект - такие какие то паранормальные глюки вылазят, которых раньше и не было вовсе.
Бывает... :) Глюки можно обсудить в отдельной теме, если нужно.
Редактор материалов, модератор форума

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

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

Сообщение syroezhka » 26 фев 2013, 20:10

В общем, я забыла, что после ручного разрыва колец обязательно нужно сделать dissolve, иначе при разбитии на порядки не получится адекватного результата. В грассе, к сожалению этого не получилось сделать.
Добавила колонку, прописала значения одинаковые в нее, но

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

v.dissolve input=srtm_streams_ed@PERMANENT output=srtm_streams_ed_diss column=new2
зависает.
Сделала dissolve в другом приложение, загрузила вектор, прогнала через v.strahler - получилось нормально разбить на порядки.
Вложения
kanev_grass_part.rar
(2.93 МБ) 407 скачиваний

Ответить

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

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

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