Краткая информация
Улучшает визуальное и картографическое качество линий границ полигонов посредством сглаживания их углов.
Иллюстрация
Использование
Можно выбрать один из двух методов сглаживания:
- Метод PAEK (Полиномиальная аппроксимация с использованием экспоненциального ядра) сглаживает полигоны на основе допуска сглаживания. Каждый сглаженный полигон может иметь большее количество вершин, чем исходный. Параметр Допуск сглаживания определяет длину сдвига кривой и используется при вычислении координат новых вершин. Чем меньше длина, тем больше деталей сохранится и тем больше времени займет обработка.
- Метод Интерполяции Безье (BEZIER_INTERPOLATION в Python) сглаживает полигоны без использования допуска посредством создания кривых Безье, совпадающих с входными линиями. Если выходными данными является шейп-файл, кривые Безье будут приблизительно аппроксимированы, т.к. шейп-файл не поддерживает хранение подобных данных.
Сглаживание может вызвать топологические ошибки, например, пересечения линий границ полигонов. Для обнаружения этих ошибок используйте опцию Пометить ошибки (FLAG_ERRORS в Python) параметра Исправлять топологические ошибки. Будут созданы два поля – InPoly_FID and SmoPlyFlag, содержащие, соответственно, идентификаторы входных объектов и ошибки топологии. Значение в поле SmoPlyFlag, равное 1, означает наличие топологической ошибки; нулевое значение соответствует корректной топологии. Поле InPolyFID связывает выходные полигоны со входными. Опция Пометить ошибки не может использоваться во время сеанса редактирования.
В процессе сглаживания может быть создана некорректная геометрия (самопересекающаяся), которая будет только исправлена, но не улучшена. К примеру, самопересекающийся полигон будет преобразован в составной полигон, но будет по-прежнему выглядеть как самопересекающийся.
Синтаксис
SmoothPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option})
Параметр | Объяснение | Тип данных |
in_features | Полигональные объекты, которые необходимо сгладить. | Feature Layer |
out_feature_class | Создаваемый выходной класс полигональных пространственных объектов. | Feature Class |
algorithm | Определяет алгоритм сглаживания.
| String |
tolerance | Устанавливает допуск, используемый алгоритмом PAEK. Должен быть указан допуск, значение которого больше нуля. Вы можете выбрать единицы измерения; по умолчанию используются единицы измерения объекта. Если используется алгоритм сглаживания BEZIER_INTERPOLATION, необходимо ввести 0 в качестве заполнителя. | Linear Unit |
endpoint_option (Дополнительный) | Определяет, следует ли сохранять концевые точки кольцевых полигонов. Эта опция доступна только для алгоритма PAEK.
| Boolean |
error_option (Дополнительный) | Определяет способ обработки топологических ошибок, которые могут появиться в процессе обработки (например, пересечения и наложения линий).
| String |
Пример кода
SmoothPolygon, пример (Окно Python)
Следующий скрипт окна Python показывает, как использовать инструмент SmoothPolygon в режиме прямого запуска.
import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SmoothPolygon("soils.shp", "C:/output/output.gdb/smoothed_soils", "PAEK", 100)
SmoothPolygon, пример 2 (автономный скрипт)
В следующем автономном скрипте показано, как использовать инструмент SmoothPolygon.
# Name: SmoothPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Import system modules
import arcpy
import arcpy.cartography as CA
import arcpy.management as DM
# Set environment settings
arcpy.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")
Параметры среды
Информация о лицензиях
- ArcGIS Desktop Basic: Нет
- ArcGIS Desktop Standard: Да
- ArcGIS Desktop Advanced: Да