一、什么是 Coverage
Coverage 是一种用于存储矢量数据的地理相关数据模型,它包含地理要素的空间(位置)数据和属性(描述性)数据。Coverage 使用一组要素类来表示地理要素。每个要素类存储一组点、线(弧)、面或注记(文本)。Coverage 可以具有拓扑,用于确定要素间的关系。
Coverage 以目录形式存储,而目录中的每个要素类则以一组文件的形式进行存储。例如,Coverage 在 ArcCatalog 中显示时会带有图标,如下所示。在此示例中您可以看到,streams Coverage 是一个线 Coverage,其中包含 arc 文件、线的 annotation(注记)以及 tic 文件。此外,还有两个版本的 Coverage 文件。
1.1 Coverage 要素
定义 Coverage 中的要素通常需要多个要素类。例如,Coverage 同时使用线和面要素类来表示面要素。面要素还包含标注点,这些点以单独要素类的形式显示。每个 coverage 都具有一个包含控制点的要素类,用来表示已知的实际坐标。这些控制点可帮助定义 coverage 的范围,但并不表示 coverage 中的任何实际数据点。下图显示了 Coverage 中的通用要素类。其他 Coverage 要素类包括弧段要素类、路径要素类、区域要素类和关联要素类。
1.2 要素编号
Coverage 中的地理要素使用唯一要素编号进行标识。通过此编号可将要素的空间数据和属性数据相关联。有两种编号与 Coverage 要素相关联:
<cover># | 内部序号(由软件指定) |
<cover>-ID | 要素 ID(由用户指定),<cover> 是 coverage 的名称 |
序号 (<cover>#) 用于标识包含要素相关数据的文件内的某条记录。序号由系统自动生成并进行维护,而且对构建拓扑列表非常重要。每个要素的序号都是唯一的,但不必始终保持固定,它们可以随着对 Coverage 的更新和操作而发生变化。
要素 ID (<cover>-ID) 也是自动生成的,但可对它们进行更改。实际上,要素 ID 是您为每个要素(如面)分配的一个整数值。该值应当唯一。要素 ID 有时称为 User-ID,通常用于将附加属性与特定地理要素相关联。例如,有时会使用要素 ID 将相关文件关联到 coverage 要素。更改此值只能在 ArcInfo Workstation 中使用 ArcEdit 来完成,并且必须同时更改 .nit 文件和 .dat 文件中的 <cover>-ID 和相关的 $ID,否则会造成数据损坏。如果需要执行这种类型的编辑,最好将 Coverage 导入到地理数据库要素类中,然后对该要素类进行编辑。
1.3 要素属性
要素属性存储在 Coverage 的 .adf 文件中。其他属性可存储在 INFO 表或 RDBMS 的表中,然后通过图层或关系类连接到要素。
在目录中查看某个文件夹时,您会看到所有 Coverage 及其可能包含的所有关联 INFO 表,而看不到 INFO 文件夹本身。展开一个 Coverage 即可看到它的要素类,每个要素类包含了各个要素以及要素所关联的属性表。选择一个要素类(如面)后,可预览它的要素和属性。
1.4 连接要素和属性
在空间数据和表格数据之间,存在以下三个值得注意的关联特征:
- Coverage 中的要素与要素属性表中的相应记录存在一对一关系。
- ArcGIS for Desktop 通过分配给每个要素的唯一标识符来维护要素与属性记录之间的关联。此标识符即为要素的序号。
- Coverage 要素的序号实际上存储在以下两个位置:在包含每个要素的位置数据(例如,X,Y 坐标对)的文件内,以及包含要素属性表中相应记录的文件内。ArcGIS for Desktop 会自动创建和维护此连接。
在下图中,坐标记录和属性记录之间包含了一个公共元素:要素的序号。该序号将要素坐标与属性相关联,维护了两者之间一对一的对应关系。建立此连接后,您可以查询 Coverage 来显示属性信息,或基于存储在要素属性表中的属性来创建地图。
二、Coverage 存储方式
coverage 作为一个目录存储在计算机中。目录的名称即为 coverage 名称。coverage 的有序集合被称为工作空间。以下是 coverage 名称的一些限制:
- 长度不能超过 13 个字符
- 不能包含空格
- 不能以数字开头
- 不能具有扩展名
- 必须全部使用小写字母
coverage 由一组文件组成,每个文件都包含有关特定要素类的信息。存储在 coverage 中的文件组取决于 coverage 中包含的要素类。例如,下图显示了包含多个 coverage 的工作空间。包含在 coverage soils 中的目录结构和文件显示如下。请注意,此 coverage 包含多个面要素和一个注记子类 type。
每个 coverage 工作空间都有一个 INFO 数据库,存储在子目录 info 下。coverage 文件夹中的每个 .adf 文件都与 INFO 文件夹中的一对 .dat 和 .nit 文件关联。INFO 目录中的 arc.dir 文件用于追踪与 .adf 文件关联的那对 .nit 和 .dat 文件。删除info目录会导致coverage损坏
coverage 文件内容在 Windows 资源管理器和在 ArcCatalog 中的显示方式不同。下面您看到的是 ArcCatalog 中的 coverage 内容。states coverage 包含在 Yellowstone 工作空间中。工作空间中的 INFO 文件夹在 ArcCatalog 中不可见。states 文件夹中的 arc.adf 文件在 ArcCatalog 中以 states coverage 中的 arc 要素类的形式表示。
下表汇总了用于存储各个 coverage 要素类的主要文件组。针对每个要素类,以下列出了 ArcGIS 管理空间信息所使用的常用文件。
此表并不是用于存储 coverage 的完整文件列表。但明确哪些要素类会在 coverage 中显示以及它们表示的地理现象比明确使用哪些文件更为重要。通常情况下,只有要素属性表中的记录允许用户直接访问。其他文件以二进制格式存储并且 ArcGIS 会自动维护文件。
三、Coverage 坐标系定义
3.1Coveravage范围
coverage 范围表示 coverage 的外部边界。它是通过定义、面、路线系统和区域来定义 coverage 弧和标注点的坐标限制(极小和极大坐标)的最小边界矩形。
coverage 的地理范围信息存储在 bnd.adf 文件中。许多 Esri 软件应用程序都使用 bnd.adf 文件来设置地理范围以绘制 coverage。此外,它通常被用作快速 coverage 显示的默认地图范围。许多空间过程使用 bnd.adf 文件来确定 coverage 之间是否相互叠加,并且按处理的位置对 coverage 要素进行排序。
连接线、控制点和注记的坐标可以不在 bnd.adf 文件中。不包含弧或多个标注点(或单个标注点)的 coverage 将具有未定义的 bnd.adf 文件。
BND 文件包含以下各项:
XMIN | coverage 范围左下角的 x 坐标 |
YMIN | coverage 范围左下角的 y 坐标 |
XMAX | coverage 范围右上角的 x 坐标 |
YMAX | coverage 范围右上角的 y 坐标 |
四、Coverage 控制点
控制点是 coverage 的配准点或地理控制点。
控制点允许将 coverage 坐标配准到通用坐标系(通用横轴墨卡托 [UTM] 米、美国国家平面英尺等),因而,也可将 coverage 中要素的位置关联到地球表面上的位置。控制点对于在数字化和编辑过程中配准地图图幅十分重要。
大多数地理数据基于一系列地图图幅或航空像片进行编译和自动处理。地图通过一次在数字化仪或扫描仪上放置一幅的方式进行数字化。航空照片成对放置在立体绘图仪中。然后,所有输入源的坐标会被变换到单一的通用坐标系中。控制点在为上述目的而进行的地图配准中起到十分重要的作用。
控制点用于将源材料配准到数据采集装置(例如数字化仪、立体绘图仪),以及将坐标从某些单位(例如数字化仪英寸)变换到真实世界坐标(例如美国国家平面英尺或 UTM 米)。
尽管每个 coverage 都包含控制点,但是务必要认识到 GIS 数据库中所有的 coverage 应该使用相同的控制点。您需要使用已知的真实世界位置来建立控制点位置,在开始 coverage 自动化处理前可为每一地图图幅记录这些真实世界位置。这些通用控制点位置在项目中应被赋予相同的 Tic-ID 并记录在每一地图图幅上,以确保每个 coverage 能够共享通用的位置参考。例如,地图图幅的角、道路的交叉点和测量标记所定位的控制点 (control point) 都适合作为控制点 (tic)。
使用各地图图幅上记录的相同控制点来生成包含 Tic-ID 及其已知的真实世界 x,y 坐标的主控制点文件。主控制点文件创建之后,可使用该文件为在同一区域内收集的所有数据创建控制点。每个 coverage 应该至少包含四个控制点。
Coverage 的所有控制点信息都存储在 TIC 文件中
tic.adf 文件包含以下各项:
IDTIC | 各控制点的 User-ID | |
XTIC | 控制点的 x 坐标 | |
YTIC | 控制点的 y 坐标 |
尽管控制点的 x,y 坐标在 tic.adf 文件中提供,但是编辑这些值不会改变用于存储其他要素的坐标系。
另外两个 coverage 文件存储 coverage 内坐标管理的基本信息:坐标定义文件 prf.adf 存放 coverage 的地图投影信息;容差文件 tol.adf 存放多个处理容差。控制点匹配容差是 tol.adf 文件里存放的容差之一。尽管这些文件是可选的,但是使用它们可确保实现正确的坐标管理。
五、coverage 属性表中的字段(项)
Coverage 属性存储在 coverage 文件夹的 INFO 文件中,扩展名通常为 .adf。数据文件中每个记录的格式规范称为项定义。在 ArcGIS 中,项通常称为字段、属性或表中的列。
coverage 属性 (INFO) 表中每个记录的字符数(即字节)最多可达 4,096 个。这是属性表中各项输入宽度的总和。数据文件可定义任意数量的项。项由以下内容定义:名称、数据类型、用来存储值的字符数(或字节)、显示宽度以及要显示的小数位数(适用于小数)。
INFO 通过以下约定来定义数据文件中各项(字段)的格式:
项格式 | 字母数字字符数不大于 16 的任意名称 |
---|---|
项名称 | 字母数字字符数不大于 |
项宽度 | 用于存储项值的空间大小(或字节数量) |
输出宽度 | 用于显示项值的空间大小(或字节数量) |
项类型 | 项的数据类型 |
小数位数 | 对于带小数位的项类型,表示小数点右侧的位数 |
5.1 支持的项类型
INFO 文件项类型:
文件类型 | 描述 |
---|---|
B | 以二进制整数的形式存储整数(宽度只有 2 个或 4 个字节)。2 字节宽度的最大值为 32,767;4 字节宽度的最大值为 2,147,483,647。2 字节宽度的最小值为 -32,768;而 4 字节宽度的最小值为 -2,147,483,648。 |
C | 字符(宽度最长可达 320 个字母数字字符)。 |
D | 日期格式为 DD/MM/YY 或 DD/MM/YYYY。项宽度固定为 8 并且内部存储为 YYYYMMDD。 |
F | 小数以内部浮点表示法存储(宽度仅为 4 或 8 个字节)。4 字节宽度表示单精度(精度大约为 7 位);8 字节宽度表示双精度(精度大约为 15 位)。 |
I | 以每个数位 1 个字节的形式存储整数。宽度介于 1 至 16 之间。可能的最大值为 9,999,999,999,999,998;最小值为 -999,999,999,999,999。 |
N | 以每个数位 1 个字节的形式存储小数,宽度介于 1 和 16 之间。 |
5.2 aat.adf(弧属性表)的项定义
5.2.1 单精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
FNODE# | 4 | 5 | B | - |
TNODE# | 4 | 5 | B | - |
LPOLY# | 4 | 5 | B | - |
RPOLY# | 4 | 5 | B | - |
LENGTH | 4 | 12 | F | 3 |
cover# | 4 | 5 | B | - |
cover-ID | 4 | 5 | B | - |
FNODE# 是起始结点的内部编号。
TNODE# 是终止结点的内部编号。
LPOLY# 是左侧面编号(面属性表中的 cover#)。
RPOLY# 是右侧面编号(面属性表中的 cover#)。
Cover# 是弧的内部编号。
Cover-ID 是弧的 User-ID。
5.2.1 双精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
AREA | 8 | 18 | F | 5 |
PERIMETER | 8 | 18 | F | 5 |
cover# | 4 | 5 | B | - |
cover-ID | 4 | 5 | B | - |
AREA 为 0
PERIMETER 为 0
Cover# 是点的内部编号
Cover-ID 是点的 User-ID
5.3 tic.adf(控制点表)的项定义
5.3.1 单精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
IDTIC | 4 | 5 | B | - |
XTIC | 4 | 12 | F | 3 |
YTIC | 4 | 12 | F | 3 |
控制点表 - 单精度 coverage
IDTIC 是控制点的 User-ID
XTIC 是控制点的 x 坐标
YTIC 是控制点的 y 坐标
5.3.2 双精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
IDTIC | 4 | 5 | B | - |
XTIC | 8 | 18 | F | 5 |
YTIC | 8 | 18 | F | 5 |
控制点表 - 双精度 coverage
IDTIC 是控制点的 User-ID
XTIC 是控制点的 x 坐标
YTIC 是控制点的 y 坐标
5.4 bnd.adf(coverage 边界表)的项定义
5.4.1 单精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
XMIN | 4 | 12 | F | 3 |
YMIN | 4 | 12 | F | 3 |
XMAX | 4 | 12 | F | 3 |
YMAX | 4 | 12 | F | 3 |
Coverage 边界表 - 单精度 coverage
XMIN 和 YMIN 是 coverage 中所有弧线和点的最小外接矩形左下角的坐标
XMAX 和 YMAX 是 coverage 中所有弧线和点的最小外接矩形右上角的坐标
5.4.2 双精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
XMIN | 8 | 18 | F | 5 |
YMIN | 8 | 18 | F | 5 |
XMAX | 8 | 18 | F | 5 |
YMAX | 8 | 18 | F | 5 |
Coverage 边界表 - 双精度 coverage
XMIN 和 YMIN 是 coverage 中所有弧线和点的最小外接矩形左下角的坐标
XMAX 和 YMAX 是 coverage 中所有弧线和点的最小外接矩形右上角的坐标
5.5 nat.adf(结点属性表)的项定义
5.5.1 单精度 coverage 和双精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
ARC# | 4 | 5 | B | - |
cover# | 4 | 5 | B | - |
cover-ID | 4 | 5 | B | - |
结点属性表 - 单精度 coverage 和双精度 coverage
ARC# 是与结点对应的弧的内部编号
Cover# 是结点的内部编号
Cover-ID 是结点的 User-ID
5.6 .rat(路径属性表)的项定义
5.6.1 单精度 coverage 和双精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
subclass# | 4 | 5 | B | - |
subclass-ID | 4 | 5 | B | - |
路径属性表 - 单精度 coverage 和双精度 coverage
Subclass# 是路径子类的内部编号
Subclass-ID 是路径子类的 User-ID
5.7 .sec(弧段属性表)的项定义
5.7.1 单精度 coverage 和双精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
ROUTELINK# | 4 | 5 | B | - |
ARCLINK# | 4 | 5 | B | - |
F-MEAS | 4 | 12 | F | 3 |
T-MEAS | 4 | 12 | F | 3 |
F-POS | 4 | 12 | F | 3 |
T-POS | 4 | 12 | F | 3 |
subclass# | 4 | 5 | B | - |
subclass-ID | 4 | 5 | B | - |
弧段属性表 - 单精度 coverage 和双精度 coverage
ROUTELINK# 用于识别弧段所属的路径
ARCLINK# 用于识别弧段引用的弧
F-MEAS 是弧段的起始测量值
T-MEAS 是弧段的终止测量值
F-POS 和 T-POS 是弧段的起点和终点,以从弧的起始结点开始沿弧的百分比形式表示
Subclass# 是路径子类的内部编号
Subclass-ID 是路径子类的 User-ID
5.8 .pat(区域属性表)的项定义
5.8.1 单精度 coverage
项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
AREA | 4 | 12 | F | 3 |
PERIMETER | 4 | 12 | F | 3 |
subclass# | 4 | 5 | B | - |
subclass-ID | 4 | 5 | B | - |
区域属性表 - 单精度 coverage
AREA 是以 coverage 单位表示的区域子类的面积
PERIMETER 是以 coverage 单位表示的区域子类的周长
Subclass# 是区域的内部编号
Subclass-ID 是区域的 User-ID
5.8.2 双精度 coverage
$项名称 | 项宽度 | 输出宽度 | 项类型 | 小数位数 |
---|---|---|---|---|
AREA | 8 | 18 | F | 5 |
PERIMETER | 8 | 18 | F | 5 |
Subclass# | 4 | 5 | B | 5 |
Subclass-ID | 4 | 5 | B | 5 |
区域属性表 - 双精度 coverage
AREA 是以 coverage 单位表示的区域子类的面积
PERIMETER 是以 coverage 单位表示的区域子类的周长
Subclass# 是区域的内部编号
Subclass-ID 是区域的 User-ID