平滑线 (制图)

摘要

平滑线中的尖角以改善美学或制图质量。

了解有关“平滑线”和“平滑面”工具的工作原理的详细信息

插图

“平滑线”工具图示
可以使用 PAEK 或 Bezier 插值方法对线中的尖角进行平滑处理。

使用情况

  • 平滑算法参数具有以下选项:

    • 指数核的多项式近似 (PAEK) - 根据平滑容差对线进行平滑处理。 每条线经过平滑处理后,其折点都可能比之前多。 平滑容差参数可控制计算新折点时用到的“移动”路径的长度。 长度越短,保留的细节越多,处理时间也越长。
    • 贝塞尔插值方法 - 对线进行平滑处理时无需使用容差,而是通过创建近似的贝塞尔曲线来匹配输入线。
  • 可以使用输入障碍图层参数来标识不得被平滑线越过的要素。 障碍要素可以是点、线或面。

  • 处理大型数据集可能会超出内存限制。 在这类情况下,考虑通过在制图分区环境中确定一个相关的面要素类来通过分区处理输入数据。 将按顺序处理分区边界定义的数据部分。 生成的要素类无缝,而且在分区边界一致。 有关详细信息,请参阅使用分区概化大型数据集

    警告:

    处理拓扑错误参数设置为不检查拓扑错误标记拓扑错误选项时,将忽略“制图分区”环境。

  • 即使未选中传输字段属性域、子类型和属性规则环境,属性域和子类型也会被复制到输出。

  • 输出线要素类将具有正确的拓扑。 输入数据中的任何拓扑错误将会在输出线要素类中标记出来。 输出要素类包括以下附加字段:

    • InLine_FID- 输入要素 ID。
    • SmoLnFlag- 输入的拓扑错误。 值为 1 指示存在拓扑错误;值为 0 指示不存在任何错误。

    旧版本:

    在此工具的 ArcGIS Pro 2.2 版本之前,保留环的端点参数曾被用来指定是否保留所生成的孤立面环的端点。 为了脚本和模型的兼容性,工具语法中仍然包含此参数,但现在其已被忽略且已在工具对话框中隐藏。

参数

标注说明数据类型
输入要素

将进行平滑的线要素。

Feature Layer
输出要素类

将创建的输出要素类。

Feature Class
平滑算法

指定将使用的平滑算法。

  • 指数核的多项式近似 (PAEK)该方法可以计算不会经过输入线折点的平滑线。 PAEK 是指数核的多项式近似 (Polynomial Approximation with Exponential Kernel) 的首字母缩写。 这是默认设置。
  • 贝塞尔插值拟合折点间的贝塞尔曲线。 生成的线将经过输入线的折点。 该算法不需要容差。 在输出中,将创建近似的贝塞尔曲线。
String
平滑容差

平滑算法参数的指数核的多项式近似 (PAEK) 选项将使用的平滑容差。 必须指定一个容差,且值必须大于零。 可以选择首选单位;默认为要素单位。 当使用平滑算法参数的贝塞尔插值选项时,此参数将不可用。

Linear Unit
保留闭合线的端点
(可选)

这是一个不再使用的旧参数。 之前曾将其用于指定是否保留闭合线的端点。 为了脚本和模型的兼容性,工具语法中仍然包含此参数,但其已从工具对话框中隐藏。

用于指定是否保留闭合线的端点。 此选项仅可用于 PAEK 算法。

  • 选中 - 将保留闭合线的端点。 这是默认设置。
  • 未选中 - 不会保留闭合线的端点,其将被平滑处理。
Boolean
处理拓扑错误
(可选)

指定如何处理拓扑错误(可能是在该过程中引发的,如线的交叉或重叠)。

  • 不检查拓扑错误将不会标识拓扑错误。 这是默认设置。
  • 标记拓扑错误标记拓扑错误(如果发现拓扑错误)。
  • 解决拓扑错误解决拓扑错误(如果发现拓扑错误)。
String
输入障碍图层
(可选)

包含将充当平滑障碍的要素的输入。 生成的平滑线不会接触或越过障碍要素。 例如,在平滑等值线时,将点高度要素输入作为障碍可确保平滑等值线不会越过这些点进行平滑。 输出不会违反测量点高度所述的高程。

Feature Layer

arcpy.cartography.SmoothLine(in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option}, {in_barriers})
名称说明数据类型
in_features

将进行平滑的线要素。

Feature Layer
out_feature_class

将创建的输出要素类。

Feature Class
algorithm

指定将使用的平滑算法。

  • PAEK该方法可以计算不会经过输入线折点的平滑线。 PAEK 是指数核的多项式近似 (Polynomial Approximation with Exponential Kernel) 的首字母缩写。 这是默认设置。
  • BEZIER_INTERPOLATION拟合折点间的贝塞尔曲线。 生成的线将经过输入线的折点。 该算法不需要容差。 在输出中,将创建近似的贝塞尔曲线。
String
tolerance

algorithm 参数的 PAEK 选项将使用的平滑容差。 必须指定一个容差,且值必须大于零。 可以选择首选单位;默认为要素单位。 当使用 algorithm 参数的 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 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 SmoothLine 函数。

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.cartography.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

# 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.
arcpy.cartography.SimplifyLine(inCoastlineFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 
                "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK", barriers)

# Smooth coastlines.
arcpy.cartography.SmoothLine(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "", 
              "FLAG_ERRORS", barriers)

许可信息

  • Basic: 否
  • Standard: 是
  • Advanced: 是

相关主题