Краткая информация
Упрощает полигоны посредством удаления лишних изгибов с сохранением основной формы.
Рисунок
Использование
Используется два метода упрощения:
- Метод Сохранение критических точек (Retain critical points) (POINT_REMOVE в Python) – более быстрый из двух методов. Он заключается в удалении избыточных вершин. Используйте этот метод для сжатия и грубого упрощения хорошо известных данных. Угловатость получившегося полигона после применения этого инструмента значительно возрастет, в связи с чем полигон может выглядеть не слишком реалистично.
- Метод Сохранение критических изгибов (Retain critical bends) (BEND_SIMPLIFY в Python) является более медленным, зато обычно позволяет получить более качественный результат, в том числе с эстетической точки зрения. Метод заключается в удалении незначительных изгибов линий полигонов. Используйте этот метод для более точного упрощения.
Параметр Минимальная площадь (Minimum Area) относится только к упрощенным полигонам. Все полигоны, площадь которых после процесса упрощения меньше этого показателя, будут удалены из выходного класса пространственных объектов. Для группы смежных полигонов, имеющих общие стороны, параметр относится к общей площади группы.
Инструмент создает два выходных класса объектов:класс полигональных пространственных объектов, в котором сохраняются упрощенные полигоны, и класс точечных пространственных объектов для сохранения в нем точек, соответствующих полигонам, которые в результате обработки стали «нулевыми». Имя и местоположение выходного класса точечных объектов вычисляются автоматически при добавлении суффикса _Pnt. Выходной класс полигональных объектов будет содержать все поля входного слоя, а выходной точечный слой не будет содержать никаких полей из числа входных.
Части составных полигонов упрощаются отдельно.
Предусмотрено три варианта обработки топологических ошибок выходных данных:
- Не выполнять проверку на топологические ошибки (Do not check for topological errors) (NO_CHECK в Python) : полученный в процессе упрощения результат не будет проверяться на топологические ошибки. В этом случае обработка происходит быстрее. Используйте этот вариант обработки, когда вы уверены в топологической точности ваших данных.
- Отметить ошибки (Flag errors) (FLAG_ERRORS в Python): полученный в процессе упрощения результат будет проверен на топологические ошибки, объекты с топологическими ошибками будут помечены. Используйте эту опцию в том случае, когда вам необходимо только найти топологические ошибки, но не обязательно их исправлять. Эта опция не поддерживается во время сессии редактирования.
- Выходные полигональные данные будут иметь два новых поля для отображения, имеют ли объекты топологические ошибки. Параметры InPoly_FID и SimPlyFlag содержат, соответственно, идентификаторы входных объектов и топологические ошибки.
- Поле InPoly_FID связывает упрощенные точки со входными полигонами.
- Значение в поле SimPlyFlag, равное 1, означает наличие ошибки, значение 0 означает, что ошибки не обнаружены.
- Метки останутся после исправления топологических ошибок. Для изучения объектов, имеющих топологические ошибки, используйте поле SimPlyFlag.
- Исправлять ошибки топологии (Resolve topological errors) (RESOLVE_ERRORS d Python): исправляет топологические ошибки, возникшие в результате процесса упрощения. Увеличится время обработки.Опция недоступна во время сессии редактирования.
- Указанный допуск может оказаться подходящим для большинства полигонов, но все же не для всех: Если во время первой итерации процесса упрощения полигонов инструментом обнаружена ошибка топологии, соответствующие сегменты линий полигона (не весь полигон) будут заново размещены, а допуск – уменьшен.
- Уменьшенный показатель допуска в этом случае составит 50% от исходного. Новый допуск будет использоваться для того, чтобы заново упростить эти сегменты. Процедура будет повторяться раз за разом до тех пор, пока не останется ни одной ошибки топологии объектов.
- Количество полигонов в выходном классе объектов будет соответствовать количеству полигонов входного класса, при этом появятся два новых поля MaxSimpTol и MinSimpTol, в которых будут храниться максимальные и минимальные значения допусков, которые использовались в процессе упрощения каждого полигона. Если ошибки топологии не обнаружены, значения MaxSimpTol и MinSimpTol будут равны указанному значению допуска упрощения объектов.
- Если указано относительно большое значение параметра Допуск упрощения (Simplification Tolerance), маленькие полигоны, расположенные вблизи больших, могут оказаться внутри больших. Такая ошибка пространственного отношения не будет определена программой.
- Для опций NO_CHECK и FLAG_ERRORS в процессе упрощения может быть создана самопересекающаяся геометрия, которая будет автоматически исправлена. Например, если полигон имеет самопересечения, он будет таким образом превращен в составной полигон, что ни одна его часть не будет пересекать другую.Выглядеть при этом такой полигон по-прежнему будет как самопересекающийся.
Точечные объекты будут созданы в случаях, когда выбраны опции NO_CHECK или FLAG_ERRORS, а также если отмечен параметр Сохранить линии нулевой длины (Keep collapsed points). Если входной полигональный объект является составным, и одна из частей такого полигона превращается в объект нулевой длины, точка, отображающая эту часть полигона, также сохраняется в выходном точечном слое.
Синтаксис
SimplifyPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option})
Параметр | Объяснение | Тип данных |
in_features | Полигональные объекты, которые необходимо упростить. | Feature Layer |
out_feature_class | Создаваемый выходной класс полигональных пространственных объектов. | Feature Class |
algorithm | Определяет используемый алгоритм упрощения полигонов.
| String |
tolerance | Допуск, определяющий степень упрощения. Должен быть указан допуск, значение которого больше нуля. Вы можете выбрать предпочитаемые единицы измерения; единицами измерения по умолчанию являются единицы измерения объекта.
| Linear unit |
minimum_area (дополнительно) | Определяет минимальную площадь полигонов, которые будут сохранены. Значение по умолчанию равно нулю; в этом случае сохраняются все полигоны. Вы можете выбрать предпочитаемые единицы измерения; единицами измерения по умолчанию являются единицы измерения объекта. | Areal unit |
error_option (дополнительно) | Определяет способ обработки топологических ошибок, которые могут появиться в процессе обработки (в том числе пересечения и перекрытия линий, а также образовавшиеся линии нулевой длины).
| String |
collapsed_point_option (дополнительно) | Определяет, необходимо ли сохранять найденные в процессе обработки линии нулевой длины в качестве точечных объектов. Опция применяется в случае, когда выбран параметр NO_CHECK или указаны два параметра – FLAG_ERRORS и CHECK – одновременно.
| Boolean |
Пример кода
Пример работы инструмента SimplifyPolygon (Окно Python)
Представленный скрипт Окна Python демонстрирует порядок непосредственного использования инструмента.
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)
SimplifyPolygon, пример 2 (автономный скрипт)
Этот автономный скрипт демонстрирует пример использования инструмента SimplifyPolygon.
# Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inLakeFeatures = "lakes"
eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed"
# Eliminate small islands in lake polygons.
DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, "CONTAINED_ONLY")
# Simplify lake polygons.
CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 200, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")
Параметры среды
- Текущая рабочая область (Current Workspace)
- Выходное значение Z по умолчанию (Default Output Z Value)
- Выходной домен M (Output M Domain)
- Выходной XY домен (Output XY Domain)
- Выходная система координат (Output Coordinate System)
- Экстент (Extent)
- Выходные данные содержат значения M (Output has M values)
- Выходные данные содержат Z значения (Output has Z values)
- Временная рабочая область (Scratch Workspace)
- Допуск XY (XY Tolerance)
Информация о лицензировании
- ArcGIS for Desktop Basic: Нет
- ArcGIS for Desktop Standard: Да
- ArcGIS for Desktop Advanced: Да