“构建”(Coverage) 的工作原理
构建工具可确定输入 coverage 中的要素类并列出可执行构建的要素类:
- 构建面
- 构建线
- 构建点
- 构建结点
- 构建注记子类
构建面
面拓扑可通过识别定义各个面的一组弧线及每段弧左侧和右侧的面的内部编号进行创建。起始结点和终止结点可用于确定每段弧向左和向右的方向。
表 1:封闭每个面的弧线组
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
表 2:每段弧线左侧和右侧的面
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
使用 POLY 选项的“构建”工具会检查是否存在相交弧线,如果存在则无法构建。必须分割相交弧线,并且可以使用“构建”之前在弧线的交点处定义的结点。不过,如果两条弧线相交并且这两条弧线在精确交点处都具有折点,则使用 POLY 选项的“构建”工具将自动在该相交处放置结点并对弧进行分割。
标注点与每个面相关联。标注点的 User-ID 用来指定面的 User-ID。对于不包含标注点的面来说,面的 User-ID 为 0。如果面包含多个标注点,将随意选择一个标注点来为面指定 User-ID。
Polygon Internal No. Polygon User-ID 1 0 2 101 3 102 4 0
PAT 是为 coverage 中的面而创建的。如果 coverage 中已经存在 PAT,则会通过使用每个原始面的内部编号作为关联项来将 PAT 中的任意其他项连接到输出 PAT。
表 3:“构建”之前的 EXCOV.PAT
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
表 4:“构建”之后的 EXCOV.PAT
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 属性值,不具有标注的面则不保留其中的属性。如果 coverage 中已经存在 AAT,则使用 POLY 选项的“构建”工具将自动重新创建 AAT 并利用每段弧的内部编号作为关联项来重新连接已存在的 AAT 属性。该工具也同样适用于 NAT。使用 POLY 选项的“构建”工具将重新创建 NAT 并重新连接现有 NAT 属性。
如果某个 coverage 中包含坐标错误,则不应对其执行“构建”。可能导致使用 POLY 选项的“构建”工具出现问题的错误包括:相交的弧线(交点处未定义任何结点)、未闭合的面或不匹配的结点以及狭长面。
构建线
使用 LINE 选项的“构建”工具可为 coverage 中的弧创建 AAT。如果 coverage 中已经存在 AAT,则会通过使用弧内部编号作为关联项来将 AAT 中的其他项连接到输出 AAT。以下示例说明使用带有 LINE 选项的“构建”工具来创建 AAT。第一个示例是包含面拓扑的 coverage。第二个示例不包含面拓扑,因此将 LPOLY 和 RPOLY 编号记录为零。
表 5:“构建”后的 VEG.AAT 中的项
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
表 6:“构建”后的 ROADS.AAT 中的项
FNODE TNODE LPOLY RPOLY LENGTH ROADS# ROADS-ID 0 0 0 0 1.0 1 1 0 0 0 0 1.2 2 2 0 0 0 0 0.8 3 3 0 0 0 0 0.9 4 4 0 0 0 0 1.0 5 5
与使用 POLY 选项的“清理”工具或“构建”工具一样,使用 LINE 选项的“构建”工具并不重新构建现有的弧结点拓扑。不过,您可以使用“重新编号结点”来为每段弧的内部结点编号进行重新编号,还可以为每段弧的起始结点和终止结点的内部编号进行重新编号。此操作可以在使用带有 LINE 选项的“构建”工具之前或之后执行,这样便能够正确地更新 FNODE#、TNODE# 和 cover# 项的 AAT 值。
构建点
POINT 选项可为 coverage 中的点要素构建 PAT。AREA 和 PERIMETER 的值设置为 0。如果 coverage 中已经存在 PAT,则会利用每个点的原始内部编号作为关联项,将 PAT 中的任何其他项连接到输出 PAT。
构建结点
使用 NODE 选项的“构建”工具可为 coverage 中的结点要素构建 NAT。内部 ARC 编号指明已连接到该结点的其中一段弧(随机选择)。如果 coverage 中已经存在 NAT,则会利用每个结点的原始内部编号作为关联项,将 NAT 中的任何其他项连接到输出 NAT。
表 7:“构建”后的 VEG.NAT 中的项
ARC# VEG# VEG-ID 2 1 1 5 2 4 4 3 3 5 4 12
如果您要将用户定义项附加到 NAT 并且不具有在不同高程保留的重合结点,则可运行“重新编号结点”<cover>。此操作将融合所有重合结点,并将内部结点编号从 1 开始按顺序重新编号。典型的命令顺序如下所示:
CLEAN <cover> POLY
BUILD <cover> LINE
BUILD <cover> NODE
RENODE <cover>
为 NAT 中的结点分配唯一 User-ID 并通过运行添加项目来添加用户属性。但是,如果要保留不同高程处的重合结点,可运行含有可选高程项的重新编号结点。典型的命令顺序如下所示:
BUILD <cover> LINE
运行“添加项目”命令将 {from_item} 和 {to_item} 添加到 AAT。将不同的高程值分配给重合结点。
BUILD <cover> NODE
RENODE <cover> {from_item}{to_item}
为 NAT 中的结点分配唯一 User-ID,并通过运行“添加项目”工具来添加用户属性。
构建注记子类
注记子类参数为 coverage 中的注记要素构建 TAT。最小的 TAT 由子类 ID 和 subclass# 组成。如果 coverage 中已经存在 TAT,则会利用每个注记的原始内部编号作为关联项,将 TAT 中的任何其他项连接到输出 TAT。
使用“注记子类”选项的“构建”工具不会损坏任何空间索引(如果存在)。这些索引(包括其他要素类的空间索引)将不会受到任何影响。编辑掩膜(如果存在)将保持不变。不过,使用任何其他要素类的“构建”工具将移除编辑掩膜。
推荐采用的后处理方法
“构建”会删除项索引。要创建项索引,可使用索引项工具。