Упростить полигоны (Simplify Polygon) (Картография)
Краткая информация
Упрощает полигоны посредством удаления лишних изгибов с сохранением основной формы.
Рисунок
Использование
Используется два метода упрощения:
- Метод POINT_REMOVE - более быстрый из двух методов. Он заключается в удалении избыточных вершин. Используйте этот метод для сжатия и грубого их упрощения хорошо известных данных. Угловатость получившегося полигона после применения этого инструмента значительно возрастет, в связи с чем полигон может выглядеть не слишком реалистично.
- Метод BEND_SIMPLIFY является более медленным, зато обычно позволяет получить более качественный результат. Метод заключается в удалении незначительных изгибов линий полигонов. Используйте этот метод для более точного упрощения.
-
Параметр Минимальная площадь (Minimum Area) относится только к упрощенным полигонам. Все полигоны, площадь которых после процесса упрощения меньше этого показателя, будут удалены из выходного класса пространственных объектов. Для группы смежных полигонов, имеющих общие стороны, параметр относится к общей площади группы.
-
Инструмент создает два выходных класса объектов:класс полигональных пространственных объектов, в котором сохраняются упрощенные полигоны, и класс точечных пространственных объектов для сохранения в нем точек, соответствующих полигонам, которые в результате обработки стали «нулевыми». Имя и местоположение выходного класса точечных объектов вычисляются автоматически при добавлении суффикса _Pnt. Выходной класс полигональных объектов будет содержать все поля входного слоя, а выходной точечный слой не будет содержать никаких полей из числа входных.
Части составных полигонов упрощаются отдельно.
Предусмотрено три варианта обработки топологических ошибок выходных данных:
- NO_CHECK: возникшие в результате процесса упрощения ошибки топологии не будут отмечаться. В этом случае обработка происходит быстрее. Используйте этот вариант обработки, когда вы уверены в топологической точности ваших данных.
- FLAG_ERRORS: возникшие в результате процесса упрощения ошибки топологии будут помечены. Используйте эту опцию в том случае, когда вам необходимо только найти топологические ошибки, но не обязательно их исправлять. Эта опция не поддерживается во время сессии редактирования.
- Выходные полигональные данные будут иметь два новых поля для отображения, имеют ли объекты топологические ошибки. Параметры InPoly_FID и SimPlyFlag содержат, соответственно, идентификаторы входных объектов и топологические ошибки.
- Поле InPoly_FID связывает упрощенные точки со входными полигонами.
- Значение в поле SimPlyFlag, равное 1, означает наличие ошибки, значение 0 означает, что ошибки не обнаружены.
- Метки останутся после исправления топологических ошибок. Для изучения объектов, имеющих топологические ошибки, используйте поле SimPlyFlag.
- RESOLVE_ERRORS: топологические ошибки, возникшие в результате процесса упрощения, исправляются. Увеличится время обработки.Опция недоступна во время сессии редактирования.
- Указанный допуск может оказаться подходящим для большинства полигонов, но все же не для всех: Если во время первой итерации процесса упрощения полигонов инструментом обнаружена ошибка топологии, соответствующие сегменты линий полигона (не весь полигон) будут заново размещены, а допуск - уменьшен.
- Уменьшенный показатель допуска в этом случае составит 50% от исходного. Новый допуск будет использоваться для того, чтобы заново упростить эти сегменты. Процедура будет повторяться раз за разом до тех пор, пока не останется ни одной ошибки топологии объектов.
- Количество полигонов в выходном классе объектов будет соответствовать количеству полигонов входного класса, при этом появятся два новых поля MaxSimpTol и MinSimpTol, в которых будут храниться максимальные и минимальные значения допусков, которые использовались в процессе упрощения каждого полигона. Если ошибки топологии не обнаружены, значения MaxSimpTol и MinSimpTol будут равны указанному значению допуска упрощения объектов.
- Если указано относительно большое значение параметра Допуск упрощения (Simplification Tolerance), маленькие полигоны, расположенные вблизи больших, могут оказаться внутри больших. Такая ошибка пространственного отношения не будет определена программой.
- Для опций NO_CHECK и FLAG_ERRORS в процессе упрощения может быть создана самопересекающаяся геометрия, которая будет автоматически исправлена. Например, если полигон имеет самопересечения, он будет таким образом превращен в составной полигон, что ни одна его часть не будет пересекать другую.Выглядеть при этом такой полигон по-прежнему будет как самопересекающийся.
Точечные объекты будут созданы в случаях, когда выбраны опции NO_CHECK или FLAG_ERRORS, а также если отмечен параметр Сохранить линии нулевой длины (Keep collapsed points). Если входной полигональный объект является составным, и одна из частей такого полигона превращается в объект нулевой длины, точка, отображающая эту часть полигона, также сохраняется в выходном точечном слое.
Синтаксис
Параметр | Объяснение | Тип данных |
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 |
Пример кода
Представленный скрипт Окна 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.
# 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")