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

Сводка

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

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

Иллюстрация

Иллюстрация сглаживания полигонов

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

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

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

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

    Внимание:

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

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

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

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

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

Синтаксис

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

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

Feature Layer
out_feature_class

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

Feature Class
algorithm

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

  • PAEKPAEK – аббревиатура, означающая полиномиальную аппроксимацию с использованием экспоненциального ядра. Вычисляет сглаженный полигон, линии границ которого не будут проходить через вершины исходного полигона. Используется по умолчанию.
  • 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: Да

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