У меня есть шейп-файл с городскими районами, но, к сожалению, шейп-файл содержит только одну строку. Шейп-файл выглядит так:
Я хочу преобразовать эти линии в шейп-файл полигона области в QGIS. Я пробовал это с помощью инструмента «Линии к полигонам» (Vector> Geometry Tools> Lines to polygons), но он не работал правильно. После использования этого инструмента шейп-файл выглядит следующим образом:
Есть ли другой способ преобразовать шейп-файл линии в шейп-файл полигона области в QGIS?
Кстати, я использую QGIS 2.14.3 Essen.
Ответы:
Polygonize
Инструмент от обработки инструментов до сих пор отлично работает для меня на простых линиях:Однако необходимо, чтобы линии пересекались или имели общие вершины. И линии не должны иметь самопересечения.
Возможно, вам придется привязать угловые вершины, чтобы это заработало. Я обычно устанавливаю допуск привязки к вершине 10 пикселей.
источник
Просто подсказка, если вы не можете найти
Polygonize
инструмент. В моей установке QGIS 2.18.3 (Windows) я не мог найтиPolygonize
инструментVector geometry tools
в панели инструментов. Мне потребовалось некоторое время, чтобы понять, что мне нужно установитьpython-shapely
библиотеку с OSGeo4W (спасибо Ник Хоптон: Perfect Polygons в QGIS ).источник
Глядя на ваше изображение, я предположил бы, что каждая линия не полностью охватывает область, линии просто действуют как заборы и не воссоединяются в начале. Ваши полигоны создаются на концах линий, поэтому инструмент «Линии на полигоны» работает нормально, это данные, с которыми связана проблема.
Боюсь, единственное, что вы можете сделать, о чем я могу подумать, - это оцифровать новый слой полигонов. К счастью, QGIS сделал это действительно легко с помощью инструмента оцифровки трассировки (значок магнита), который доступен в 2.14.
источник
Если отверстий нет, я бы создал царапающий слой с одним многоугольником, достаточно большим, чтобы покрыть всю вашу область. Затем я бы пересек его с вашим результатом линий и полигонов и разделил бы его по мере необходимости.
источник
Я могу предложить использовать
"Virtual Layer"
сквознойLayer > Add Layer > Add/Edit Virtual Layer...
.Давайте предположим, что у нас есть пять линейных объектов
"lines"
, см. Изображение ниже.С помощью следующего запроса можно достичь результата.
Выходной виртуальный слой будет выглядеть
Как уже упоминалось @AndreJ, линии должны пересекаться или иметь общие вершины. И линии не должны иметь самопересечения. С точки зрения очистки топологии слоя, я могу предложить изучить
v.clean
набор инструментов GRASS.Если линии имеют самопересечение, вы можете использовать ConvexHull со следующим запросом
Ссылки:
источник
Если полилинии перекрывают друг друга,
Polygonize
инструмент не может обработать это следующим образом:Однако
Lines to polygons
инструмент работает, как ожидается, следующим образом:источник