Нахождение осевых линий от полигонов в QGIS?


19

Мне было интересно, есть ли способ создать центральные линии из полигонов в QGIS? У меня есть слой многоугольника, но в идеале центральные линии нужны как отдельный файл.

пример


Я только что загрузил фотографию полигонов
Алан Карр

Где, на примере изображения, упадут «центральные линии»? Не могли бы вы обновить изображение, показывающее желаемые линии другим цветом, возможно?
Симбамангу

Просто прямо вниз посередине всех многоугольников. Конечный результат, который нам нужен, это просто определить длину всего объекта (при условии, что полигоны были линиями), поэтому даже не обязательно получать центральные линии.
Алан Карр

Плагин HCMGIS утверждает, что создает многоугольные осевые линии как одну из своих функций пространственной обработки. Это не сработало для меня, но, возможно, стоит попробовать.
CSK

Ответы:


10

Я работал над реализацией модели, изображенной в ответе @ RajGovind на Создание осевых линий из дорожных многоугольников / обшивок? что довольно близко к тому, что @geogeek описал в своем ответе здесь, в этой теме.

Вы можете скачать модель с Github https://raw.githubusercontent.com/anitagraser/QGIS-Processing-tools/master/2.12/models/polygon_to_centerline.model

введите описание изображения здесь


Я попробовал эту модель, и она работает, но я не смог придумать простой способ сохранить длинные центральные линии, но убрать маленькие боковые линии, так как каждая из боковых линий состоит из множества мелких элементов, и Главная осевая линия также состоит из множества мелких линий.
января

@Jan, пожалуйста, опубликуйте этот вопрос в новой ветке, чтобы больше людей его увидели.
Подземье

9

Вы можете попробовать этот алгоритм:

get vertices from the polygons(poly_vertex).
-make voronoi using (poly_vertex) as input the result could be called(poly_voronoi).
-get lines from (poly_voronoi) => (poly_voronoi_lines).
-get the originale polygon contour (polygon_lines).
-remove (poly_voronoi_lines) touching  (polygon_lines) the result is supposed to be the center lines , but you may need further clean up.

я не знаю, как это можно реализовать в Qgis

Я хотел бы, чтобы это могло помочь


Какие другие программы вы можете сделать это на. Я могу получить доступ к MapInfo и Arc, если это необходимо
Алан Карр

этот алгоритм, безусловно, будет работать в Arcgis, и он также может работать в Qgis с использованием полигонов Вороного gis.stackexchange.com/questions/6971/thiessen-polygons-in-qgis
geogeek

6

есть хороший инструмент с названием ET GeoWizards 10.2 для продуктов Esri, но я не знаю, хорошее ли это решение или нет ...

Вы можете получить некоторую информацию здесь

осевые

кроме этого в траве вы можете проверить функцию r.thin для основного использования.

r.thin - тонкие ненулевые ячейки, обозначающие линейные объекты в слое растровой карты.

rthin я надеюсь, что это поможет вам ...


3

просто найдите длину всего этого

Как именно должен быть результат? Приближением является периметр, деленный на 2.

Чтобы получить лучший результат: Вы можете вручную измерить некоторые полигоны. Затем определите разницу между измерением и периметром, деленным на 2 . Примените этот поправочный коэффициент ко всему набору данных.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.