Построение изоконтуров
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 09 мар 2012, 12:35
- Репутация: 0
Построение изоконтуров
Добрый день!
Подскажите пожалуйста , можно ли c использованием GRASS построить изоконтура c учетом барьеров?
Входные данные текстовый файл X,Y,Z (Регулярная сетка) , незначащие данные помечены значением 9999.
Требуется построить замкнутые изолинии (изоконтура) с учетом барьеров(значение - 9999) и получить на выходе Shape-файл (полигоны) с атрибутом Z.
Спасибо.images/icons/smile/alert.gif
Подскажите пожалуйста , можно ли c использованием GRASS построить изоконтура c учетом барьеров?
Входные данные текстовый файл X,Y,Z (Регулярная сетка) , незначащие данные помечены значением 9999.
Требуется построить замкнутые изолинии (изоконтура) с учетом барьеров(значение - 9999) и получить на выходе Shape-файл (полигоны) с атрибутом Z.
Спасибо.images/icons/smile/alert.gif
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Построение изоконтуров
Если кратко, то НЕТ. Интерполяция "с барьерами" в GRASS отсутствует. Может, можно как-то извернуться -- надо смотреть на данные..
Не понял: вы хотите сделать TIN или изолинии? А как выглядят "барьеры"? Это отдельный набор линий?
Не понял: вы хотите сделать TIN или изолинии? А как выглядят "барьеры"? Это отдельный набор линий?
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 09 мар 2012, 12:35
- Репутация: 0
Re: Построение изоконтуров
Добрый вечер!
Мне необходимо построить замкнутые изолинии. Барьеры уже представлены в матрице(текстовый файл XYZ) значениями 9999. Задача- построить замкнутые изолинии, чтобы при этом в процессе построения значения 9999 игнорировались.
Мне необходимо построить замкнутые изолинии. Барьеры уже представлены в матрице(текстовый файл XYZ) значениями 9999. Задача- построить замкнутые изолинии, чтобы при этом в процессе построения значения 9999 игнорировались.
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 09 мар 2012, 12:35
- Репутация: 0
Re: Построение изоконтуров
Еще раз добрый вечер.
А существует возможность построить по входным данным(XYZ) TIN и получить замкнутые контура с последующим сохранением результата в Шейп-файл?
А существует возможность построить по входным данным(XYZ) TIN и получить замкнутые контура с последующим сохранением результата в Шейп-файл?
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Построение изоконтуров
-- импорт XYZ из текстового файла: v.in.asciijas писал(а):А существует возможность построить по входным данным(XYZ) TIN и получить замкнутые контура с последующим сохранением результата в Шейп-файл?
-- триангуляция Делоне: v.delaunay
-- экспорт в shape-файл: v.out.ogr
Изолинии в GRASS строятся только по растрам (r.contour), так что можно попробовать интерполяцию по точкам в растр, а потом сделать изолинии с нужным шагом.
Будут вопросы -- задавайте

Да: было бы неплохо, если бы вы выложили кусок данных.
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 09 мар 2012, 12:35
- Репутация: 0
Re: Построение изоконтуров
Добрый день , спасибо за ответ.В прикреплении файл данных(XYZ).
С уважением,
jas
С уважением,
jas
- Вложения
-
wavestmp.txt
- файл данных(XYZ)
- (359.22 КБ) 722 скачивания
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Построение изоконтуров
Покопался.
-- импортировал все точки в область WGS84 Lat/Long;
-- создал атрибут. таблицу, внёс туда значения Z;
-- вытащил все значимые (у которых Z не равно 9999) точки в отдельную вект. карту;
Получилось (синие точки -- значимые):
P.S. По-хорошему, надо было отсеять ненужные точки прямо из файла (например, с пом. awk/sed)
Далее. Раз точки регулярные, то можно получить растр. Если глянуть на точки, разрешение по широте = 0.5, по долготе = 1.0
-- Выставляем нужное разрешение:
-- Перегоняем точки в растр:
Продолжение в след. сообщении.
-- импортировал все точки в область WGS84 Lat/Long;
-- создал атрибут. таблицу, внёс туда значения Z;
-- вытащил все значимые (у которых Z не равно 9999) точки в отдельную вект. карту;
Получилось (синие точки -- значимые):
P.S. По-хорошему, надо было отсеять ненужные точки прямо из файла (например, с пом. awk/sed)
Далее. Раз точки регулярные, то можно получить растр. Если глянуть на точки, разрешение по широте = 0.5, по долготе = 1.0
-- Выставляем нужное разрешение:
Код: Выделить всё
g.region vect=wavestmp_select nsres=0.5 ewres=1 -p
Код: Выделить всё
v.to.rast in=wavestmp_select out=wavestmp_select use=z
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Построение изоконтуров
Далее.
-- Создаём изолинии (например, с шагом 0.5):
-- Изолинии получились угловатыми и с мелкими линиями, можно сгладить растр (фильтр "скользящим окном") и перестроить изолинии:
В архиве ниже область GRASS и шейп-файл изолиний.
Единственный открытый вопрос -- насчёт "замкнутых контуров". Надо получить полигоны между изолиниями, правильно я понимаю? Не очень представляю, для чего это нужно именно в таком виде...
-- Создаём изолинии (например, с шагом 0.5):
Код: Выделить всё
r.contour in=wavestmp_select out=wavestmp_select_cont_i05 step=0.5
-- Изолинии получились угловатыми и с мелкими линиями, можно сгладить растр (фильтр "скользящим окном") и перестроить изолинии:
Код: Выделить всё
r.neighbors in=wavestmp_select out=wavestmp_select_filter method=average size=3
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 09 мар 2012, 12:35
- Репутация: 0
Re: Построение изоконтуров
Спасибо большое, сразу чувствуется рука мастера! Я, к сожалению, только начинаю знакомиться с GRASS.
Изолинии получились красивые, но мне , опять же к сожалению, необходимо получить именно полигоны между изолиниями. В ArcGis в модуле TIN такая возможность существует, но этого модуля у меня нет.
С уважением,
jas posting.php?mode=reply&f=29&t=10018#
Изолинии получились красивые, но мне , опять же к сожалению, необходимо получить именно полигоны между изолиниями. В ArcGis в модуле TIN такая возможность существует, но этого модуля у меня нет.
С уважением,
jas posting.php?mode=reply&f=29&t=10018#
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Построение изоконтуров
На здоровье
В GRASS действует принцип "think raster", поэтому с TIN туговато..
Попробую "залить" полигоны между изолиниями, это интересно.

Попробую "залить" полигоны между изолиниями, это интересно.
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Построение изоконтуров
Замкнутые контуры получились, но они пока без высот (в атрибутах высот тоже нет).
Шейп:
Шейп:
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 09 мар 2012, 12:35
- Репутация: 0
Re: Построение изоконтуров
Ну вы просто кудесник!
У меня есть предложение как можно получить атрибуты(высоты), правда как это реализовать в GRASS не знаю. Идея - если у каждого полигона есть центроид( только правильный , обязательно должен быть внутри полигона), тогда можно попробовать получить атрибут по гриду (координаты центроида ведь имеются).
С уважением, jas
У меня есть предложение как можно получить атрибуты(высоты), правда как это реализовать в GRASS не знаю. Идея - если у каждого полигона есть центроид( только правильный , обязательно должен быть внутри полигона), тогда можно попробовать получить атрибут по гриду (координаты центроида ведь имеются).
С уважением, jas
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Построение изоконтуров
Примерно так и сделал. В атрибутах есть поле "z", кроме того, сама геометрия в 3D.jas писал(а):Идея - если у каждого полигона есть центроид( только правильный , обязательно должен быть внутри полигона), тогда можно попробовать получить атрибут по гриду (координаты центроида ведь имеются).
Шейп:
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 21
- Зарегистрирован: 09 мар 2012, 12:35
- Репутация: 0
Re: Построение изоконтуров
Добрый день. А сколько времени занимает весь процесс ?
Не могли бы вы описать, как вам удалось реализовать эту задачу?
C уважением,jas
Не могли бы вы описать, как вам удалось реализовать эту задачу?
C уважением,jas
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Построение изоконтуров
Основное время уходит на метод проб и ошибок. Полностью сейчас, наверное, не распишу, уже сам запутался 
Самое "узкое" место -- это создание топологически корректных границ из изолиний и общей границы участка. Без подчистки и затем ручной доводки не получается. GRASS не работает с 3D-топологией, так что приходится делать всё в 2D, а потом снимать высоты с растра.
В ближайшее время распишу общий алгоритм.

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