Страница 1 из 3
					
				Построение изоконтуров
				Добавлено: 12 мар 2012, 10:11
				 jas
				Добрый день!
Подскажите пожалуйста , можно ли c использованием GRASS построить изоконтура c учетом барьеров?
Входные данные текстовый файл X,Y,Z (Регулярная сетка) , незначащие данные помечены значением 9999.
Требуется построить замкнутые изолинии (изоконтура) с учетом барьеров(значение - 9999) и получить на выходе Shape-файл (полигоны) с атрибутом Z.  
Спасибо.
images/icons/smile/alert.gif 
			
					
				Re: Построение изоконтуров
				Добавлено: 12 мар 2012, 12:13
				 Александр Мурый
				Если кратко, то НЕТ. Интерполяция "с барьерами" в GRASS отсутствует. Может, можно как-то извернуться -- надо смотреть на данные..
Не понял: вы хотите сделать TIN или изолинии? А как выглядят "барьеры"? Это отдельный набор линий?
			 
			
					
				Re: Построение изоконтуров
				Добавлено: 12 мар 2012, 18:21
				 jas
				Добрый вечер!
Мне необходимо построить замкнутые изолинии. Барьеры уже представлены в матрице(текстовый файл XYZ) значениями 9999. Задача- построить замкнутые изолинии, чтобы при этом в процессе построения  значения 9999 игнорировались.
			 
			
					
				Re: Построение изоконтуров
				Добавлено: 12 мар 2012, 18:32
				 jas
				Еще раз добрый вечер.
 А существует возможность построить по входным данным(XYZ) TIN и получить замкнутые контура с последующим сохранением результата в Шейп-файл?
			 
			
					
				Re: Построение изоконтуров
				Добавлено: 12 мар 2012, 20:48
				 Александр Мурый
				jas писал(а):А существует возможность построить по входным данным(XYZ) TIN и получить замкнутые контура с последующим сохранением результата в Шейп-файл?
-- импорт XYZ из текстового файла: 
v.in.ascii
-- триангуляция Делоне: 
v.delaunay
-- экспорт в shape-файл: 
v.out.ogr
Изолинии в GRASS строятся только по растрам (
r.contour), так что можно попробовать интерполяцию по точкам в растр, а потом сделать изолинии с нужным шагом. 
Будут вопросы -- задавайте 
 
Да: было бы неплохо, если бы вы выложили кусок данных.
 
			
					
				Re: Построение изоконтуров
				Добавлено: 13 мар 2012, 09:09
				 jas
				Добрый день , спасибо за ответ.В прикреплении файл данных(XYZ).
С уважением,
jas
			 
			
					
				Re: Построение изоконтуров
				Добавлено: 13 мар 2012, 14:21
				 Александр Мурый
				Покопался. 
-- импортировал все точки в область WGS84 Lat/Long; 
-- создал атрибут. таблицу, внёс туда значения Z;
-- вытащил все значимые (у которых Z не равно 9999) точки в отдельную вект. карту;
Получилось (синие точки -- значимые):
			
		
				
			 
- wavestmp_pts.png (8.97 КБ) 12945 просмотров
   
P.S. По-хорошему, надо было отсеять ненужные точки прямо из файла (например, с пом. awk/sed) 
Далее. Раз точки регулярные, то можно получить растр. Если глянуть на точки, разрешение по широте = 0.5, по долготе = 1.0
			
		
				
			 
- wavestmp_pts_zoom.png (1.92 КБ) 12945 просмотров
 
-- Выставляем нужное разрешение:
Код: Выделить всё
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 (17.95 КБ) 12945 просмотров
 
Продолжение в след. сообщении.
 
			
					
				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 (32.64 КБ) 12943 просмотра
 
-- Изолинии получились угловатыми и с мелкими линиями, можно сгладить растр (фильтр "скользящим окном") и перестроить изолинии:
Код: Выделить всё
r.neighbors in=wavestmp_select out=wavestmp_select_filter method=average size=3
			
		
				
			 
- wavestmp_filter_contours_0.5.png (32.32 КБ) 12943 просмотра
 
В архиве ниже область GRASS и шейп-файл изолиний.
Единственный открытый вопрос  -- насчёт "замкнутых контуров". Надо получить полигоны между изолиниями, правильно я понимаю? Не очень представляю, для чего это нужно именно в таком виде...
 
			
					
				Re: Построение изоконтуров
				Добавлено: 13 мар 2012, 15:05
				 jas
				Спасибо большое, сразу чувствуется рука мастера! Я, к сожалению, только начинаю знакомиться с GRASS. 
Изолинии получились красивые, но мне , опять же к сожалению, необходимо получить именно  полигоны между изолиниями. В ArcGis в модуле TIN такая возможность существует, но этого модуля у меня нет.
С уважением, 
jas 
posting.php?mode=reply&f=29&t=10018#
 
			
					
				Re: Построение изоконтуров
				Добавлено: 13 мар 2012, 15:13
				 Александр Мурый
				На здоровье 

 В GRASS действует принцип "think raster", поэтому с TIN туговато..
Попробую "залить" полигоны между изолиниями, это интересно.
 
			
					
				Re: Построение изоконтуров
				Добавлено: 13 мар 2012, 18:41
				 Александр Мурый
				Замкнутые контуры получились, но они пока без высот (в атрибутах высот тоже нет).
			
		
				
			 
- cont_i05_areas_cut.png (15.83 КБ) 12903 просмотра
 
Шейп:
 
			
					
				Re: Построение изоконтуров
				Добавлено: 13 мар 2012, 19:15
				 jas
				Ну вы просто кудесник!
 У меня есть предложение как можно получить атрибуты(высоты), правда как это реализовать в GRASS не знаю. Идея - если у каждого полигона есть центроид( только правильный , обязательно должен быть внутри полигона), тогда можно  попробовать получить атрибут по гриду (координаты центроида ведь имеются).
С уважением, jas
			 
			
					
				Re: Построение изоконтуров
				Добавлено: 14 мар 2012, 09:50
				 Александр Мурый
				jas писал(а):Идея - если у каждого полигона есть центроид( только правильный , обязательно должен быть внутри полигона), тогда можно  попробовать получить атрибут по гриду (координаты центроида ведь имеются).
Примерно так и сделал. В атрибутах есть поле "z", кроме того, сама геометрия в 3D.
Шейп:
 
			
					
				Re: Построение изоконтуров
				Добавлено: 14 мар 2012, 11:48
				 jas
				Добрый день. А сколько  времени занимает весь процесс ?
Не могли бы вы описать, как вам удалось реализовать эту задачу?
C  уважением,jas
			 
			
					
				Re: Построение изоконтуров
				Добавлено: 14 мар 2012, 12:39
				 Александр Мурый
				Основное время уходит на метод проб и ошибок. Полностью сейчас, наверное, не распишу, уже сам запутался 

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