摘要
在不改变基本几何形状的情况下,通过移除多余的弯曲简化面要素。
插图
用法
存在两种简化方法:
- 保留关键点方法(Python 中的 POINT_REMOVE)是两种方法中较快的。它可移除多余的折点。此方法多用于数据压缩或更为粗糙的简化,尤其适用于大家都已经了解的数据。随着容差的增大,生成的面中有棱角的部分(尖锐拐角)将显著增加,所以面可能变得不够美观。
- 保留关键折弯方法(Python 中的 BEND_SIMPLIFY)速度较慢,但通常会生成与最初更为接近的结果且更加美观。其操作方式为消除沿面部分不太重要的弯曲。此方法多用于少量的、更为精细的简化。
最小面积参数仅适用于简化的面。任何在简化过程完成后小于最小面积的面要素都将从输出要素类中移除。对于一组共享公共边的相邻面,该参数适用于该组面的总面积。
该工具会产生两个输出要素类,一个是存储了简化之后的面的面要素类和一个是存储了用来表示任意折叠于一点的面的那些点的点要素类。点的输出名称和位置自动从输出的面的名称获得,并以 _Pnt 作为后缀。面输出将包含所有输入字段;点输出不包含任何输入字段。
多部分 (Multipart) 面可简化为单部分。
以下为用于处理输出中的拓扑错误的 3 个选项:
- 请勿检查拓扑错误(Python 中的 NO_CHECK):不检查简化过程结果的拓扑错误。处理过程会更快。只有在可以保证数据的拓扑准确性时才使用该选项。
- 标记错误(Python 中的 FLAG_ERRORS):将检查简化过程结果的拓扑错误,并将标记具有拓扑错误的要素。当标识拓扑错误的重要性大于解决错误的重要性时,请使用此选项。编辑会话中不支持此选项。
- 面输出将包含两个表示要素是否存在拓扑错误的新字段。InPoly_FID 和 SimPlyFlag 分别包含输入要素 ID 和拓扑错误。
- InPoly_FID 字段将折叠的点连接到其输入面。
- 在 SimPlyFlag 字段中,值为 1 表示引入了错误,而值为 0(零)表示未引入错误。
- 拓扑错误解决之后,标记值仍将保持不变。SimPlyFlag 字段用于检查包含拓扑错误的要素。
- 解决拓扑错误(Python 中的 RESOLVE_ERRORS):修复简化过程所引入的拓扑错误。处理时间将会更长。编辑会话中不支持此选项。
- 指定的容差可能会适合大多数面要素,但并非全部,特别是拥挤区域中的面要素。第一轮简化后如果检测到拓扑错误,则将定位涉及的边界线段(非整个面)并使用更小的容差。
- 此减小后的容差为减小前的百分之五十。新的容差值将用于重新简化这些线段。该迭代过程会根据需要重复多次,直到不存在拓扑错误为止。
- 面输出要素类包含的面数量与输入要素中包含的面数量相同,并且其使用两个新字段 MaxSimpTol 和 MinSimpTol 存储迭代过程中简化每个面时所应用的最大容差和最小容差。如果未引入错误,MaxSimpTol 和 MinSimpTol 的值将与指定的简化容差的值相同。
- 如果简化容差值相对较大,较大的面要素旁的较小面要素最终可能会并入较大面要素的内部。本程序无法检测到这种类型的空间关系错误。
- 对于 NO_CHECK 和 FLAG_ERRORS 选项,简化过程中可能会创建自相交的几何形状,并将自动修复。例如,如果面要素自身存在交叉,则经过修复,它将成为多部分面,以便各部分不存在交叉,尽管面要素的显示效果依然是自交叉。
当使用了 NO_CHECK 或 FLAG_ERRORS 时,或者选中了保留折叠点复选框时,将对点输出进行填充。如果输入面要素包含了多个部分,并且其中一个部分成为折叠的点,则表示该部分的点也将包括在点输出中。
语法
SimplifyPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option})
参数 | 说明 | 数据类型 |
in_features | 要简化的面要素。 | Feature Layer |
out_feature_class | 要创建的输出面要素类。 | Feature Class |
algorithm | 指定面简化算法。
| String |
tolerance | 用于确定简化程度的容差。必须指定一个容差,且值必须大于零。可以选择首选单位;默认为要素单位。
| Linear unit |
minimum_area (可选) | 设置要保留的简化面的最小面积。默认值为零,即保留所有面。可以为指定的值选择首选单位;默认为要素单位。 | Areal unit |
error_option (可选) | 指定处理拓扑错误的方式(这些拓扑错误可能是在处理时引入的,其中包括交叉的线、重叠的线和折叠为零长度的线)。
| String |
collapsed_point_option (可选) | 指定是否将处理中发现的任何折叠的面积为零的面要素作为点保留下来。仅当指定了 NO_CHECK 或 FLAG_ERRORS 时,此选项才可用。
| Boolean |
代码实例
SimplifyPolygon 示例(Python 窗口)
以下 Python 窗口脚本演示了如何在立即模式下使用 SimplifyPolygon 工具。
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)
SimplifyPolygon 示例 2(独立脚本)
以下独立脚本演示了如何使用 SimplifyPolygon 工具。
# Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Author: ESRI
# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA
# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"
# Set local variables
inLakeFeatures = "lakes"
eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed"
# Eliminate small islands in lake polygons.
DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, "CONTAINED_ONLY")
# Simplify lake polygons.
CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 200, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")
# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")
环境
许可信息
- ArcGIS for Desktop Basic: 否
- ArcGIS for Desktop Standard: 是
- ArcGIS for Desktop Advanced: 是