摘要
对线中的尖角进行平滑处理以使制图更加美观或改善制图质量。
插图
用法
有两种平滑方法可供选择:
- 指数核的多项式近似 (PAEK) 方法(Python 中的 PAEK)可根据平滑容差对线进行平滑处理。每条线经过平滑处理后,其折点都可能比之前多。平滑容差参数可控制计算新折点时用到的“移动”路径的长度。长度越短,保留的细节越多,处理时间也越长。
- 贝塞尔插值方法(Python 中的 BEZIER_INTERPOLATION)对线进行平滑处理时无需使用容差,而是通过创建贝塞尔曲线来匹配输入线。如果输出为 shapefile,则将创建近似的贝塞尔曲线,因为真正的贝塞尔曲线无法存储在 shapefile 中。
平滑处理可能带来拓扑错误,如线的交叉。使用处理拓扑错误参数中的标记错误选项(Python 中为 FLAG_ERRORS)可识别这些错误。将添加两个字段 InLine_FID 和 SmoLnFlag 以包含输入要素 ID 和拓扑错误。SmoLnFlag 字段中的值为 1 表明存在拓扑错误;0(零)表明不存在错误。InLineFID 字段将输出线连接到其输入线。标记错误选项不能在编辑会话中使用。
在平滑处理的过程中,可能创建无效(自相交)的几何,并将对无效的几何进行修复,但不会将其改进。例如,如果一条线自交叉,则这条线将成为多部分线,但显示效果依然是自交叉。
语法
SmoothLine_cartography (in_features, out_feature_class, algorithm, tolerance, {endpoint_option}, {error_option})
参数 | 说明 | 数据类型 |
in_features | 要平滑处理的线要素。 | Feature Layer |
out_feature_class | 要创建的输出要素类。 | Feature Class |
algorithm | 指定平滑算法。
| String |
tolerance | 设置 PAEK 算法使用的容差。必须指定一个容差,且值必须大于零。可以选择首选单位;默认为要素单位。使用 BEZIER_INTERPOLATION 平滑算法时,必须输入 0 作为占位符。 | Linear Unit |
endpoint_option (可选) | 指定是否保留闭合线的端点。该选项仅适用于 PAEK 算法。
| Boolean |
error_option (可选) | 指定如何处理拓扑错误(可能是在该过程中引发的,如线的交叉)。
| String |
代码示例
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"
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")
# Smooth coastlines.
CA.SmoothLine(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "", "FLAG_ERRORS")
环境
许可信息
- ArcGIS Desktop Basic: 否
- ArcGIS Desktop Standard: 是
- ArcGIS Desktop Advanced: 是