“清理”的工作原理
此主题仅适用于 ArcInfo。
清理工具可为面或线 coverage 创建拓扑。
创建面拓扑时:
- 将创建面拓扑和面属性表 (PAT)。如果存在 AAT,它将会自动更新。此外,还会创建一个附加面,即背景面或外多边形。
- 如果需要非零的面用户 ID 并且想要保留面属性,则必须使用标注点。如果面包含多个标注点,将随意选择一个点来指定用户 ID。
- 路线系统将保留,并且有关分割和弧重新编号的调整内容将更新到 SEC 和 RAT 中。如果路线和弧段所在的弧由于模糊容差设置而被合并,则路线和弧段将被删除。
- 弧段将被分割并且其弧和弧上的测量值将被更新。
- 区域拓扑将被保留。如果输入 Coverage 具有初始区域拓扑,则将创建 PAT 和 PAT<subclass>。
创建线拓扑时:
- 将创建或更新弧结点拓扑和 AAT。
- 不更新现有 PAT。
- 路线系统将保留,并且有关分割和弧重新编号的调整内容将更新到 SEC 和 RAT 中。如果路线和弧段所在的弧由于“模糊容差”设置而被合并,则路线和弧段将被删除。
- 弧段将被分割并且其弧和弧上的测量值将被更新。
- 将删除区域和区域子类。
“清理”工具通过对 coverage 的弧和标注点执行几何分析来识别 coverage 结点和面,从而构建面和弧结点拓扑。“清理”工具执行的具体的几何分析操作介绍如下。
“清理”工具查找弧之间的交点、分割弧并将交点编码为结点(即弧端点)。
在“清理”过程中,处于彼此的模糊容差范围内的两个或多个弧坐标被捕捉到一起(例如,成为相同的坐标点)。在内部弧坐标与结点之间或弧之间没有加以区分。由于“模糊容差”实际上会移动弧折点,因此了解它与 coverage 分辨率的关系变得十分重要。请参考下面的设置“清理”工具的容差。
“清理”工具可通过识别弧线包围的区域来构建面和弧结点拓扑,并创建定义每个面边界的弧线列表。“清理”工具也可以为结点编号、确立每条弧的起始结点和终止结点及每条弧的左侧和右侧的内部面编号。对于 LINE 选项,内部面编号设置为 0。
Set of arcs enclosing each polygon Polygon number Number of Arcs Arc numbers 1 4 1,2,9,4 2 4 1,3,5,4 3 4 2,8,6,3 4 4 6,8,9,5
Polygons to the left and right of each arc Arc number From-node To-node Left Poly Right Poly 1 1 2 1 2 2 2 7 1 3 3 2 3 3 2 4 4 1 1 2 5 4 3 2 4 6 5 3 4 3 7 5 6 3 3 8 7 5 4 3 9 7 4 1 4
“清理”工具会将悬挂弧的长度与悬挂长度进行比较并删除那些短于悬挂长度的悬挂弧。悬挂弧是其左右两侧的面内部编号相同且以悬挂结点结束的弧。
Polygons to the left and right of each arc Arc number Left poly Right poly Length 1 1 2 5.0 2* 1 1 0.2 3 1 3 8.8 4 2 3 1.2 5* 2 2 0.2 6 2 4 1.3 7* 1 1 0.2 8 4 3 1.9 9* 3 3 1.5 10 4 3 1.9 11* 1 1 0.2 12 4 1 3.1 * Dangling arcs + Arc length is longer than dangle length = 1.0
根据指定的悬挂长度,弧 9 被保存在 coverage 中,而弧 2、5、7 和 11 则被移除。
使用 POLY 选项的“清理”工具将在每个面中查找用于为每个面指定用户 ID 的标注点。对于不包含标注点的面,会将其用户 ID 指定为零。如果面包含多个标注点,将随意选择一个标注来为面指定用户 ID。
Polygon Internal no. Polygon User-ID 1 0 2 101 3 102 4 0
“清理”工具根据使用的选项来构建 PAT 或 AAT。“清理”工具计算每个面的面积和周长并将此信息及面内部编号和用户 ID 存储在 PAT 中。如果输入 Coverage 具有 PAT,可使用面的原始内部编号将 PAT 中的任何其他项连接到输出 Coverage PAT。
EXCOV.PAT before Clean AREA PERIMETER EXCOV# EXCOV-ID COVER-TYPE -25.0 20.0 1 0 2.0 7.5 2 0 Shrub 3.0 9.0 3 13 Trees 9.0 11.0 4 10 Grass 3.5 8.0 5 13 Forest 1.0 2.5 6 0 Water 4.5 9.0 7 14 Shrub 2.0 5.0 8 0 Forest
EXCOV.PAT after Clean AREA PERIMETER EXCOV# EXCOV-ID COVER-TYPE -25.0 20.0 1 0 2.0 7.5 2 0 3.0 9.0 3 13 Trees 9.0 11.0 4 10 Grass 3.5 8.0 5 13 Forest 1.0 2.5 6 0 Water 4.5 9.0 7 14 Shrub 2.0 5.0 8 0
使用带 POLY 选项的“清理”工具时,建议使用面标注点(但这不是必需的)。面标注用于在整个“清理”过程中保留属性。尽管未作要求,但仍建议这些标注点使用唯一 ID。
在构建此 coverage 后,所有具有标注点的面都已保留 COVER-TYPE 属性值,不具有标注的面则不保留其中的属性。
使用 LINE 选项的“清理”工具将自动为 coverage 构建线属性(如 AAT)。此外,当在具有 AAT 的输入 Coverage 中使用 POLY 选项时,“清理”工具将自动在输出 Coverage 中重新创建 AAT。使用弧的原有内部编号作为关联项,将输入 AAT 中的其他项连接到输出 AAT 中。AAT 中的 LPOLY# 和 RPOLY# 项等于新的面内部编号。
以下示例说明使用带有 LINE 选项的“清理”工具来创建 AAT。第一个示例是包含面拓扑的 coverage。第二个示例不包含面拓扑,因此将 LPOLY 和 RPOLY 编号记录为零。
Items from VEG.AAT after Clean FNODE TNODE LPOLY RPOLY LENGTH VEG# VEG-ID 1 3 2 1 5.0 1 1 1 2 3 2 2.0 2 2 1 4 1 3 10.0 3 3 2 3 4 2 1.9 4 4 4 2 4 3 3.9 5 5 3 4 4 1 5.1 6 6
Items from ROADS.AAT after CLEAN FNODE TNODE LPOLY RPOLY LENGTH ROADS# ROADS-ID 1 2 0 0 1.0 1 1 2 3 0 0 1.2 2 2 3 5 0 0 0.8 3 3 4 4 0 0 0.9 4 4 5 6 0 0 1.0 5 5
设置“清理”工具的容差
对于“清理”工具来说,“模糊容差”的选择十分重要。由于输出 Coverage 中任意两个坐标都在彼此的容差距离之外,因此“模糊容差”决定了输出 Coverage 的分辨率。“模糊容差”过小可能导致以下两种问题。
- “清理”工具可能无法处理全等弧段,即处于彼此模糊容差内的平行弧段。
- 可能无法有效地清理现有碎屑点或未及的点。
相反,过大的“模糊容差”可能会折叠面或合并不应该合并的弧。
选择悬挂长度时要特别注意。删除所有短于指定悬挂长度的悬挂弧。
“清理”工具可用于处理 LINE coverage,在其中进行编辑操作之后必须分割相交弧或重新创建弧结点拓扑。
构建工具也会执行相似的处理操作。使用 POLY 选项的“构建”工具可以创建面拓扑和属性(如 PAT)。使用 LINE 选项的“构建”工具将创建 AAT,如果已经存在 AAT 则重新构建 AAT。但“构建”工具不会像“清理”工具一样执行坐标编辑。例如,不能在与其他弧线相交处分割弧线。另一个 Coverage 命令重新编号结点将通过重新设置弧的内部编号并在 coverage AAT 中自动更新每段弧的起始结点和终止结点的内部编号,对每条弧的结点编号进行重新编号。