Построение изоконтуров

jas
Интересующийся
Сообщения: 21
Зарегистрирован: 09 мар 2012, 12:35
Репутация: 0

Построение изоконтуров

Сообщение jas » 12 мар 2012, 10:11

Добрый день!
Подскажите пожалуйста , можно ли c использованием GRASS построить изоконтура c учетом барьеров?
Входные данные текстовый файл X,Y,Z (Регулярная сетка) , незначащие данные помечены значением 9999.
Требуется построить замкнутые изолинии (изоконтура) с учетом барьеров(значение - 9999) и получить на выходе Shape-файл (полигоны) с атрибутом Z.
Спасибо.images/icons/smile/alert.gif

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

Re: Построение изоконтуров

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

Если кратко, то НЕТ. Интерполяция "с барьерами" в GRASS отсутствует. Может, можно как-то извернуться -- надо смотреть на данные..
Не понял: вы хотите сделать TIN или изолинии? А как выглядят "барьеры"? Это отдельный набор линий?
Редактор материалов, модератор форума

jas
Интересующийся
Сообщения: 21
Зарегистрирован: 09 мар 2012, 12:35
Репутация: 0

Re: Построение изоконтуров

Сообщение jas » 12 мар 2012, 18:21

Добрый вечер!
Мне необходимо построить замкнутые изолинии. Барьеры уже представлены в матрице(текстовый файл XYZ) значениями 9999. Задача- построить замкнутые изолинии, чтобы при этом в процессе построения значения 9999 игнорировались.

jas
Интересующийся
Сообщения: 21
Зарегистрирован: 09 мар 2012, 12:35
Репутация: 0

Re: Построение изоконтуров

Сообщение jas » 12 мар 2012, 18:32

Еще раз добрый вечер.
А существует возможность построить по входным данным(XYZ) TIN и получить замкнутые контура с последующим сохранением результата в Шейп-файл?

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

Re: Построение изоконтуров

Сообщение Александр Мурый » 12 мар 2012, 20:48

jas писал(а):А существует возможность построить по входным данным(XYZ) TIN и получить замкнутые контура с последующим сохранением результата в Шейп-файл?
-- импорт XYZ из текстового файла: v.in.ascii
-- триангуляция Делоне: v.delaunay
-- экспорт в shape-файл: v.out.ogr

Изолинии в GRASS строятся только по растрам (r.contour), так что можно попробовать интерполяцию по точкам в растр, а потом сделать изолинии с нужным шагом.

Будут вопросы -- задавайте :)

Да: было бы неплохо, если бы вы выложили кусок данных.
Редактор материалов, модератор форума

jas
Интересующийся
Сообщения: 21
Зарегистрирован: 09 мар 2012, 12:35
Репутация: 0

Re: Построение изоконтуров

Сообщение jas » 13 мар 2012, 09:09

Добрый день , спасибо за ответ.В прикреплении файл данных(XYZ).
С уважением,
jas
Вложения
wavestmp.txt
файл данных(XYZ)
(359.22 КБ) 722 скачивания

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

Re: Построение изоконтуров

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

Покопался.

-- импортировал все точки в область WGS84 Lat/Long;
-- создал атрибут. таблицу, внёс туда значения Z;
-- вытащил все значимые (у которых Z не равно 9999) точки в отдельную вект. карту;

Получилось (синие точки -- значимые):
wavestmp_pts.png
wavestmp_pts.png (8.97 КБ) 12469 просмотров


P.S. По-хорошему, надо было отсеять ненужные точки прямо из файла (например, с пом. awk/sed)

Далее. Раз точки регулярные, то можно получить растр. Если глянуть на точки, разрешение по широте = 0.5, по долготе = 1.0
wavestmp_pts_zoom.png
wavestmp_pts_zoom.png (1.92 КБ) 12469 просмотров
-- Выставляем нужное разрешение:

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

g.region vect=wavestmp_select nsres=0.5 ewres=1 -p
-- Перегоняем точки в растр:

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

v.to.rast in=wavestmp_select out=wavestmp_select use=z
wavestmp_rast.png
wavestmp_rast.png (17.95 КБ) 12469 просмотров
Продолжение в след. сообщении.
Редактор материалов, модератор форума

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

Re: Построение изоконтуров

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

Далее.

-- Создаём изолинии (например, с шагом 0.5):

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

r.contour in=wavestmp_select out=wavestmp_select_cont_i05 step=0.5

wavestmp_contours_0.5.png
wavestmp_contours_0.5.png (32.64 КБ) 12467 просмотров
-- Изолинии получились угловатыми и с мелкими линиями, можно сгладить растр (фильтр "скользящим окном") и перестроить изолинии:

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

r.neighbors in=wavestmp_select out=wavestmp_select_filter method=average size=3
wavestmp_filter_contours_0.5.png
wavestmp_filter_contours_0.5.png (32.32 КБ) 12467 просмотров
В архиве ниже область GRASS и шейп-файл изолиний.
wavestmp.7z
(421.36 КБ) 481 скачивание
Единственный открытый вопрос -- насчёт "замкнутых контуров". Надо получить полигоны между изолиниями, правильно я понимаю? Не очень представляю, для чего это нужно именно в таком виде...
Редактор материалов, модератор форума

jas
Интересующийся
Сообщения: 21
Зарегистрирован: 09 мар 2012, 12:35
Репутация: 0

Re: Построение изоконтуров

Сообщение jas » 13 мар 2012, 15:05

Спасибо большое, сразу чувствуется рука мастера! Я, к сожалению, только начинаю знакомиться с GRASS.
Изолинии получились красивые, но мне , опять же к сожалению, необходимо получить именно полигоны между изолиниями. В ArcGis в модуле TIN такая возможность существует, но этого модуля у меня нет.
С уважением,
jas posting.php?mode=reply&f=29&t=10018#

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

Re: Построение изоконтуров

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

На здоровье :) В GRASS действует принцип "think raster", поэтому с TIN туговато..
Попробую "залить" полигоны между изолиниями, это интересно.
Редактор материалов, модератор форума

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

Re: Построение изоконтуров

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

Замкнутые контуры получились, но они пока без высот (в атрибутах высот тоже нет).
cont_i05_areas_cut.png
cont_i05_areas_cut.png (15.83 КБ) 12427 просмотров
Шейп:
cont_i05_areas_cut.zip
(55.26 КБ) 470 скачиваний
Редактор материалов, модератор форума

jas
Интересующийся
Сообщения: 21
Зарегистрирован: 09 мар 2012, 12:35
Репутация: 0

Re: Построение изоконтуров

Сообщение jas » 13 мар 2012, 19:15

Ну вы просто кудесник!
У меня есть предложение как можно получить атрибуты(высоты), правда как это реализовать в GRASS не знаю. Идея - если у каждого полигона есть центроид( только правильный , обязательно должен быть внутри полигона), тогда можно попробовать получить атрибут по гриду (координаты центроида ведь имеются).
С уважением, jas

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

Re: Построение изоконтуров

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

jas писал(а):Идея - если у каждого полигона есть центроид( только правильный , обязательно должен быть внутри полигона), тогда можно попробовать получить атрибут по гриду (координаты центроида ведь имеются).
Примерно так и сделал. В атрибутах есть поле "z", кроме того, сама геометрия в 3D.

Шейп:
cont_i05_areas_3d.zip
(77.51 КБ) 545 скачиваний
Редактор материалов, модератор форума

jas
Интересующийся
Сообщения: 21
Зарегистрирован: 09 мар 2012, 12:35
Репутация: 0

Re: Построение изоконтуров

Сообщение jas » 14 мар 2012, 11:48

Добрый день. А сколько времени занимает весь процесс ?
Не могли бы вы описать, как вам удалось реализовать эту задачу?
C уважением,jas

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

Re: Построение изоконтуров

Сообщение Александр Мурый » 14 мар 2012, 12:39

Основное время уходит на метод проб и ошибок. Полностью сейчас, наверное, не распишу, уже сам запутался :)
Самое "узкое" место -- это создание топологически корректных границ из изолиний и общей границы участка. Без подчистки и затем ручной доводки не получается. GRASS не работает с 3D-топологией, так что приходится делать всё в 2D, а потом снимать высоты с растра.

В ближайшее время распишу общий алгоритм.
Редактор материалов, модератор форума

Ответить

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

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

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