Страница 1 из 1
Определение середины полигона
Добавлено: 17 мар 2016, 14:01
old_wolf_09
Есть слой улиц на карте отрисованный как линия. Под этим слоем лежит другой слой (полигональный) обозначающий буферную зону этой самой улицы. Линия должна быть ровно по середине. Как произвести проверку расположения этой линии?
Re: Определение середины полигона
Добавлено: 17 мар 2016, 14:48
Elf
Можно извлечь узлы из линейного слоя, затем из полигонального. С помощью инструмента Вектор/Анализ/Матрица расстояний найти расстояние от узлов линии до двух ближайших узлов полигона.
Re: Определение середины полигона
Добавлено: 17 мар 2016, 15:11
old_wolf_09
Elf писал(а):Можно извлечь узлы из линейного слоя, затем из полигонального. С помощью инструмента Вектор/Анализ/Матрица расстояний найти расстояние от узлов линии до двух ближайших узлов полигона.
Нет такой метод не совсем подходит. Скорее что-нибудь вроде скрипта или какими нибудь встроенными инструментами.
Re: Определение середины полигона
Добавлено: 17 мар 2016, 15:22
Andrey Zhukov
Отрицательный буфер.
Re: Определение середины полигона
Добавлено: 17 мар 2016, 15:44
old_wolf_09
Andrey Zhukov писал(а):Отрицательный буфер.
Отрицательный буфер строится от границ полигона внутрь. То есть если ширина одного полигона 10 метров а другого 1 метр то получится что анализа для большого полигона не будет. Как быть?
Re: Определение середины полигона
Добавлено: 17 мар 2016, 15:53
Andrey Zhukov
Значит, надо учитывать исходный буфер. Если такой информации нет, то печалька получается.
Но вопрос не особо новый. Можете попробовать решения отсюда:
http://gis.stackexchange.com/questions/ ... ns-in-qgis
Re: Определение середины полигона
Добавлено: 17 мар 2016, 16:08
Александр Мурый
Если нужна срединная линия полигона, можете попробовать
вот эту processing-модель для QGIS. Сделана мной "на коленке" немного для другой задачи. Там специфические параметры, поэтому, если будут вопросы — готов ответить.
P.S. для модели нужна установленная GRASS 7 и её работающие модули в Processing.
Re: Определение середины полигона
Добавлено: 17 мар 2016, 16:51
gamm
самое простое и надежное решение, как всегда, на растре:
1) снести линию на растр с размером ячеек, соответствующим требуемой точности
2) делаем дистанционное преобразование от полученного растра (без сопротивления, которое tension или cost в разных программах).
3) снимаем расстояния с растра на линии - границы буфера (вместе с координатами)
4) затаскиваем в стат.пакет (R и т.д.) и смотрим, что у нас с расстоянием (раз это буфер и если он одного размера, то должна получиться константа с точностью до размера ячеек растра; если ширина разная, то нужно сносить линию предполагаемой середины, и искать ближайших соседей - это должны быть точки по разные стороны).
5) про кнопки не знаю. И все, кроме дистанционного преобразования, можно сделать в R. Дистанционное преобразование тоже можно, если вызвать SAGA (может, и еще где есть - искать что-то типа cost surface, ditsance transform, cumulative cost), или GRASS (r.cost).
Re: Определение середины полигона
Добавлено: 17 мар 2016, 17:01
old_wolf_09
Спасибо за помощь. К сожалению испробовать предложенные методы пока нет возможности но на днях это должно получится. По мере прогресса отпишусь.
Re: Определение середины полигона
Добавлено: 17 мар 2016, 22:33
Дмитрий Барышников
Есть вариант - построить буфер от линии такой же как тестируемый:
Потом сравнить с оригинальным:
Сделать с записью что-то согласно логике.