Страница 1 из 1

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

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

Да и самое главное у земельных участков есть кадастровые номера (они в атрибутах) нужно эту протяженность как то привязать к номерам.

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

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

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

Добавлено: 13 апр 2021, 16:58
lam
Пробуйте инструмент Intersect

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 13 апр 2021, 19:34
trir
SQL

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

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

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

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

видимо там нужно добывать какое то условие exploded ?

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

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

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

Добавлено: 14 апр 2021, 10:55
val674
В общем сделал "по колхозному" , но мне это норм. Сделал линии из полигонов земельных участков, и линии из полигонов буфера лесных участков. Потом с помощью Split lines with lines, разбил линии. Теперь вот удаляю лишние линии. Вроде норм получилось.

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

Добавлено: 14 апр 2021, 13:03
gamm
Сделайте выборку полученных линий внутри буфера

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

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