描述
通过使用较少线段或边替换连续线段或边的方式来简化面和线要素。线段和面的边将根据指定的最大允许偏移量进行简化。此外,可以从连续线段或面的边创建圆弧。
插图
使用方法
此工具可对从各种数据转换和操作过程中累积了不需要的折点或短线段的线和面要素的几何进行简化。非线性段或边的序列可以用两点直线代替,代表弧的一系列段或边可以用真曲线代替。该工具将对多个段或边进行逼近并用直线和圆弧代替这些段,这些直线和圆弧符合指定的最大允许偏移量。
输入要素可以是面或线。输出线或面的边将包含原始折点的子集。不会引入新的折点,也不会删除要素。
现有参数曲线(如贝塞尔曲线、圆弧和椭圆弧段)将不会发生更改。
注:
如果输入要素存储在 shapefile 中,则输出要素中的圆弧将仍为一系列密集填充的小直线段。Shapefile 不支持真曲线。要派生出真曲线,请将 shapefile 导出到要素类。
除直线外,使用创建圆弧参数还可以生成真曲线。可通过五个可选参数最大弧度步长、最小折点数、最小半径、最大半径和最小弧度控制将圆弧拟合成线段或边的方式。
- 最大弧度步长(十进制度)是可用于构造圆弧的最大弧度。弧度是候选曲线(正在构建的曲线)的圆心角。最大弧度步长定义了在定位折点来构建圆曲线时,圆心角搜索字段所能达到的宽度上限。如果在每个最大弧度步长中找到多个折点,则可考虑将这些折点拟合成圆弧。可使用较小弧度将圆弧拟合为分布密集的线段,并防止将圆弧过度拟合为较大线段。可使用较大弧度将圆弧拟合为分布稀疏的线段。有效值范围是从 2 到 95(十进制度)。默认值为 20(十进制度)。
在下图中,请考虑用圆弧拟合一个具有 90 度圆心角的线段。如果将最大弧度步长指定为 89 度,则不会考虑该线段,且输出将由一条曲线和一条直线组成(中图)。如果指定为 91 度,则该线段将用于构造圆弧,且输出将由单条曲线组成(末尾图)。
注:
如果针对拟合类型参数选择拟合线段选项,则最大弧角步长参数不可用。
- 最大弧度步长(十进制度)是可用于构造圆弧的最大弧度。弧度是候选曲线(正在构建的曲线)的圆心角。最大弧度步长定义了在定位折点来构建圆曲线时,圆心角搜索字段所能达到的宽度上限。如果在每个最大弧度步长中找到多个折点,则可考虑将这些折点拟合成圆弧。可使用较小弧度将圆弧拟合为分布密集的线段,并防止将圆弧过度拟合为较大线段。可使用较大弧度将圆弧拟合为分布稀疏的线段。有效值范围是从 2 到 95(十进制度)。默认值为 20(十进制度)。
选中保留闭合线的端点参数以保留具有重合端点(循环)的线的端点。如果未选中保留闭合线的端点,则端点可能会被移动或删除。
警告:
此工具会修改输入数据。有关详细信息以及避免数据被意外更改的策略,请参阅修改或更新输入数据的工具。
语法
arcpy.edit.SimplifyByStraightLinesAndCircularArcs(in_features, max_offset, {fitting_type}, {circular_arcs}, {max_arc_angle_step}, {min_vertex_count}, {min_radius}, {max_radius}, {min_arc_angle}, {closed_ends}, {anchor_points})
参数 | 说明 | 数据类型 |
in_features [in_features,...] | 要进行简化的要素。要素可以是线或面。如果使用多个输入,则要素必须具有相同的空间参考。 | Feature Layer |
max_offset | 输出要素边从输入要素形状偏移的最大距离。针对拟合类型参数选择了拟合折点选项时,会测量输入折点与输出要素边之间的距离。选中拟合线段选项时,会测量输入要素边和输出要素边之间的距离。 | Linear Unit |
fitting_type (可选) | 指定输出要素边和圆弧如何拟合输入要素形状。 如果选中拟合线段,则最大弧度步长和最小折点数参数不可用。
| String |
circular_arcs (可选) | 指定是否会创建圆弧。
| Boolean |
max_arc_angle_step (可选) | 用于构造圆弧的最大弧度步长(十进制度)。弧度定义了在定位折点来构建圆曲线时,每个步长的视野宽度。弧度是候选曲线(正在构建的曲线)的圆心角。如果在每个最大弧度步长中都存在折点,则会构建一个圆弧。例如,如果折点和边很稀疏,则应使用较大的弧度步长。有效值范围是从 2 到 95(十进制度)。默认值为 20(十进制度)。如果针对拟合类型参数选择了拟合线段选项,则该参数不可用。 | Double |
min_vertex_count (可选) | 创建圆弧所需的最小折点数。该值必须大于 3。默认值为 4。如果针对拟合类型参数选择了拟合线段选项,则该参数不可用。 | Long |
min_radius (可选) | 输出圆弧的最小允许半径。该值必须大于 0 且小于指定的最大半径值。如果未指定值,则不会选中输出圆弧的半径(默认)。 | Linear Unit |
max_radius (可选) | 输出圆弧的最大允许半径。该值必须大于指定的最小半径值。如果未指定值,则不会选中输出圆弧的半径(默认)。 | Linear Unit |
min_arc_angle (可选) | 用于构造圆弧的最小弧度(十进制度)。最小弧度是输出圆弧允许的最小圆心角。如果输出圆弧的圆心角小于此值,则不会创建圆弧。有效值范围是从 2 到 360(十进制度)。默认值为 2(十进制度)。 | Double |
closed_ends (可选) | 指定是否保留闭合线的端点。闭合线是具有重合端点(循环)的线。
| Boolean |
anchor_points (可选) | 包含锚点的要素类的路径和名称。锚点将叠加输入要素上的折点,并指示在简化过程中不应对其进行移动或删除。 | Feature Layer |
派生输出
名称 | 说明 | 数据类型 |
out_feature_class | 已更新的要素。 | 要素图层 |
out_feature_layers | 已更新的图层名称。 | 要素图层 |
代码示例
以下 Python 窗口脚本演示了如何使用 SimplifyByStraightLinesAndCircularArcs 函数简化线。
import arcpy
arcpy.env.workspace = "C:\data\data.gdb"
arcpy.edit.SimplifyByStraightLinesAndCircularArcs_edit("myDensifiedLines",
"1.5 feet")
以下 Python 窗口脚本演示了如何使用 SimplifyByStraightLinesAndCircularArcs 函数来通过锚点同时简化线和面。
import arcpy
arcpy.env.workspace = "C:\data\data.gdb"
arcpy.edit.SimplifyByStraightLinesAndCircularArcs("myDensifiedPolygons;myDensifiedLines",
"0.4 Meters",
anchor_points="myAnchorPoints")
许可信息
- Basic: 否
- Standard: 是
- Advanced: 是