Как в QGIS сделать буферные зоны на внутренней стороне полигона

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Natalia Novoselova » 15 дек 2017, 03:13

Как в QGIS для выпуклого полигона (например, круга) построить буферные зоны в виде полигональных объектов «бублик», но сделать это от границы исходного полигона ВНУТРЬ.
Почему-то простые плагины, которые строят буфер, строят его только на внешней стороне – вокруг исходного полигона. А мне надо построить внутрь – от исходного контура (окружности) внутрь с заданной дистанцией до самого центра. Примерно как на картинке.

Вообще, итоговая задача построить профиль по полигону, но не единичный, а осредненный (зональной статистикой). То есть с каким-то шагом от границ круга (в общем случае - любого выпуклого полигона) к его центру сделать бублико образные полигоны, по которым посчитать Mean, Mediana подстилающего растра. Мне кажется, что идеально – построить внутренние буферные зоны. Но пока не нашла возможности их построить.
Вложения
circle_example1.jpg
circle_example1.jpg (30.77 КБ) 11482 просмотра

Andrey Naumkin
Интересующийся
Сообщения: 19
Зарегистрирован: 08 дек 2015, 17:19
Репутация: 6
Откуда: Россия
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Andrey Naumkin » 15 дек 2017, 03:49

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

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Natalia Novoselova » 15 дек 2017, 04:20

Andrey Naumkin писал(а):
15 дек 2017, 03:49
Нужно сделать буфер с отрицательным значением.
Если нужна именно буферная зона границы полигона, то преобразовать полигоны в линии и построить буфер этих линий.
Я пробую с Vector > Geoprecessing Tool > Fixed Distance buffer. Задаю там отрицательную дистанцию (-500) и 5 секторов. Он строит 1 буфер. Почему один? Все (проект и тестовый полигон - в UTM 22s)

Настройки как на картинке. Строю для тестового объекта как в приложении (1 круг). Как сделать так, чтобы для тестового круга построить внутренние буферные зоны-бублики с дистанцией 500 м от внешних границ до центра?

Другие плагины тоже пробовала - не получилось.
В плагине Multi ring buffer нет возможности задать отрицательное значение дистанции, Multi-distance buffer – вообще не понятно как работает. Вписать отрицательную дистанцию можно, но он у меня ничего не строит (при нажатии на ОК ничего не дает – может быть не разобралась с настройками). Еще и другие плагины с буферами использовала – тоже без резрезультатно. :cry: :cry:
Может подскажите, что нужно сделать? В Fixed Distance buffer или еще где-то?

Нет, мне не нужны линии буферов. Только сами "бублики" как полигональные объекты.
Вложения
Fixed-Distance-buffer.jpg
Fixed-Distance-buffer.jpg (80.39 КБ) 11470 просмотров
Circle1test.zip
(11.96 КБ) 310 скачиваний

trir
Гуру
Сообщения: 5278
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1013
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение trir » 15 дек 2017, 04:40


Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Игорь Белов » 15 дек 2017, 08:09

  1. преобразуем круги в окружности;
  2. вокруг окружностей строим буферы;
  3. вырезаем внутренние части буферов кругами, инструмент Clip.
Вложения
img_20171215_084028.png
img_20171215_084028.png (1.74 КБ) 11422 просмотра
img_20171215_084034.png
img_20171215_084034.png (3.27 КБ) 11422 просмотра
img_20171215_084042.png
img_20171215_084042.png (2.17 КБ) 11422 просмотра
Последний раз редактировалось Игорь Белов 15 дек 2017, 12:13, всего редактировалось 1 раз.
The purpose of computing is insight, not numbers

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Natalia Novoselova » 15 дек 2017, 09:03

Игорь Белов писал(а):
15 дек 2017, 08:09
преобразуем круги в окружности;
вокруг окружностей строим буферы;
вырезаем внутренние части буферов кругами, инструмент Clip.



А как построить окружности? Вот у меня есть тестовый круг - выше в приложении. Как построить серию кругов с тем же центром, но меньшим радиусом?


Потом, неужели нельзя просто построить внутренний буфер? Если есть внешний, какая ему разница? Вот, сказали, надо задать дистанцию со знаком минус. Но у меня так не получилось. А как правильно ее задать в буферных инструментах? Точно - аркгис строит буфер как внутрь, так и снаружи.

Это нужно еще и потому, что окружность - только пример (хотя в моем случае он нужен прямо). Но вообще нужно научиться строить внутренний буфер для любого полигона.

Аватара пользователя
Crackfox
Активный участник
Сообщения: 131
Зарегистрирован: 02 мар 2016, 20:29
Репутация: 17
Ваше звание: разрядник
Откуда: Москва
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Crackfox » 15 дек 2017, 09:40

Natalia Novoselova писал(а):
15 дек 2017, 09:03
просто построить внутренний буфер
а вам необходим именно внутренний буфер ? из точек можно сразу создать кучу геометрических колец с помощью Multiple Ring Buffer. Точнее мультибуфер, удаляя лишние полигоны получите кольца

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Игорь Белов » 15 дек 2017, 09:52

Natalia Novoselova писал(а):
15 дек 2017, 09:03
как построить окружности
Исходные круги превращаются в окружности инструментом "Polygons to lines".
Natalia Novoselova писал(а):
15 дек 2017, 09:03
неужели нельзя просто построить внутренний буфер?
Как построить внутренний буфер просто, не знаю.
Natalia Novoselova писал(а):
15 дек 2017, 09:03
окружность - только пример (хотя в моем случае он нужен прямо). Но вообще нужно научиться строить внутренний буфер для любого полигона.
Способ работает для любых полигонов:
Вложения
img_20171215_094427.png
img_20171215_094427.png (1.66 КБ) 11397 просмотров
img_20171215_094435.png
img_20171215_094435.png (3.22 КБ) 11397 просмотров
img_20171215_094439.png
img_20171215_094439.png (2.14 КБ) 11397 просмотров
The purpose of computing is insight, not numbers

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Natalia Novoselova » 15 дек 2017, 13:49

Игорь Белов писал(а):
15 дек 2017, 09:52
Исходные круги превращаются в окружности инструментом "Polygons to lines".
Способ работает для любых полигонов:
Спасибо, но просто из картинки и слов "преобразуем круги в окружности" я не понимаю, как это можно воспроизвести в QGIS. :cry:

У меня есть круг (в приложении). Каким инструментом мне создать серию уменьшающихся кругов внутри него, чтобы сделать потом из них буферы по вашему способу? У меня нет этой серии. У меня есть только 1 исходный круг. Мне надо сделать через шаг 500 м много кругов, которые построены из того же центра, но имеют меньший радиус. Если я их построю, то смогу использовать ваш способ.

Аналогичное для полигона проивзольной формы. Каким инструментом можно построить серию уменьшающихся подобных полигонов ("как подобных уменьшающихся матрешек она в другой"), внутри этого полигона?
Главная проблема как раз в этом. Я не знаю как из 1-го исходного круга (полигона) сделать серию уменьшающихся кругов (полигонов), построенных из того же центра.
Вложения
Circle1test.zip
(11.96 КБ) 272 скачивания
Последний раз редактировалось Natalia Novoselova 15 дек 2017, 14:06, всего редактировалось 2 раза.

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Natalia Novoselova » 15 дек 2017, 13:59

Crackfox писал(а):
15 дек 2017, 09:40
а вам необходим именно внутренний буфер ? из точек можно сразу создать кучу геометрических колец с помощью Multiple Ring Buffer. Точнее мультибуфер, удаляя лишние полигоны получите кольца
Не поняла. Я нашла плагин Multi Ring Buffer. Пытаюсь строить внутренние плагины по тестовому кругу (в приложении на пост выше). Он у меня строит только на внешней стороне круга. Отрицательную дистанцию в поле "Distance" не дает вписать.
Не поняла, как это "из точек можно создать". Из каких точек? Я пытаюсь строить от полигонального объекта "круг". Может быть не правильно..

Аватара пользователя
Эдуард Казаков
Гуру
Сообщения: 546
Зарегистрирован: 23 апр 2014, 17:11
Репутация: 532
Откуда: Planet Earth
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Эдуард Казаков » 15 дек 2017, 14:12

Наталья, кажется вы просто неправильно интерпретировали параметр segments - это не количество уровней вложения, а параметр степени аппроксимации буфера (насколько он будет приближен к окружности). Используете для своего исходного объекта N раз инструмент буферной зоны с увеличивающимся отрицательным значением. И затем просто инструментом difference в geoprocessing tools начинаете от меньших к большим отсекать "центральные области" окружностей, оставляя кольца. Принцип автоматизации, если она нужна, тот же.

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Игорь Белов » 15 дек 2017, 14:38

Извлекли контур полигона из Circle1test в линию outline:
[Vector] → [Geometry Tools] → [Polygons to lines]

Скопировали в тот же слой ещё 25 копий линии. Обновили поле Radius_m по формуле:
13000 - $id * 500

Вокруг outline создали слой буферов buf с радиусами из поля Radius_m:
[Vector] → [Geoprocessing Tools] → [Variable distance buffer]

Обрезали buf по границе Circle1test:
[Vector] → [Geoprocessing Tools] → [Clip]

Результат в слое inner_buf.

Multi Ring Buffer создаёт сразу много буферных зон, так что не надо возиться с копиями линий. Кроме того, позволяет создавать как собственно буферы (Central), так и концентрические полосы (Sequential). Отрицательные радиусы не принимает.
Вложения
Circle1test.7z
(659.66 КБ) 255 скачиваний
img_20171215_143256.png
img_20171215_143256.png (36.99 КБ) 11316 просмотров
The purpose of computing is insight, not numbers

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Natalia Novoselova » 15 дек 2017, 16:44

Эдуард Казаков писал(а):
15 дек 2017, 14:12
Наталья, кажется вы просто неправильно интерпретировали параметр segments - это не количество уровней вложения, а параметр степени аппроксимации буфера (насколько он будет приближен к окружности). Используете для своего исходного объекта N раз инструмент буферной зоны с увеличивающимся отрицательным значением. И затем просто инструментом difference в geoprocessing tools начинаете от меньших к большим отсекать "центральные области" окружностей, оставляя кольца. Принцип автоматизации, если она нужна, тот же.
Игорь Белов писал(а):
15 дек 2017, 14:38
Обновили поле Radius_m по формуле:
13000 - $id * 500
А как его обновлять по формуле? Делать по-очередно слой с каждым кругом редактируемым и дальше через Filed Calculator (в окне, где вбивают формулы для расчета) вбивать эту формулу?




Игорь, но я правильно поняла, что для полигонов произвольной формы уже так не получится через форумулу радиуса.
Но я поняла принцип работы буферного инструмента в QGIS и нашла инструмент, чтобы использовать описанный вами выше принцип.
Vector > Geoprocessing tool > Fixed Distance buffer. В поле Distance по-очередно задаем -500 м, -1000 м, -1500 м. И он строит нужные уменьшающиеся полигоны. Потом нужно меньшим вырезать внутри большего.

Я просто искала по логике аркгис, который сразу строит "бублики" в обе стороны (внешние и внутренние). В кугис, как я поняла, нет такой автоматизации. И буфер строит не вырезанный внутри полигон, а полигон сплошной, из которого еще вручную надо вырезать? Точнее для внешних колец - есть инструменты в кугис. Вот для построения буфера внутрь автоматически - ничего не нашла. :cry:
Мне кажется... может есть таки плагины, которые строят внутренние кольца автоматически (поищу еще, может быть найдется)

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


Ед. не разобралась с параметром "Segments" в Fixed Distance buffer. Если он показывает степень приближенности к исходному полигону, а моя цель сделать его приближенным МАКСИМАЛЬНО, то какое значение мне туда ставить? Segments = 1, или, наоборот, надо завышать?

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2229
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1501
Откуда: Казань

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Игорь Белов » 15 дек 2017, 18:30

Да, через калькулятор. Только формулу придётся менять в зависимости от количества буферов.
Нет, неправильно. В формуле радиус не окружности, а буфера, так что формула работает для полигонов произвольной формы…
Стоп. Забудьте про формулы, используйте плагин Multi Ring Buffer. Вот так:
  1. извлечь контур полигона;
  2. создать буферы плагином;
  3. обрезать по границе полигона.
И не обязательно делать это для каждого полигона отдельно, можно обработать слой, где их много.

А число сегментов ставьте не больше пяти. Если все Ваши полигоны такие сверхгладкие, как Circle1test, этого и так будет слишком много.
The purpose of computing is insight, not numbers

Аватара пользователя
Natalia Novoselova
Гуру
Сообщения: 3020
Зарегистрирован: 15 янв 2013, 20:14
Репутация: 69
Ваше звание: Лиса
Откуда: **
Контактная информация:

Re: Как в QGIS сделать буферные зоны на внутренней стороне полигона

Сообщение Natalia Novoselova » 15 дек 2017, 19:04

Игорь Белов писал(а):
15 дек 2017, 18:30
А число сегментов ставьте не больше пяти. Если все Ваши полигоны такие сверхгладкие, как Circle1test, этого и так будет слишком много
Настоящие полигоны как раз сверх негладкие. Как на картинке внизу. Тогда какой сегмент нужен? Я поняла, что чем он больше, тем больше идет приближение. Но вот принцип пока не понимаю. То есть почему вообще этот параметр надо указывать, почем он не один для всех буферов? Ну ладно. Буду ставить 5.


Обработка слоем (сразу много фрагментов) затруднена тем, что они ж все разной площади, то есть разное будет и число внутренних полигонов.

В общем - буду сейчас по всякому пытаться. И после наработанный способ в теме опишу.


От идеи только круга (что изначално было наибольшей вписанной в каждый фрагмент окружностью) я откаказалась. Градиент параметра (профиль) нужно считать по всему полигону - двигаясь от границ к его осевой центральной линии.
Вот от этого такая технология - строить концентрические буферные зоны от границ фрагмента к его центральной оси. По каждому "бублику" зональной статистикой брать среднее и медиану подстилающего растра (искомые параметры растительности - ndvi и ряд других). И уже потом (по этим буферным зонам) строить обычный профиль (в каждой зоне - одна точка).

Нужно все это, чтобы понять, что происходит с параметром растительности от границ к центру фрагмента. Чистый профиль (что сначала пробовала) - слишком скачет, нужно осреднение.
Вложения
polygon.jpg
polygon.jpg (97.75 КБ) 11248 просмотров

Ответить

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

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

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