Определение середины полигона

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
old_wolf_09
Активный участник
Сообщения: 105
Зарегистрирован: 18 мар 2013, 22:59
Репутация: 1
Откуда: Казахстан

Определение середины полигона

Сообщение old_wolf_09 » 17 мар 2016, 14:01

Есть слой улиц на карте отрисованный как линия. Под этим слоем лежит другой слой (полигональный) обозначающий буферную зону этой самой улицы. Линия должна быть ровно по середине. Как произвести проверку расположения этой линии?

Elf
Участник
Сообщения: 51
Зарегистрирован: 01 июл 2015, 17:46
Репутация: 37
Откуда: Черкассы
Контактная информация:

Re: Определение середины полигона

Сообщение Elf » 17 мар 2016, 14:48

Можно извлечь узлы из линейного слоя, затем из полигонального. С помощью инструмента Вектор/Анализ/Матрица расстояний найти расстояние от узлов линии до двух ближайших узлов полигона.

old_wolf_09
Активный участник
Сообщения: 105
Зарегистрирован: 18 мар 2013, 22:59
Репутация: 1
Откуда: Казахстан

Re: Определение середины полигона

Сообщение old_wolf_09 » 17 мар 2016, 15:11

Elf писал(а):Можно извлечь узлы из линейного слоя, затем из полигонального. С помощью инструмента Вектор/Анализ/Матрица расстояний найти расстояние от узлов линии до двух ближайших узлов полигона.
Нет такой метод не совсем подходит. Скорее что-нибудь вроде скрипта или какими нибудь встроенными инструментами.

Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Определение середины полигона

Сообщение Andrey Zhukov » 17 мар 2016, 15:22

Отрицательный буфер.

old_wolf_09
Активный участник
Сообщения: 105
Зарегистрирован: 18 мар 2013, 22:59
Репутация: 1
Откуда: Казахстан

Re: Определение середины полигона

Сообщение old_wolf_09 » 17 мар 2016, 15:44

Andrey Zhukov писал(а):Отрицательный буфер.
Отрицательный буфер строится от границ полигона внутрь. То есть если ширина одного полигона 10 метров а другого 1 метр то получится что анализа для большого полигона не будет. Как быть?

Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Определение середины полигона

Сообщение Andrey Zhukov » 17 мар 2016, 15:53

Значит, надо учитывать исходный буфер. Если такой информации нет, то печалька получается.

Но вопрос не особо новый. Можете попробовать решения отсюда: http://gis.stackexchange.com/questions/ ... ns-in-qgis

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

Re: Определение середины полигона

Сообщение Александр Мурый » 17 мар 2016, 16:08

Если нужна срединная линия полигона, можете попробовать вот эту processing-модель для QGIS. Сделана мной "на коленке" немного для другой задачи. Там специфические параметры, поэтому, если будут вопросы — готов ответить.
P.S. для модели нужна установленная GRASS 7 и её работающие модули в Processing.
Редактор материалов, модератор форума

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

Re: Определение середины полигона

Сообщение gamm » 17 мар 2016, 16:51

самое простое и надежное решение, как всегда, на растре:

1) снести линию на растр с размером ячеек, соответствующим требуемой точности
2) делаем дистанционное преобразование от полученного растра (без сопротивления, которое tension или cost в разных программах).
3) снимаем расстояния с растра на линии - границы буфера (вместе с координатами)
4) затаскиваем в стат.пакет (R и т.д.) и смотрим, что у нас с расстоянием (раз это буфер и если он одного размера, то должна получиться константа с точностью до размера ячеек растра; если ширина разная, то нужно сносить линию предполагаемой середины, и искать ближайших соседей - это должны быть точки по разные стороны).
5) про кнопки не знаю. И все, кроме дистанционного преобразования, можно сделать в R. Дистанционное преобразование тоже можно, если вызвать SAGA (может, и еще где есть - искать что-то типа cost surface, ditsance transform, cumulative cost), или GRASS (r.cost).

old_wolf_09
Активный участник
Сообщения: 105
Зарегистрирован: 18 мар 2013, 22:59
Репутация: 1
Откуда: Казахстан

Re: Определение середины полигона

Сообщение old_wolf_09 » 17 мар 2016, 17:01

Спасибо за помощь. К сожалению испробовать предложенные методы пока нет возможности но на днях это должно получится. По мере прогресса отпишусь.

Аватара пользователя
Дмитрий Барышников
Гуру
Сообщения: 2572
Зарегистрирован: 17 ноя 2009, 19:17
Репутация: 261
Откуда: Москва

Re: Определение середины полигона

Сообщение Дмитрий Барышников » 17 мар 2016, 22:33

Есть вариант - построить буфер от линии такой же как тестируемый:

Код: Выделить всё

test_buff = line.Buffer(1.0, 3)
Потом сравнить с оригинальным:

Код: Выделить всё

if original_buff.Equal(test_buff):
Сделать с записью что-то согласно логике.

Ответить

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

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

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