简化共享边 (制图)

描述

可简化输入要素的边,对于与其他要素共享的边,可同时保持与这些边的拓扑关系。

插图

简化共享边工具示例
将对所有边上的输入 1 和输入 2 进行简化。仅沿与输入 1 和输入 2 共享的边对共享边面和共享边线进行简化。

使用方法

  • 此工具为不同目的采用不同的简化算法。要了解有关这些算法的详细信息,请参阅简化线和简化面的工作原理

    • 保留关键点(道格拉斯-普克)算法(Python 中的 algorithm='POINT_REMOVE')的工作原理是识别并移除相对多余的折点来简化数据并以较小的比例显示。这是此工具中最快的简化算法。这种算法通常用于数据压缩或粗糙的简化。随着容差的增大,生成的线中有棱角的部分将显著增加。这种算法基于道格拉斯-普克算法:Douglas, David and Peucker, Thomas, "Algorithms for the reduction of the number of points required to represent a digitized line or its caricature," The Canadian Cartographer. 10(2), 112–22 (1973)。
    • 保留关键折弯 (Wang-Müller) 算法(Python 中的 algorithm='BEND_SIMPLIFY')的工作原理是识别并消除相对不太重要的折弯来简化数据并以较小的比例显示。这通常比保留关键点(道格拉斯-普克)算法更接近输入几何,但可能需要更多的处理时间。这种算法基于 Wang, Zeshen and Müller, Jean-Claude, "Line Generalization Based on Analysis of Shape Characteristics," Cartography and Geographic Information Systems 25(1), 3–15 (1998) 中定义的算法。
    • 保留加权有效面积 (Zhou-Jones) 算法(Python 中的 algorithm='WEIGHTED_AREA')的工作原理是首先识别每个折点有效区域的三角形。随后采用一系列度量对这些三角形进行加权以对比每个面积的平面度、偏度和凸度。通过加权后的面积指导移除相应折点以简化线,同时尽可能多地保留特性。这种算法基于 Zhou, Sheng and Jones, Christopher B., "Shape-Aware Line Generalisation with Weighted Effective Area," in Fisher, Peter F. (Ed.), Developments in Spatial Handling: 11th International Symposium on Spatial Handling, 369–80 (2005) 中定义的算法。
    • 保留有效面积 (Visvalingam-Whyatt) 算法(Python 中的 algorithm='EFFECTIVE_AREA')可通过识别每个折点的有效三角形面积来指导移除折点以简化线,同时尽可能多地保留特性。这种算法基于 Visvalingam, M. and Whyatt, J. D., "Line Generalisation by Repeated Elimination of the Smallest Area," Cartographic Information Systems Research Group (CISRG) Discussion Paper 10, The University of Hull (1992) 中定义的算法。

  • 此工具可以修改输入要素共享边要素参数。不会生成新输出。

  • 简化仅适用于所有输入要素边,并且仅适用于与任意输入要素边共享边的共享边要素边。将不会对未与至少一个输入要素边共享边的共享边要素边进行简化。

语法

arcpy.cartography.SimplifySharedEdges(in_features, algorithm, tolerance, {shared_edge_features}, {minimum_area}, {in_barriers})
参数说明数据类型
in_features
[in_features,...]

要进行简化的线或面。

Feature Layer
algorithm

用于指定简化算法。

  • POINT_REMOVE保留构成面轮廓的基本形状的关键点,而移除所有其他点(道格拉斯-普克)。这是默认设置。
  • BEND_SIMPLIFY 保留线中的关键折弯,并移除多余折弯 (Wang-Müller)。
  • WEIGHTED_AREA保留形成有效三角形面积的折点,这些面积已根据三角形形状进行了加权 (Zhou-Jones)。
  • EFFECTIVE_AREA 保留形成有效三角形面积的折点 (Visvalingam-Whyatt)。
String
tolerance

用于确定简化程度。如果未指定单位,则将使用输入单位。

  • 对于 POINT_REMOVE 算法,容差是创建的每个折点和新线之间的最大允许垂直距离。
  • 对于 BEND_SIMPLIFY 算法,容差是近似于有效折弯的圆的直径。
  • 对于 WEIGHTED_AREA 算法,容差面积是由三个相邻折点定义的有效三角形的面积。三角形越偏离等边三角形,则它的重量越大,被移除的可能性越小。
  • 对于 EFFECTIVE_AREA 算法,容差面积是由三个相邻折点定义的有效三角形的面积。
Linear Unit
shared_edge_features
[shared_edge_features,...]
(可选)

将沿与输入要素共享的边进行简化的线要素或面要素。将不会对其他边进行简化。

Feature Layer
minimum_area
(可选)

要保留的面的最小面积。默认值为零,即保留所有面。可以指定单位,如果未指定单位,则将使用输入单位。此参数仅当至少其中一个输入为面要素类时可用。

Areal Unit
in_barriers
[in_barriers,...]
(可选)

作为障碍进行简化的点、线、或面要素。简化要素不会与障碍要素接触或相交。

Feature Layer

派生输出

名称说明数据类型
out_feature_class

平滑的输入要素。

要素图层
out_shared_edge_feature_class

共享的边要素。

要素图层

代码示例

SimplifySharedEdges 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 SimplifySharedEdges 工具:

import arcpy
arcpy.env.workspace = "C:/data/LandUse.gdb"
arcpy.SimplifySharedEdges_cartography
arcpy.SimplifySharedEdges_cartography("Water;Parks;", 
                                      "POINT_REMOVE", 
                                      "10 Meters", 
                                      "Commercial;Highways;Buildings", 
                                      "0 SquareMeters")
SimplifySharedEdges 示例(独立脚本)

此独立脚本显示的是使用 SimplifySharedEdges 工具的示例。

# Name: SimplifySharedEdges_standalone_script.py
# Description: Simplifies input features while maintaining topological 
#              relationships along shared edges. For features included as 
#              shared_edge_features (4th argument of 
#              SimplifySharedEdges_cartography()) only the edges that are shared 
#              with in_features (1st argument) are simplified. 

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/LandUse.gdb"

# Set local variables
in_features = "Water;Parks"
algorithm = "POINT_REMOVE"
tolerance = "10 Meters"
shared_edge_features = "Commercial;Highways;Buildings"
minimum_area = "0 SquareMeters"
barriers = None

# Execute Simplify Shared Edges
arcpy.SimplifySharedEdges_cartography(in_features, algorithm, tolerance, 
                                      shared_edge_features, minimum_area, 
                                      barriers)

许可信息

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

相关主题