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

Сводка

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

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

Иллюстрация

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

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

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

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

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

    Внимание:

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

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

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

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

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

Синтаксис

arcpy.cartography.SmoothLine(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_CLOSED_ENDPOINTСохраняет конечную точку замкнутой линии. Используется по умолчанию.
  • NO_FIXEDСглаживает замкнутую линию в районе конечной точки.
Boolean
error_option
(Дополнительный)

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

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

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

Feature Layer

Пример кода

SmoothLine, пример (Окно Python)

Пример скрипта Python для использования инструмента SmoothLine в режиме прямого запуска.

import arcpy
import arcpy.cartography as CA
arcpy.env.workspace = "C:/data"
CA.SmoothLine("contours.shp", "C:/output/output.gdb/smoothed_contours", "PAEK", 100)
SmoothLine, пример 2 (автономный скрипт)

В следующем автономном скрипте показано, как использовать инструмент SmoothLine.

# Name: SmoothLine_Example2.py
# Description: Simplify and then Smooth coastlines
# Import system modules
import arcpy
import arcpy.cartography as CA
# Set environment settings
arcpy.env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inCoastlineFeatures = "coastlines"
barriers = "C:/data/Portland.gdb/Structures/buildings"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/coastlines_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/coastlines_smoothed"
# Simplify coastlines.
CA.SimplifyLine(inCoastlineFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 
                "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK", barriers)
# Smooth coastlines.
CA.SmoothLine(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "", 
              "FLAG_ERRORS", barriers)

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

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

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