Отмывка границ

Кроме QGIS
Ответить
Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Отмывка границ

Сообщение rhot » 25 июн 2012, 12:11

Кто знает какие способы, приёмы, инструменты отмывки границ полигона в свободных ГИС?
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

Re: Отмывка границ

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

Навскидку:
-- "отмывка" границ полигонов в QGIS;
-- в GRASS можно поиграться с буферными зонами полигонов и их раскраской -- может, что-то и выйдет..
Редактор материалов, модератор форума

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Отмывка границ

Сообщение rhot » 25 июн 2012, 12:28

1) обычно так и делаю, создаю искусственный градиент из линий в символике.
2) а вот в GRASS, наверное, выйдет дольше чем в QGIS...
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Отмывка границ

Сообщение KolesovDmitry » 25 июн 2012, 15:24

Если отмывка нужна чисто для оформительких целей, то в GRASS можно создать растр на основе границы полигона, и размывать его в скользящем окне сколько душе угодно.

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Отмывка границ

Сообщение rhot » 25 июн 2012, 16:14

KolesovDmitry, спасибо большое!
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

Re: Отмывка границ

Сообщение Александр Мурый » 25 июн 2012, 16:37

* rhot
А можно увидеть пример, если получилось? И кратко, как именно? :)
Редактор материалов, модератор форума

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Отмывка границ

Сообщение rhot » 25 июн 2012, 21:14

Делал в QGIS
Источник вдохновения: http://www.aubreyrhea.net/gis/index.php ... -prettier/ (3. Coastal Vignette).

С помощью GRASS не разобрался ещё как делать, но идея понравилась, буду пробовать. :)
Вложения
primer.jpg
отмывка границ в QGIS
primer.jpg (21.07 КБ) 10053 просмотра
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

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

Re: Отмывка границ

Сообщение Александр Мурый » 25 июн 2012, 23:05

Попробовал поиграться в GRASS:
polygon_shade_GRASS.png
polygon_shade_GRASS.png (7.58 КБ) 10034 просмотра
"Алгоритм" этого безобразия:
-- полигоны в линии (v.type);
-- линии в растр (v.to.rast);
-- множественные буферные зоны для растра (r.buffer), например, через 5,10,20 метров;
-- задаём нужные цвета растровым буферным зонам, т.о. создаём эффект градиента (r.colors);
-- выводим на экран сначала одни полигоны без границ, затем накладываем растр с буферами (d.rast -o), затем отдельно границы полигонов нужным цветом.

Сюда добавить бы немного "размытости" растра по краям, гауссово размытие, что ли.. (?) Пробовал фильтры (r.neighbors, r.mfilter), но не удалось размыть как в гимпе или инкскейпе:)
Редактор материалов, модератор форума

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Отмывка границ

Сообщение rhot » 26 июн 2012, 04:55

amuriy писал(а): Сюда добавить бы немного "размытости" растра по краям, гауссово размытие, что ли.. (?) Пробовал фильтры (r.neighbors, r.mfilter), но не удалось размыть как в гимпе или инкскейпе:)
вот-вот... основной загадкой для меня остаётся =>
KolesovDmitry писал(а):размывать его в скользящем окне сколько душе угодно.
Смысл понимаю, а реализовать как нужно не могу :(
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: Отмывка границ

Сообщение KolesovDmitry » 26 июн 2012, 08:25

Как я делал ):
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
Пример в крупном масштабе
big.png (47.45 КБ) 10016 просмотров
Результат при мелкомасштабном просмотре:
small.png
Мелкий масштаб
small.png (75.51 КБ) 10016 просмотров

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Отмывка границ

Сообщение rhot » 26 июн 2012, 08:32

Кстати, способ, который я привёл выше, естественно не работает, если границу хочется сделать вокруг изображения в растре. Надо экспериментировать с GRASS...
Вложения
1212.jpeg
Векторная граница обрезается растром
1212.jpeg (54.99 КБ) 10015 просмотров
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

Ответить

Вернуться в «Свободные, бесплатные, открытые ГИС»

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

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