Как вычислить длину линии пересечений полигонов

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
val674
Интересующийся
Сообщения: 16
Зарегистрирован: 21 июн 2015, 21:11
Репутация: 0

Как вычислить длину линии пересечений полигонов

Сообщение val674 » 13 апр 2021, 16:43

Добрый день, уважаемые форумчане. Не знаю конечно как правильно сформулировать задачу, но постараюсь объяснить.
Имеется: слой земельных участков и слой лесных участков. Нужно рассчитать протяженность прилегания земельных участков к лесу, хотя бы примерно. Я сделал буферную зону от лесных участков, чтобы она имела пересечение с земельными участками, будем считать что это и есть искомая протяженность.
Я вот думаю что теперь нужно сделать из буферного слоя (полигон) линии и затем вычислить длину тех самых линий которые попадают (пересекают) на земельные участки. Пока остановился на этом, буду смотреть как из полигонов сделать линии. Подскажите как лучше поступить, может я не в том направлении двигаюсь.

Да и самое главное у земельных участков есть кадастровые номера (они в атрибутах) нужно эту протяженность как то привязать к номерам.
Вложения
Снимок123.JPG
Снимок123.JPG (84.06 КБ) 4749 просмотров

gamm
Гуру
Сообщения: 4049
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 13 апр 2021, 16:57

немного не так. Сделать буфер из леса (очень небольшой, если тополология правильная), превратить земельные участки в линии, и отрезать их буфером леса. Потом просто просуммировать длину линий ("обрезков").
Истина будет между сумма_длин_линий и сумма_длин_линий - 2*число_линий*размер буфера ("лишние хвостики").
Естественно, делать все с копиями.

lam
Гуру
Сообщения: 1018
Зарегистрирован: 01 авг 2012, 13:55
Репутация: 241

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

Сообщение lam » 13 апр 2021, 16:58

Пробуйте инструмент Intersect

Ivor
Завсегдатай
Сообщения: 345
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 102
Откуда: Иркутск

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

Сообщение Ivor » 13 апр 2021, 17:00

Как вариант:
1. преобразовать полигоны участков в линии,
2. разбить их по узлам на отдельные сегменты,
3. вокруг каждого получившегося сегмента построить буфер (желательно с плоскими концами, наподобие cap style = flat),
4. проверить, какие буфера пересекаются с лесом,
5. выбрать соответствующие сегменты и посчитать их длину для каждого участка (атрибуты то на всех этапах сохранятся).

Ivor
Завсегдатай
Сообщения: 345
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 102
Откуда: Иркутск

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

Сообщение Ivor » 13 апр 2021, 17:04

gamm, судя по картинке там топологии нет в принципе - участки не обязательно именно соприкасаются с лесом, и понятие "прилегание" определяется с некоторой погрешностью, которая как раз ширина буфера и есть

val674
Интересующийся
Сообщения: 16
Зарегистрирован: 21 июн 2015, 21:11
Репутация: 0

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

Сообщение val674 » 13 апр 2021, 17:07

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

Мне теперь нужно отработать предложенные варианты. Нужно еще вникнуть.

gamm
Гуру
Сообщения: 4049
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 13 апр 2021, 17:22

Ivor писал(а):
13 апр 2021, 17:04
судя по картинке там топологии нет в принципе
есть рецепт даже для самого запущенного случая, с двойными-тройными "самонааложенными" полигонами и прочими чудесами. Просто сносим линии участков и буфер леса на достаточно детальные растры, и считаем пиксели в пересечении. Поправки смотрим у учебнике 1925г. (и его переизданиях) про палетки. При желании делаем несколько вариантов с разным разрешением, смотрим на результат - обычно сразу понятно, что и как, линии все достаточно прямые, "завихрений" типа дельты реки и береговой линии нет.

val674
Интересующийся
Сообщения: 16
Зарегистрирован: 21 июн 2015, 21:11
Репутация: 0

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

Сообщение val674 » 13 апр 2021, 19:29

2. разбить их по узлам на отдельные сегменты (или отрезать их буфером леса) --- никак не могу понять как это делается. Подскажите пожалуйста.

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

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

Сообщение trir » 13 апр 2021, 19:34

SQL

Ivor
Завсегдатай
Сообщения: 345
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 102
Откуда: Иркутск

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

Сообщение Ivor » 14 апр 2021, 03:05

val674 писал(а):
13 апр 2021, 19:29
разбить их по узлам на отдельные сегменты (или отрезать их буфером леса) --- никак не могу понять как это делается. Подскажите пожалуйста.
В тулбоксе инструмент Vector geometry/Explode lines

val674
Интересующийся
Сообщения: 16
Зарегистрирован: 21 июн 2015, 21:11
Репутация: 0

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

Сообщение val674 » 14 апр 2021, 09:18

Ivor писал(а):
14 апр 2021, 03:05
В тулбоксе инструмент Vector geometry/Explode lines
Получается что линия разбивается в местах изломов, а мне нужно чтобы сегменты были которые получаются в пересечении буфера леса

видимо там нужно добывать какое то условие exploded ?
Вложения
1.JPG
1.JPG (62.44 КБ) 4577 просмотров

Ivor
Завсегдатай
Сообщения: 345
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 102
Откуда: Иркутск

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

Сообщение Ivor » 14 апр 2021, 10:38

Так вы можете выбрать все получившиеся отрезки, укладывающиеся в буфер леса. В вашем случае будет два отрезка, а вот кусочек слева не попадёт, да

val674
Интересующийся
Сообщения: 16
Зарегистрирован: 21 июн 2015, 21:11
Репутация: 0

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

Сообщение val674 » 14 апр 2021, 10:55

В общем сделал "по колхозному" , но мне это норм. Сделал линии из полигонов земельных участков, и линии из полигонов буфера лесных участков. Потом с помощью Split lines with lines, разбил линии. Теперь вот удаляю лишние линии. Вроде норм получилось.
Вложения
2.JPG
2.JPG (58.6 КБ) 4545 просмотров

gamm
Гуру
Сообщения: 4049
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 14 апр 2021, 13:03

Сделайте выборку полученных линий внутри буфера

val674
Интересующийся
Сообщения: 16
Зарегистрирован: 21 июн 2015, 21:11
Репутация: 0

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

Сообщение val674 » 14 апр 2021, 17:45

Ivor писал(а):
14 апр 2021, 10:38
Так вы можете выбрать все получившиеся отрезки, укладывающиеся в буфер леса. В вашем случае будет два отрезка, а вот кусочек слева не попадёт, да
я теперь понял что вы имели ввиду, я не вдумался. Время потратил на удаление лишних линий, хотя можно было все сделать быстрее. Спасибо!

Ответить

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

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

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