5.2. Занятие: Топология функций

Топология является полезным аспектом слоев векторных данных, поскольку минимизирует ошибки, такие как перекрытие или пробелы.

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

Цель данного занятия: понять топологию с помощью примеров.

5.2.1. moderate Идем дальше: Привязка

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

  1. Перейдите к меню Project ► Snapping Options….

  2. Настройте диалоговое окно Snapping options, чтобы активировать слой landuse с помощью вершины Type vertex и допуск в 12 пикселей:

    ../../../_images/set_snapping_options.png
  3. Убедитесь что поле в колонке Avoid overlap проверено.

  4. Выйдите из окна диалога.

  5. Выберите слой landuse и введите режим  (toggleEditing)

  6. Проверьте (в View ► Toolbars) что   Advanced Digitizing инструмент активирован.

  7. Зумирование этой местности (включайте слои и надписи при необходимости):

    ../../../_images/zoom_to.png
  8. Оцифруйте новую (вымышленную) местность:

    ../../../_images/new_park_area.png
  9. В ответ на запрос, присвойте ему OGC_FID 999, но можете оставить остальные значения без изменений.

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

  10. Обратите внимание на инструменты undo undo и redo redo в Advanced Digitizing на панели инструментов.

5.2.2. moderate Идем дальше: Правильные топологические Функции

Иногда может потребоваться обновление функций топологии. На нашем участке работы, эта местность была превращена в лес, поэтому слой землепользования landuse нуждается в обновлении. Поэтому мы будем расширять и присоединять некоторые лесные функции на этой местности:

../../../_images/zoom_to.png

Вместо создания новых полигонов для присоединения к лесным участкам мы будем использовать Инструмент Vertex для редактирования и присоединения существующих полигонов.

  1. Переход в режим редактирования (если он еще не активен).

  2. Выберите инструмент vertexToolActiveLayer Vertex Tool.

  3. Выберите участок леса, выберите вершину и переместите ее на смежную вершину, чтобы две функции леса совместились:

    ../../../_images/corner_selected_move.png
  4. Кликните на другие вершины и привяжите их к месту.

    Топологически правильная граница выглядит следующим образом:

    ../../../_images/areas_joined.png

    Продолжайте и присоедините еще несколько местностей с помощью Инструмента Vertex.

    Можете использовать инструмент capturePolygon Add Polygon Feature для того, чтобы заполнить пробел между двумя полигонами «лес». Если включен параметр Избежать перекрытия, не нужно добавлять каждую вершину - они будут добавляться автоматически, если ваш новый полигон перекрывает существующие.

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

../../../_images/node_example_result.png

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

5.2.3. moderate Идем дальше: Инструмент: Упрощение функции

Продолжаем на том же слое, протестируем инструмент Упрощение функции simplify Simplify Feature:

  1. Кликните на него и активируйте.

  2. Кликните на один из участков, который вы уже присоединили или с помощью Инструмента Vertex или инструмента Add Feature, вы увидите это диалоговое окно:

    ../../../_images/simplify_line_dialog.png
  3. Измените Tolerance и вы увидите что произойдет:

    ../../../_images/simplify_line_example.png

    Это позволяет уменьшить число вершин.

  4. Кликните OK

The advantage of this tool is that it provides you with a simple and intuitive interface for generalization. But notice that the tool ruins topology. The simplified polygon no longer shares boundaries with its adjacent polygons, as it should. So this tool is better suited for stand-alone features.

Прежде чем продолжить, верните полигон в исходное состояние, отменив последнее изменение.

5.2.4. moderate Попробуйте сами Инструмент: Добавить кольцо

Инструмент addRing Add Ring позволяет добавить внутреннее кольцо к функции полигона (вырезать отверстие в полигоне), если отверстие полностью находится внутри полигона (если есть касание границы, это OK). Например, если вы оцифровали внешние границы Южной Африки и вам нужно добавить отверстие для Лесото, вы бы использовали это инструмент.

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

  1. Отключить привязку для слоя landuse с помощью кнопки snapping Enable Snapping (или используйте ярлыки s).

  2. Используйте инструмент addRing Add Ring для создания отверстия с середине геометрии полигона.

  3. Нарисуйте полигон над целевой функцией, как если бы вы использовали инструмент Добавить полигон capturePolygon Add polygon.

  4. Когда вы нажмете правый клик, отверстие станет видимым.

  5. Remove the hole you just created using the deleteRing Delete Ring tool. Click inside the hole to delete it.

  • Undo your edit before continuing with the exercise for the next tool.

5.2.5. moderate Попробуйте сами Инструмент: Добавить часть

Инструмент  addPart Add Part позволяет добавить новую частьдеталь к функции, которая не связана напрямую с основной функцией. Например, если вы оцифровали границы материковой части Южной Африки, но еще не добавили острова Принца Эдуарда, вы бы использовали этот инструмент для их создания.

  1. Выберите полигон, к которому требуется добавить деталь, с помощью инструмента Выберите функцию по местности или одним кликом selectRectangle Select Features by area or single click.

  2. Используйте инструмент Add Part для добавления внешней области.

  3. Удалите только что созданную часть с помощью инструмента deletePart Delete Part.

    Примечание

    Кликните внутри детали, чтобы удалить ее.

5.2.6. moderate Идем дальше: Инструмент: Изменить форму Функции

Инструмент  reshape Reshape Features используется для расширения функции полигона или вырезания его части (вдоль границы).

Расширение:

  1. Выберите полигон с помощью инструмента selectRectangle Select Features by area or single click.

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

  3. Нарисуйте форму вне полигона. Последняя вершина должна быть снова внутри полигона.

  4. Кликните правой кнопкой мыши для завершения фигуры:

    ../../../_images/reshape_step_one.png

    Это даст результат, аналогичный нижеследующему:

    ../../../_images/reshape_result.png

Вырежьте часть:

  1. Выберите полигон с помощью инструмента selectRectangle Select Features by area or single click.

  2. Кликните за пределами полигона.

  3. Нарисуйте фигуру внутри полигона. Последняя вершина должна быть возвращена за пределы полигона.

  4. Кликните правой кнопкой мыши вне полигона:

    ../../../_images/reshape_inverse_example.png

    Результат того, что было выше:

    ../../../_images/reshape_inverse_result.png

5.2.7. moderate Попробуйте сами Инструмент: Разделить Функции

Инструмент splitFeatures Split Features аналогичен инструменту reshape Reshape Features кроме одного, того что он не удаляет ни одной из двух частей. И наоборот, сохраняет обе.

Мы будем использовать инструмент, чтобы отделить угол от полигона.

  1. Сначала выберите слой landuse и повторно включите для него привязку.

  2. Выберите инструмент splitFeatures Split Features и кликните на вершину для того, чтобы начать рисовать линию.

  3. Нарисуйте ограничивающую линию.

  4. Кликните вершину на «противоположной» стороне полигона, который вы хотите разделить, и кликните правой кнопкой мыши для завершения линии:

    ../../../_images/split_feature_example.png
  5. На данный момент может показаться, что ничего не произошло. Но помните, что слой landuse визуализируется без линий границы, поэтому новая линия разделения не будет показана.

  6. Используйте инструмент selectRectangle Select Features by area or single click чтобы выделить только что разделенную частьдеталь; теперь новый элемент будет выделен:

    ../../../_images/new_corner_selected.png

5.2.8. hard Попробуйте сами: Инструмент: Слить Функции

Теперь мы снова присоединим элемент, который вы только что разделили, к оставшейся части полигона:

  1. Поэкспериментируйте с инструментами  mergeFeaturesMerge Selected Features и mergeFeatureAttributes Merge Attributes of Selected Features.

  2. Отметьте разницу.

5.2.9. В заключении

Редактирование топологии - это мощный инструмент, который позволяет быстро и легко создавать и изменять объекты, обеспечивая при этом их топологическую корректность.

5.2.10. Что дальше?

Теперь вы знаете, как легко оцифровать форму объектов, но добавить атрибут - это пока еще заморочка! Далее мы покажем, как использовать формы, делая редактирование атрибутов более простым и эффективным.