Сгладить полигоны (Картография)

Краткая информация

Улучшает визуальное и картографическое качество линий границ полигонов посредством сглаживания их углов.

Более подробно о работе инструментов Сгладить линию и Сгладить полигоны.

Иллюстрация

Примеры опций алгоритма Сгладить полигон
Острые углы полигонов могут быть сглажены с помощью метода интерполяции PAEK или параметрической кривой.

Использование

  • Можно выбрать один из двух доступных методов сглаживания:

    • Метод Полиномиальная аппроксимация с использованием экспоненциального ядра (PAEK) (PAEK в Python) сглаживает полигоны на основе допуска сглаживания. Каждый сглаженный полигон может иметь большее количество вершин, чем исходный. Параметр Допуск сглаживания определяет длину сдвига кривой и используется при вычислении координат новых вершин. Чем меньше длина, тем больше деталей сохранится и тем больше времени займет обработка.
    • Метод Интерполяции Безье (BEZIER_INTERPOLATION в Python) сглаживает полигоны без использования допуска путем создания аппроксимированных параметрических кривых, совпадающих с входными полигонами.
  • Используйте параметр Входные барьерные слои для определения пространственных объектов, которые не должны пересекаться сглаженными полигонами. Объектами-барьерами могут быть полигоны, линии или точки.

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

    Внимание:

    Параметр среды Картографические разделы игнорируется, если для параметра Управление топологическими ошибками задано значение Не выполнять проверку на топологические ошибки (error_option = "NO_CHECK" в Python) или Пометить топологические ошибки (error_option = "FLAG_ERRORS" в Python).

  • Домены и подтипы копируются в выходные данные, даже если параметр среды Перенесение доменов, подтипов и правил атрибутов не отмечен.

  • Выходными данными будет топологически корректный полигональный класс пространственных объектов. Все топологические ошибки входных данных будут помечены в выходном полигональном классе пространственных объектов. Выходной класс пространственных объектов содержит два дополнительных поля: InPoly_FID и SmoPgnFlag, в которых содержатся соответственно идентификаторы входных пространственных объектов и топологические ошибки входных данных. Значение SmoPgnFlag, равное 1, означает наличие топологической ошибки; 0 (ноль) означает, что ошибок нет.

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

    До версии ArcGIS Pro 2.2 этого инструмента, параметр Сохранить конечную точку для колец (endpoint_option в Python) использовался для сохранения конечной точки полученного изолированного полигонального кольца. Этот параметр пока присутствует в синтаксисе инструмента для совместимости в скриптах и моделях, но в диалоговом окне инструмента он игнорируется и скрыт.

Параметры

ПодписьОписаниеТип данных
Входные объекты

Полигональные объекты, которые необходимо сгладить.

Feature Layer
Выходной класс пространственных объектов

Создаваемый выходной класс полигональных пространственных объектов.

Feature Class
Алгоритм сглаживания

Определяет алгоритм сглаживания.

  • Полиномиальная аппроксимация с использованием экспоненциального ядра (PAEK)Это аббревиатура, означающая полиномиальную аппроксимацию с использованием экспоненциального ядра. Вычисляет сглаженный полигон, линии границ которого не будут проходить через вершины исходного полигона. Это значение по умолчанию
  • Интерполяция БезьеСтроит между вершинами параметрические кривые (кривые Безье). Полученные полигоны проходят через вершины входных полигонов. Этот алгоритм не требует указания допуска. Кривые Безье в выходных данных будут аппроксимированы.
String
Допуск сглаживания

Допуск, который используется алгоритмом Полиномиальная аппроксимация с экспоненциальным ядром (PAEK). Должен быть указан допуск, значение которого больше нуля. Вы можете выбрать предпочитаемые единицы измерения; единицами измерения по умолчанию являются единицы измерения объекта. Этот параметр недоступен, если используется алгоритм Интерполяция Безье.

Linear Unit
Сохранить конечную точку для колец
(Дополнительный)

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

Определяет, будут ли сохранены конечные точки отдельных полигональных колец. Эта опция доступна только для алгоритма PAEK.

  • Отмечено - конечные точки замкнутого кольцевого полигона будут сохранены. Это значение по умолчанию
  • Не отмечено - конечные точки замкнутого кольцевого полигона не будут сохранены, они будут сглажены.
Boolean
Управление топологическими ошибками
(Дополнительный)

Определяет способ обработки топологических ошибок, которые могут появиться в процессе обработки (например, пересечения и наложения линий).

  • Не выполнять проверку на топологические ошибкиОшибки топологии не идентифицируются Это значение по умолчанию
  • Проверить и пометить топологические ошибкиЕсли топологические ошибки находятся, они будут отмечены.
  • Исправлять ошибки топологииЕсли топологические ошибки находятся, они будут исправлены.
String
Входные слои барьеров
(Дополнительный)

Входные данные, содержащие пространственные объекты, которые будут выполнять роль барьеров для сглаживания. Получившиеся сглаженные полигоны не будут касаться или пересекать объекты-барьеры.

Feature Layer

arcpy.cartography.SmoothPolygon(in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option}, {in_barriers})
ИмяОписаниеТип данных
in_features

Полигональные объекты, которые необходимо сгладить.

Feature Layer
out_feature_class

Создаваемый выходной класс полигональных пространственных объектов.

Feature Class
algorithm

Определяет алгоритм сглаживания.

  • PAEKЭто аббревиатура, означающая полиномиальную аппроксимацию с использованием экспоненциального ядра. Вычисляет сглаженный полигон, линии границ которого не будут проходить через вершины исходного полигона. Это значение по умолчанию
  • BEZIER_INTERPOLATIONСтроит между вершинами параметрические кривые (кривые Безье). Полученные полигоны проходят через вершины входных полигонов. Этот алгоритм не требует указания допуска. Кривые Безье в выходных данных будут аппроксимированы.
String
tolerance

Устанавливает допуск, используемый алгоритмом PAEK. Должен быть указан допуск, значение которого больше нуля. Вы можете выбрать предпочитаемые единицы измерения; единицами измерения по умолчанию являются единицы измерения объекта. Если используется алгоритм сглаживания BEZIER_INTERPOLATION, необходимо ввести 0 в качестве заполнителя.

Linear Unit
endpoint_option
(Дополнительный)

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

Определяет, будут ли сохранены конечные точки отдельных полигональных колец. Эта опция доступна только для алгоритма PAEK.

  • FIXED_ENDPOINTКонечные точки замкнутого кольцевого полигона будут сохранены. Это значение по умолчанию
  • NO_FIXEDКонечные точки замкнутого кольцевого полигона не будут сохранены, они будут сглажены.
Boolean
error_option
(Дополнительный)

Определяет способ обработки топологических ошибок, которые могут появиться в процессе обработки (например, пересечения и наложения линий).

  • NO_CHECKОшибки топологии не идентифицируются Это значение по умолчанию
  • FLAG_ERRORSЕсли топологические ошибки находятся, они будут отмечены.
  • RESOLVE_ERRORSЕсли топологические ошибки находятся, они будут исправлены.
String
in_barriers
[in_barriers,...]
(Дополнительный)

Входные данные, содержащие пространственные объекты, которые будут выполнять роль барьеров для сглаживания. Получившиеся сглаженные полигоны не будут касаться или пересекать объекты-барьеры.

Feature Layer

Пример кода

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"
barriers = "C:/data/Portland.gdb/Structures/buildings"
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", barriers)

# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "", 
                 "FLAG_ERRORS", barriers)

Информация о лицензиях

  • Basic: Нет
  • Standard: Да
  • Advanced: Да

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