Как работают инструменты Упростить линию и Упростить полигон

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

Алгоритмы упрощения

Сохранение критических точек (Дуглас-Пекер)

Алгоритм Сохранение критических точек (Дуглас-Пекер) (algorithm='POINT_REMOVE' в Python) используется для быстрого упрощения линий. Он сохраняет критические точки, которые образуют главную форму линии и удаляет все остальные точки. Сначала алгоритм соединяет конечные точки линии с линией тренда. Расстояние от каждого узла до линии тренда измеряется по перпендикуляру. Вершины, которые находятся на расстоянии меньше допуска, устраняются. Линия разделяется узлом только тогда, когда узел настолько удален от линии тренда, что создает две новые линии тренда. Оставшиеся узлы измеряются относительно новых линий, процесс повторяется до тех пор, пока все вершины, находящиеся в пределах допуска, не будут удалены. Данная опция опирается на алгоритм, описанный Дугласом и Пекером (1973).

Алгоритм Сохранение критических точек (Дуглас-Пекер) эффективен для сжатых данных и для устранения избыточных подробностей, однако, полученная линия может содержать нежелательные острые узлы и выбросы, которые ухудшают картографическое качество линии. Используйте алгоритм Сохранение критических точек (Дуглас-Пекер) для относительно небольшого количества плотно расположенных или сжатых данных, а также когда не требуется высокое качество картографирования.

Сохранение критических изгибов (Ванг-Мюллер)

Алгоритм Сохранение критических изгибов (Ванг-Мюллер) (algorithm='BEND_SIMPLIFY' in Python) использует методики распознавания формы, которые выявляют изгибы, анализируют их характеристики и исключают незначительные объекты. Линейный объект можно представить в виде серии изгибов (Wang, 1996); каждый из которых определяется некоторым знаком (положительным или отрицательным) в точках перегиба относительно последующих вершин. Некоторые геометрические свойства каждого изгиба сравниваются с половиной круга, диаметр которого равен указанному допуску упрощения. Эти измерения определяют, будет изгиб сохранен или исключен, заменившись на базовую линию (линия, соединяющая конечные точки изгиба). Упрощение - процесс итерационный, поэтому маленькие изгибы, которые "исключаются" при первых итерациях, в дальнейшем формируют большие изгибы. Итоговая линия повторяет основную форму исходной более точно и картографическое качество заметно выше, чем у алгоритма Сохранение критических изгибов (Ванг-Мюллер). Данная опция опирается на алгоритм, описанный Ванг и Мюллер (1998).

Сохранение взвешенной полезной площади (Джоуи-Джонс)

Алгоритм Сохранение взвешенной полезной площади (Джоуи-Джонс) (algorithm='WEIGHTED_AREA' в Python) определяет треугольник полезной площади для каждой вершины. Затем эти треугольники взвешиваются по набору определений, для оценки их однородности, асимметричности и выпуклости для каждой области. Взвешенные области указывают на избыточные вершины для удаления, позволяющие упростить линию, максимально возможно сохраняя при этом ее характеристики. Данная опция опирается на алгоритм, описанный Джоуи и Джонс (2005).

Оставление эффективных площадей (Висвалингэм-Уайатт)

Алгоритм Оставить эффективные области (Висвалингэм-Уайатт) (algorithm='EFFECTIVE_AREA' в Python) присваивает вершинам значение их важности в зависимости от площади треугольника, формируемого данной и двумя соседними вершинами, а затем удаляет вершины, которым были присвоены наименьшие значения важности. Удалив вершины, относящиеся к наименьшим треугольникам, вы лишь незначительно повлияете на форму линии или контура. Процесс является итерационным, поэтому после первого прохода и удаления вершин будут вновь построены треугольники и процесс продолжится. Данная опция опирается на алгоритм, описанный Висвалингэм и Уайатт (1992).

Поддержка топологической целостности

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

Прежние версии:

В предыдущей версии инструментов была возможность идентифицировать ошибки топологии при обработке. В инструментах были параметры, позволяющие идентифицировать, и, по возможности, исправить эти ошибки. Эти инструменты больше не выявляют топологические ошибки, соответственно отсутствует необходимость их проверки и исправления. Параметры Проверка на топологические ошибки (error_checking_option в Python) и Исправлять ошибки топологии (error_resolving_option в Python) пока присутствуют в синтаксисе скрипта для совместимости в скриптах и моделях, но в диалоговом окне инструмента они скрыты и в данный момент не используются.

Поле SimPgnFlag (если речь идет об инструменте Упростить полигон) или поле SimLnFlag (если речь идет об инструменте Упростить линию) добавляется к выходному классу объектов, и в нем отмечаются ошибки топологии, присутствующие во входном классе объектов. В предыдущей версии инструментов эти поля использовались для указания на ошибки топологии, которые появлялись в процессе работы инструмента. При исправлении ошибок топологии, в предыдущих версиях этих инструментов изменялся кластерный допуск для каждого объекта, и эти значения хранились в полях MinSimpTol и MaxSimpTol. В текущей версии значения в этих полях остаются неизменными и соответствует допуску, указанному в параметре Допуск упрощения. Не забудьте изменить существующие модели или скрипты, если они ссылаются на эти поля.

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

Анализ и усовершенствование результатов

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

Топологические проблемы объектов входного класса – объекты, которые перекрывают другие объекты без точек пересечения – будут отмечены в атрибутивном поле входного класса объектов. Это поле будет называться SimPgnFlag, если используется инструмент Упростить полигон и SimLinFlag если инструмент – Упростить линию. Значение 1 в этих полях указывает на то, что в объектах входного класса были ошибки топологии.

Так же поле ID, соответствующее ID объекта входного класса также добавляется к выходному классу объектов. Это поле будет называться InPoly_FID , если используется инструмент Упростить полигон или InLine_FID, если инструмент Упростить линию. Дополнительно, поля MinSimpTol и MaxSimpTol, в которых сохраняется используемое значение допуска, добавляются к выходному классу.

Результирующий выходной класс точечных объектов, представляющий или конечные точки линий, упрощенных до нулевой длины (если инструмент Упростить линию), или полигоны, упрощенные до полигонов нулевой площади, или площадь которых меньше, чем минимальная площадь, заданная в параметре Минимальная площадь, если инструмент Упростить полигон, или оба параметра в случае инструмента Упростить общие ребра. Полигон, упрощенный до нулевой геометрии или полигон, площадь которого меньше минимальной, заданной в параметре Минимальная площадь.

Работа с большими массивами данных

Поддержка топологии для этих инструментов подразумевает, что несколько объектов обрабатываются одновременно. Если вы работаете с большими наборами данных, вы можете превысить ограничения использования оперативной памяти. В этом случае возможна обработка входных данных по частям. Вы можете сделать это, определив соответствующий полигональный класс объектов с помощью параметра среды Картографические части, который будет покрывать входные данные и делить их на фрагменты. Фрагменты данных, попавшие в границы разделения, будут последовательно обрабатываться для упрощения, но выходной класс объектов будет бесшовным и согласованными на границах разделов. Более подробно см. Генерализация больших наборов данных путем разделения на части.

Справочная информация

Douglas, David H., and Thomas K. Peucker. 1973. "Algorithms for the Reduction of the Number of Points Required to Represent a Digitised Line or its Caricature." The Canadian Cartographer, 10(2): 112–122.

Wang, Zeshen, and Jean-Claude Müller. 1998. "Line Generalization Based on Analysis of Shape Characteristics." Cartography and Geographic Information Systems 25(1): 3–15.

Zhou, Sheng, and, Christopher B. Jones. 2005. "Shape-Aware Line Generalisation with Weighted Effective Area." In Developments in Spatial Handling: 11th International Symposium on Spatial Handling, edited by Peter F. Fisher, 369–80.

Visvalingam, M., and, J. D. Whyatt. 1992. "Line Generalisation by Repeated Elimination of the Smallest Area," Cartographic Information Systems Research Group (CISRG) Discussion Paper 10, The University of Hull.

Связанные разделы