Страница 1 из 1
					
				Отмывка границ
				Добавлено: 25 июн 2012, 12:11
				 rhot
				Кто знает какие способы, приёмы, инструменты отмывки границ полигона в свободных ГИС?
			 
			
					
				Re: Отмывка границ
				Добавлено: 25 июн 2012, 12:23
				 Александр Мурый
				Навскидку:
-- "отмывка" границ полигонов 
в QGIS;
-- в GRASS можно поиграться с буферными зонами полигонов и их раскраской -- может, что-то и выйдет..
 
			
					
				Re: Отмывка границ
				Добавлено: 25 июн 2012, 12:28
				 rhot
				1) обычно так и делаю, создаю искусственный градиент из линий в символике.
2) а вот в GRASS,  наверное, выйдет дольше чем в QGIS...
			 
			
					
				Re: Отмывка границ
				Добавлено: 25 июн 2012, 15:24
				 KolesovDmitry
				Если отмывка нужна чисто для оформительких целей, то в GRASS можно создать растр на основе границы полигона, и размывать его в скользящем окне сколько душе угодно.
			 
			
					
				Re: Отмывка границ
				Добавлено: 25 июн 2012, 16:14
				 rhot
				KolesovDmitry, спасибо большое!
			 
			
					
				Re: Отмывка границ
				Добавлено: 25 июн 2012, 16:37
				 Александр Мурый
				* rhot 
А можно увидеть пример, если получилось? И кратко, как именно? 

 
			
					
				Re: Отмывка границ
				Добавлено: 25 июн 2012, 21:14
				 rhot
				Делал в QGIS
Источник вдохновения: 
http://www.aubreyrhea.net/gis/index.php ... -prettier/ (3. Coastal Vignette).
С помощью GRASS не разобрался ещё как делать, но идея понравилась, буду пробовать. 

 
			
					
				Re: Отмывка границ
				Добавлено: 25 июн 2012, 23:05
				 Александр Мурый
				Попробовал поиграться в GRASS:
			
		
				
			 
- polygon_shade_GRASS.png (7.58 КБ) 11002 просмотра
 
"Алгоритм" этого безобразия:
-- полигоны в линии (
v.type);
-- линии в растр (
v.to.rast);
-- множественные буферные зоны для растра (
r.buffer), например, через 5,10,20 метров;
-- задаём нужные цвета растровым буферным зонам, т.о. создаём эффект градиента (
r.colors);
-- выводим на экран сначала одни полигоны без границ, затем накладываем растр с буферами (
d.rast -o), затем отдельно границы полигонов нужным цветом.
Сюда добавить бы немного "размытости" растра по краям, гауссово размытие, что ли.. (?) Пробовал фильтры (r.neighbors, r.mfilter), но не удалось размыть как в гимпе или инкскейпе:)
 
			
					
				Re: Отмывка границ
				Добавлено: 26 июн 2012, 04:55
				 rhot
				amuriy писал(а):
Сюда добавить бы немного "размытости" растра по краям, гауссово размытие, что ли.. (?) Пробовал фильтры (r.neighbors, r.mfilter), но не удалось размыть как в гимпе или инкскейпе:)
вот-вот... основной загадкой для меня остаётся => 
KolesovDmitry писал(а):размывать его в скользящем окне сколько душе угодно.
Смысл понимаю, а реализовать как нужно не могу 

 
			
					
				Re: Отмывка границ
				Добавлено: 26 июн 2012, 08:25
				 KolesovDmitry
				Как я делал ):
0) Настраиваю регион под задачу (работаем с растрами -- нужно заботиться о величине ячейки).
1) Полигоны в линии (v.type).
2) Линии в растр (v.to.rast).
3) Увеличиваю толшину линии (r.grow).
4) Нулевые (null) ячейки преобразую в математические нули (0) (r.null).
5) Размываю скользящим средним (r.neighbors).
6) Для более красивого результата прогоняю размытие (п. 5) в цикле.
7) Для удобства восприятия (0=черный, 1=белый) настраиваю цвета (r.mapcalc, r.colors).
В предположении, что на выходе из п. 2 получается растр tmp, можно написать такой скриптик:
Код: Выделить всё
# g.region res=25
# Подготовительный этап
r.grow in=tmp out=tmp5 r=5
r.null tmp5 null=0
r.mapcalc "tmp5=1.0*tmp5"
r.neighbors in=tmp5 out=bounds.tmp
# Размытие
for i in `seq 15` 
do 
   r.neighbors in=bounds.tmp out=bounds.tmp --o
done
g.region res=5 # "тонкая настройка"
for i in `seq 15` 
do 
   r.neighbors in=bounds.tmp out=bounds.tmp --o
done
# Цвета
r.mapcalc "bounds.tmp= 1 - bounds.tmp"
r.colors bounds.tmp col=grey
Результат при крупномасштабном просмотре: 
			
		
				
			 
- Пример в крупном масштабе
- big.png (47.45 КБ) 10984 просмотра
 
Результат при мелкомасштабном просмотре: 
			
		
				
			 
- Мелкий масштаб
- small.png (75.51 КБ) 10984 просмотра
  
			
					
				Re: Отмывка границ
				Добавлено: 26 июн 2012, 08:32
				 rhot
				Кстати, способ, который я привёл выше, естественно не работает, если границу хочется сделать вокруг изображения в растре. Надо экспериментировать с GRASS...