Как исправить геометрию в qgis

Если у вас пропала геометрия линий векторного слоя, то это может быть связано с различными причинами, такими как повреждение файла, ошибки при сохранении или неправильное использование программного обеспечения.
в QGIS есть несколько инструментов восстановления, которые могут помочь восстановить слой:

“Проверка целостности геометрии” (Geometry Check) – проверяет слой на наличие ошибок геометрии, таких как пересекающиеся грани, невыпуклые полигоны и т.д. Этот инструмент может помочь выявить и исправить проблемы, которые могут привести к потере геометрии.

“Восстановление геометрии” (Geometry Repair) – позволяет исправить ошибки геометрии, такие как невыпуклые полигоны, пересекающиеся грани и т.д. Этот инструмент может помочь восстановить потерянную геометрию, если она была повреждена.

“Инструменты восстановления” (Recovery Tools) – набор инструментов, позволяющих восстановить поврежденные или потерянные данные векторных слоев. Например, инструмент “Восстановление слоя” (Layer Recovery) позволяет восстановить слой из сохраненных версий проекта, а инструмент “Восстановление атрибутов” (Attribute Recovery) позволяет восстановить потерянные атрибуты слоя.

I have a polygon layer (obtained from Raster to Polygon) with some invalid geometries. I would like to know how can I solve this without going one by one

enter image description here


This may be what answer is suggesting:

enter image description here


After trying solution from answer, the result is not correct.

Any idea?

enter image description here

PolyGeo's user avatar

PolyGeo

64.6k28 gold badges105 silver badges326 bronze badges

asked Aug 9, 2017 at 14:22

GCGM's user avatar

3

A few options for you:

PostGIS (if available, easy to install locally if not and well worth it)

UPDATE TABLE schema.tablename
set geom = ST_MakeValid(geom);

There is also the geometry checker plugin that ships with QGIS but is usually turned off (installed plugins), that has the option to fix all errors.

GRASS v.clean is also an option, available under processing tools in QGIS.

answered Aug 16, 2017 at 14:10

Phil Barlow's user avatar

Phil BarlowPhil Barlow

2312 silver badges6 bronze badges

5

Try doing a buffer of zero, this should fix up your intersection issues

answered Aug 9, 2017 at 20:14

Liam G's user avatar

Liam GLiam G

2,12610 silver badges11 bronze badges

3

QGIS продолжает набирать популярность, и публикую полезные функции, которыми часто пользуюсь. Рекомендую на данном этапе (17-11-2015) пользоваться версией 2.8.3, а не 2.12 – первая, как мне показалось, стабильнее. Хотя я могу ошибаться.

Кратко разберем некоторые функции раздела “Вектор” и его подраздела “Обработка геометрии”. Все функции подразумевают создание нового слоя, поэтому готовьтесь к множеству файлов

  • Если вам нужно добавить поля X, Y, например, для слоя точек, то можно воспользоваться “Экспортировать/добавить поле геометрии…” Хотя я предпочитаю создавать вычисляемые поля вручную
  • Команда “Упростить геометрию” позволит вам уменьшить количество точек, к примеру, на горизонталях или полигонах лесных массивов. 
  • Иногда геометрия слоя полигонов состоит из т.н. мультиполигонов. Команда “Разбить составную геометрию” позволит вам создать отдельные полигоны. Обратный результат поможет достичь команда “Объединить геометрию в составную”
  • Действительно полезная команда – “Полигоны в линии”. Эта функция часто надобится при экспорте полигонального слоя в dxf (см. видео здесь). Полигоны превращаются в линии и потом экспортируюся в dxf. Обычно полигональный слой приходит в dxf в виде штриховок без контура. Для архикадчиков такой проблемы нет. А вот пользователям AutoCAD или SketchUp это создаст трудности. “Линии в полигоны” подобна предыдущей

When working with vector data layers, you may encounter geometry errors. These errors often become part of your data after running geoprocessing, digitizing, editing or data conversion. QGIS3 comes with build-in tools and algorithms to detect and fix invalid geometries. This tutorial will show you a typical workflow for handling invalid geometries in your data.

Note

Different software systems implement different notions of geometry validity. But the leading standard for the geometry model for use in a GIS is the OGC Simple Features Specifications (SFS). In this tutorial, we will use GEOS library to check for geometry validity which uses this standard. This post gives a good overview of common geometry errors as defined by the OGC standard.

Overview of the task¶

We will work with an admin boundary layer for India and fix a geometry error for a state polygon.

Other skills you will learn¶

  • Using the Topological Coloring algorithm to apply a coloring scheme to a polygon layer.

Get the data¶

Datameet provides community-created administrative boundary shapefiles for India.

Download the Datameet Spatial Data Repository [~150 MB] zipfile. The downloaded archive contains multiple folders. Extract the archive and use the files in the States/ folder.

Data Source: [DATAMEET]

Procedure¶

  1. Browse to the downloaded India-States.zip file in QGIS Browser. Expand it and drag the India-States.shp file to the map canvas.

../../_images/170.png

  1. You will see a new India-States layer loaded in the Layers panel. Go to .

../../_images/239.png

  1. We will attemp to run a processing algorithm on the input layer to demonstrate how invalid geometries can cause problems during geoprocessing operations. Search for and locate the algorithm. Double-click to launch it.

../../_images/326.png

  1. In the Topological coloring dialog, select India-States as the Input layer. Keep all other parameters to default and click Run.

../../_images/410.png

Note

The Topological coloring algorithm implements an algorithm to color a map so that no adjacent polygons have the same color. This is a useful cartography technique and the Four Color Theorem states that 4 colors are enough to achieve this result. There is a graph-theory version of this thorem called Five color theorem. The QGIS algorithm implementation is based on graphs so in practive you will see that complex polygon layers such as this will require upto 5 colors.

  1. As the algorithm runs, you will see a warning displayed in the Log tab. 1 feature in the input layer had invalid geometry and was skipped during the processing. The default setting to handle invalid geometry in the Processing Toolbox is located at and is set to Skip (ignore) features with invalid geometries. This is a good default setting, but if your input is large, you may miss this warning and may not know that an input feature was skipped. You may want to change the value to Stop algorithm execution when a geometry is invalid.

../../_images/511.png

  1. Back in the main QGIS window, you will see a new layer Colored added to the Layers panel. Notice that the new layer is missing a state which had invalid geometry. We now know that this particular state polygon had invalid geometry but we don’t know what was the cause. We can easily find that out. Search for and locate the algorithm.

../../_images/611.png

  1. In the Check Validity dialog, select India-States as the Input layer. Select GEOS as the Method. Click Run.

../../_images/710.png

  1. As the algorithm finishes processing, you will see 3 new layers in the Layers panel – Valid output, Invalid output and Error output. The layer Error output contains the locations and description of the geometry errors. Right-click it and select Open Attribute Table.

../../_images/810.png

  1. You will see that the error message is Ring self-intersection. Select the row and click Zoom map to selected features button. As you zoom in, you will see the root cause of the geometry error.

../../_images/910.png

  1. QGIS comes with a built-in algorithm to fix geometry errors automatically. Search for and locate the algorithm. Double-click to run it.

../../_images/1016.png

  1. In the Fix Geometries dialog, select India-States as the Input layer and click Run.

../../_images/1119.png

  1. A new layer Fixed Geometries will be added to the Layers panel. At this point, the geometry error is fixed and you can run any processing algorithm on this layer without problems. But we can see that there is still a gap between the adjacent polygons that is unexpected and can cause topological errors down the line. We can fix this too by editing the polygon. Click the Toggle Editing button in the Digitizing Toolbar. Select the Vertex Tool and from the drop-down select Vertex Tool (Current Layer).

../../_images/1217.png

  1. When the vertex tool is active, click on a vertex to select it. You can press Delete key to delete a vertex or drag it to move it. You can move the vertex so that the polygon edge now touches the adjacent polygon.

../../_images/13.gif

  1. Once done, click the Toggle Editing button again and click Save.

../../_images/1413.png

  1. Let’s run the algorithm again.

../../_images/1512.png

  1. In the Topological Coloring dialog, make sure you select Fixed Geometries as the Input layer. Click Run.

../../_images/1611.png

  1. You will see the algorithm run without any errors and a new layer Colored will be added to the Layers panel. Note that the algorithm doesn’t color the layer by itself, but works by adding a new column called color_id to each polygon that can be used to assign a unique color that is different than adjacent polygons. Select the Colored layer and click the Open the Layer Styling Panel button.

../../_images/1712.png

  1. Select Categorized renderer and the column color_id as the Value. Click Classify. You will now see the map colored so that adjacent polygons have different colors.

../../_images/1810.png

comments powered by

Стандартный набор инструментов в QGIS позволяет решить множество базовых задач при обработке геоданных, не прибегая к помощи плагинов или интегрированных в QGIS инструментов других программ. Ниже представлен перечень наиболее востребованных инструментов для обработки векторных геоданных.

1. Удаление пустот внутри полигонов

При оцифровке растровых слоёв векторные часто создаются с изъянами. Один из таких изъянов – пустоты внутри полигона, который должен быть сплошным.

Десять полезных инструментов для работы с векторными данными в QGIS

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

Десять полезных инструментов для работы с векторными данными в QGIS

В открытом окне выбираем слой с пустотами и выполняем. Появится новый очищенный слой.

Десять полезных инструментов для работы с векторными данными в QGIS

2. Нумерация объектов натуральными числами

Создав слой случайных или регулярных точек, программа автоматически присвоит им порядковый номер. Проблема в том, что нумерация начинается с 0, в то время как чаще всего нумерация нужна с 1.

Десять полезных инструментов для работы с векторными данными в QGIS

Исправить это можно через калькулятор полей, размещённый на верхней панели в окне таблицы атрибутов. В калькуляторе выбираем “Создать новое поле” или “Обновить существующее”. Вписываем выражение для натуральной нумерации @row_number и выполняем.

Десять полезных инструментов для работы с векторными данными в QGIS
Десять полезных инструментов для работы с векторными данными в QGIS

В результате появилась колонка с натуральной нумерацией объектов.

3. Упрощение объектов, сглаживание углов

Необходимость сгладить острые углы также часто возникает после оцифровки растровых данных, когда векторному слою передались квадратные контуры пикселей, либо оцифрованный объект получился слишком угловатым.

Десять полезных инструментов для работы с векторными данными в QGIS

На панели оцифровки выбираем “Упростить объект”.

Десять полезных инструментов для работы с векторными данными в QGIS

Чтобы одни углы не сменить на другие, в строке “Смещение” надо выбрать подходящий процент.

Десять полезных инструментов для работы с векторными данными в QGIS

Меандры сгладились. Более подробно применении инструмента сглаживания при векторизации малого водного объекта описано в этой статье.

4. Игнорирование ошибок геометрии

После векторизации растровых слоёв выходной слой может содержать неверные геометрии – наложение объектов друг на друга, самопересечение полигонов или линий. При решении ряда задач нет надобности исправлять эти ошибки, но их наличие останавливает работу некоторых алгоритмов, делая невозможной дальнейшую работу с таким слоем.

Количество неверных геометрий можно вычислить, но их могут быть сотни, поэтому нужен способ, который позволит игнорировать ошибки.

Заходим в “Параметры” во вкладке “Установки”. На панели слева переходим в раздел “Анализ”. В нём открываем вкладку “Общие улучшения”.

Десять полезных инструментов для работы с векторными данными в QGIS

В параметре “Фильтрация некорректных объектов” будет установлено “Останавливать работу инструмента при некорректной геометрии”. Надо заменить на значение “Не фильтровать”.

5. Проверка топологии

Но если нужно таки выявить неверные геометрии, именуемые иначе ошибками топологии, для их дальнейшего устранения, есть инструмент “Проверка топологии”, расположенный во вкладке “Вектор”. Если его там нет, его нужно включить в разделе “Модули”.

Имеется слой, в котором нужно выявить ошибки.

Десять полезных инструментов для работы с векторными данными в QGIS

После запуска инструмента, справа появится панель, на которой надо задать правила выявления ошибок. Чтобы это сделать, жмём на обведённую красным цветом кнопку и задаём одно или несколько правил.

Десять полезных инструментов для работы с векторными данными в QGIS

ОК и жмём кнопку “Проверить всё”. Ошибки отмечаются красным цветом.

Десять полезных инструментов для работы с векторными данными в QGIS

6. Вершины и центроиды полигонов, пересечения линий, координаты точек

  • Получение вершин полигонального слоя в виде точек: “Вектор – Обработка геометрии – Извлечь вершины”.
  • Получение центроидов полигонов в виде точек: “Вектор – Обработка геометрии – Центроиды”.
  • Получение точек пересечения линий как внутри одного слоя, так и между разными линейными слоями: “Вектор – Анализ – Пересечение линий”.
  • Определение координат точек: “Вектор – Обработка геометрии – Добавить атрибуты геометрии”. Важно учитывать проекцию, в которой производится расчёт.
  • Определение количества точек в полигональном слое: “Вектор – Анализ – Подсчитать точки в полигоне”.
  • Определение длины всех линий одного слоя: “Вектор – Анализ – Сумма расстояний”.

7. Выбор объектов в пределах полигона

Имеется полигон и объекты. Нужно отсечь объекты, находящиеся за пределами основного полигона.

Десять полезных инструментов для работы с векторными данными в QGIS

“Вектор – Выборка – Выбрать по пространственному отношению”. Сперва отберём точки.

Десять полезных инструментов для работы с векторными данными в QGIS

“Выбрать объекты в слое” – это те объекты, которые должен содержать основной полигон – точки. А “Объекты из слоя для сравнения” – это сам полигон, в пределах которого должны быть выбраны точки. Для данной операции достаточно оператора intersect.

Десять полезных инструментов для работы с векторными данными в QGIS

Точки внутри полигона выделены. Остаётся сохранить выделенные объекты отдельным слоем. Контекстное меню: “Экспорт – Сохранить выбранные объекты как”.

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

Десять полезных инструментов для работы с векторными данными в QGIS

Вместо точек выбираем полигональный слой. Дополнительно ставим галочку на операторе cross, чтобы выделились объекты как внутри основного полигона, так и те, которые пересекли его, но не вошли полностью.

Десять полезных инструментов для работы с векторными данными в QGIS

Если линии и полигоны нужно выделить таким образом, чтобы их части, находящиеся за пределами основного полигона, автоматически отсеклись, применяется другой инструмент: “Вектор – Геообработка – Обрезать”.

Десять полезных инструментов для работы с векторными данными в QGIS

Исходный слой – слой, который надо обрезать. Оверлейный слой – основной полигон, в пределах которого должна быть произведена обрезка.

Десять полезных инструментов для работы с векторными данными в QGIS

После выполнения алгоритма линии, находящиеся за пределами основного полигона, отсеклись.

8. Матрица расстояний

Имеется один или два точечных слоя. Необходимо рассчитать расстояние между всеми точками внутри одного слоя или между точками разных слоёв.

На полигоне шириной около 345 км размещены два точечных слоя, в каждом по восемь точек.

Десять полезных инструментов для работы с векторными данными в QGIS
Десять полезных инструментов для работы с векторными данными в QGIS

“Вектор – Анализ – Матрица расстояний”. Открыв инструмент, указываем точечные слои, расстояние между точками которых хотим определить, также указываем атрибутивное поле с нумераций и выполняем.

Десять полезных инструментов для работы с векторными данными в QGIS

Создаётся единый точечный слой, содержащий 64 объекта (8*8), где указаны расстояния между всеми точками. Из таблицы атрибутов следует, что между точками №4 наименьшее расстояние.

Поскольку каждая точка одного слоя соединена с каждой точкой другого, каждый объект нового слоя включает не одну точку, а пару. Если начать перемещать точки нового слоя, они будут перемещаться парно. И выделяются они тоже парно. То, что выглядит как одна точка, на самом деле восемь точек, наложенных друг на друга. Новый слой – это не 64 точки, это 64 пары точек.

Десять полезных инструментов для работы с векторными данными в QGIS

Инструмент подходит для тех случаев, когда нужно рассчитать, например, удалённость населённых пунктов от административного центра.

9. Увеличение количества узлов в линиях и полигонах

Десять полезных инструментов для работы с векторными данными в QGIS

“Вектор – Обработка геометрии – Уплотнить по количеству”. В окне инструмента можно задать количество узлов, которое должно добавиться между узлами исходного слоя. В результате форма объекта не изменится, но количество узлов для редактирования между каждым исходным узлом увеличится на заданное число.

10. Взрыв линии, преобразование линий в полигоны

Эта линия является единым объектом. Взрыв линии создаст слой с отдельными линейными объектами, разорвав исходный на узлах. В панели инструментов анализа инструмент так и называется “Взорвать линии”.

Десять полезных инструментов для работы с векторными данными в QGIS
Десять полезных инструментов для работы с векторными данными в QGIS

Имеется линейный слой, на основе которого надо создать полигоны.

Десять полезных инструментов для работы с векторными данными в QGIS

Инструмент “Преобразовать линии в полигоны” во вкладке “Вектор” в “Обработке геометрии” не сработает. Предположительно, причина в том, что все вертикальные и горизонтальные линии снизу и справа переходят в открытые полигоны. При запуске алгоритма из-за этих открытых полигонов возникнет ошибка, результат некорректный.

Взорвать линии также не удастся, потому что у каждой линии в данном случае всего по два узла – начало и конец. Уплотнить по количеству узлов тоже нельзя, поскольку длина открытых отрезков может различаться. Это приведёт к тому, что места новых узлов на вертикальных и горизонтальных линиях не совпадут.

В версии QGIS 3.16.1 выполнить задачу удалось с помощью инструмента “Построить полигоны”, найденного в панели инструментов анализа.

Десять полезных инструментов для работы с векторными данными в QGIS
Десять полезных инструментов для работы с векторными данными в QGIS

Открытые полигоны и наложения одних линий на другие в этом инструменте не становятся причиной ошибок, как в инструменте “Преобразовать линии в полигоны”.

Читайте нас в Telegram и ВКонтакте

Добавить комментарий