平滑线 (制图)

摘要

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

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

插图

平滑线工具算法选项示例
可以使用 PAEK 或 Bezier 插值方法对线中的尖角进行平滑处理。

使用情况

  • 提供了两种平滑方法:

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

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

    警告:

    处理拓扑错误参数设置为不检查拓扑错误(Python 中的 error_option = "NO_CHECK")或标记拓扑错误(Python 中的 error_option = "FLAG_ERRORS")时,将忽略“制图分区”环境设置。

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

  • 输出线要素类具有正确的拓扑。 输入数据中的任何拓扑错误都会在输出线要素类中标记出来。 输出要素类包括含有相应输入要素 ID 和输入拓扑错误的两个附加字段:InLine_FIDSmoLnFlagSmoLnFlag 值为 1 表示存在拓扑错误;值为 0(零)表示不存在错误。

    旧版本:

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

参数

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

要平滑的线要素。

Feature Layer
输出要素类

要创建的输出要素类。

Feature Class
平滑算法

指定平滑算法。

  • 指数核的多项式近似 (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此为 Polynomial Approximation with Exponential Kernel(指数核的多项式近似)的首字母缩略词。 该方法可以计算不会经过输入线折点的平滑线。 这是默认设置。
  • 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: 是

相关主题