格网是 Esri 栅格数据的原生存储格式。通常包含以下两种类型的格网:整型和浮点型。整型格网多用于表示离散数据,浮点型格网则多用于表示连续数据。
整型格网的属性存储在它的值属性表 (VAT) 中。格网中的每个唯一值对应于表中的一条 VAT 记录。该记录存储了这个唯一值(VALUE 是表示特定类或像元分组的整数)和它所表示的格网像元数 (COUNT)。例如,如果栅格中共有 50 个代表森林的值是 1 的像元,则在 VAT 中,这些像元将显示为一条 VALUE = 1 和 COUNT = 50 的记录。
浮点型格网没有 VAT,因为格网中的像元可以是给定范围的任意值。此格网类型中的像元不能整齐地落在各个离散类别中。像元值用于描述其所在位置的属性。例如,在使用米作为单位的表示高程的高程数据格网中,像元值 10.1662 代表其所在位置高于海平面大约 10 米。
可存储为格网值的数据值的范围如下:
- 浮点型格网可存储值的范围为 -3.4 x 1038 至 3.4 x 1038。
- 整型格网可存储值的范围为 -2147483648 至 2147483647(-231 至 231-1)。
对于整型格网,此信息仅适用于 VALUE 项。整型格网可将其他 INFO 项添加到值范围取决于该项定义的 VAT。
格网的坐标系与其他地理数据的坐标系相同。行和列分别与坐标系的 x 和 y 轴平行。由于格网中的每个像元都与其他像元具有相同的尺寸,因此通过行和列可轻松地确定任意像元的位置和其所覆盖的区域。这样,格网的坐标系就可由像元大小、行和列的数目,以及左上角的 x,y 坐标定义。格网也可传递其他信息,例如与格网相关联的坐标系。
格网数据结构
格网由分块栅格数据结构实现,其中数据存储的基本单位为矩形像元块。块以压缩形式和长度可变的文件结构(也称为分块)存储在磁盘上。每个块都作为一个长度可变的记录来存储。
格网分块的大小基于创建时格网的行数和列数。分块大小的上限由应用程序设置,并且非常大(当前设置为 4,000,000 x 4,000,000 像元)。因此,GIS 应用程序使用的多数格网会自动存储在单个分块中。如果创建时格网的大小大于分块大小的上限,则格网的空间数据会跨多个分块自动分割。
格网的分块存储结构支持对较大栅格数据集进行顺序和随机的空间访问。分块结构不会限制格网的联合分析。不同格网的分块和块也不必为了联合分析而在地图空间中重合。格网的分块和块对用户完全隐藏,用户始终将格网作为统一方形像元的无缝栅格来进行创建和操作。
格网使用游程栅格压缩方案,其在块级别上可自适应。测试每个块以确定将为块使用的深度(位/像元),并确定更为有效的存储技术(按像元或已编码的游程)。以需要较少磁盘空间的格式存储块。自适应压缩方案是最佳选择,因为在使用这两种数据类型支持联合分析时,其能够有效地表示同类分类数据和异类连续数据。单一图层每个像元的操作(例如数据重分类)无需解压缩即可直接运行数据。对压缩输入图层进行的多图层每个像元操作使不同图层的数据运行相交,并对相交的运行进行操作。单个图层每个邻域操作以及将压缩数据与未压缩数据混合在一起的多图层每个像元操作,都将运行扩展到像元,并以透明的方式执行传统的按像元处理。
格网的分块-块结构对访问格网中的空间数据的任何应用程序都是透明的。通过设置地图坐标中定义的矩形窗口,操纵格网的程序可访问空间数据。
格网数据存储
格网存储在 ArcInfo 工作空间中。与 coverage 相似,格网以独立的目录形式存储,并带有包含特定格网信息的关联表和文件。在整型格网目录(通常由 ArcInfo Workstation 创建)中,可找到以下表和文件:BND 表,存储格网的边界;HDR 文件,存储用于描述格网的特定信息,例如像元分辨率和分块系数;STA 表,包含格网的统计数据;VAT 表,存储与格网区域关联的属性数据;日志文件 (LOG),监听格网上所发生的活动;以及分块文件 w001001.adf (q0x1y1),存储像元数据和随附的索引文件 w001001x.adf (q0x1y1x),该索引文件可为分块和 LOG 中的块建立索引。(如果使用 ArcGIS 运算符进行创建,则有些文件(例如日志文件)可能不存在。)
如果更改格网,则文件和表中所包含的值和信息会立即更新。INFO 表中所包含的信息允许用户访问,并提供了有关格网的信息。
BND 表
格网 BND 包含格网的边界。边界是包含格网像元的矩形;其存储在地图坐标中。所有格网 BND 都以双精度存储。
BND 表中的最小坐标为格网中左下角像元的左下角坐标。最大坐标为格网中右上像元的右上角的坐标。
HDR 文件
HDR 是二进制文件。存储在文件中的信息包括像元大小、格网的类型(整型或浮点型)、压缩技术、分块系数和分块信息。
STA 表
STA 表是包含格网统计数据的 INFO 表。格网的最小值、最大值、平均值和标准差以浮点值的形式存储在 STA 表中。您不得尝试直接更改这些值。
因为 NoData 表示未知值,所以 NoData 不能用于计算 STA 表中的统计数据。
创建二值格网(仅包含 0 和 1 值)时,STA 表的平均值会包含值 0,标准差会包含值 -1。标准差值 -1 表示未对格网进行统计计算。
标准差值 -2 表示格网仅包含 NoData 像元。
VAT 表
VAT 是存储与格网区域关联的属性的 INFO 表。只有整型格网才具有与其关联的 VAT。每个 VAT 至少包含两项 - VALUE 和 COUNT。VALUE 项包含用于区分格网中各位置特征的整数值。被分配给相同值的所有像元都包含相同的特征,因此属于相同的区域。COUNT 是区域中像元的数量。
可将新项添加到 VAT。不得更改 VALUE 和 COUNT 项,而且 VAT 必须存储在 VALUE 项上。VALUE 或 COUNT 前面永远不能添加新项。
在 VAT 中不表示包含 NoData 的像元。
以下是 VAT 的示例:
Record VALUE COUNT 1 0 628872 2 1 265043 3 2 151150 4 3 3185652 5 4 79983 6 5 4782 7 6 74334 8 7 8877 9 8 1817 10 9 491 11 10 858 12 11 8770 13 12 28789 14 13 72539 15 14 3686 16 15 3932 17 16 13227 18 17 1890 19 18 1305 20 19 427286 21 20 6695
分块文件
w001001.adf (q0x1y1) 和 w001001x.adf (q0x1y1x) 文件可存储格网中第一个或基础分块的数据和索引。分块大小的上限很大,并且多数格网都使用单个分块进行存储。如果使用其他分块,它们会根据其与第一个分块的空间关系自动编号。分块可以长度可变的二进制文件的形式实现。对于 ARC/INFO 7.x 以前的版本,这些文件被命名为 q0x1y1 和 q0x1y1x,并且仍与当前软件结合使用。
LOG 文件
LOG 文件是包含有关创建和更改格网的信息的 ASCII 文件。LOG 可监听对格网执行的操作,但是不包含对格网执行的每项操作。由于所有 Grid 功能都会形成新的格网,因此只有 Grid 命令(例如 RENAME 和 COPY)可更改现有格网并输入到 LOG 文件中。与所有 ASCII 文件相同,LOG 文件可通过系统命令或任意文本编辑器进行访问。
存储限制
格网的名称有如下限制:
- 存储时不得使用空格。
- 不得以数字开头。
- 不得长于 13 个字符(多波段格网最多可为 9 个字符)。
对 coverage 和格网可存储于 INFO 目录中的文件数量均有限制。总数大约为 10,000。因此,这限制了可存储在工作空间中的格网数量。例如,下面列出了可存储在单个工作空间目录中的格网数据集的理论最大值:
- 少于 5,000 个浮点型格网,或
- 少于 3,333 个具有 VAT 的整型格网(如果没有 VAT,则少于 5,000),或
- 少于 10,000 个格网堆栈
以上数字为理论最大值。如果执行的是要创建临时格网(从而在 INFO 目录中创建文件)的过程,这些数量会减少。此外,如果存储混合文件,如格网和 coverage,则存储数量会减少。
这些数量与在 INFO 目录中存储信息的格网文件夹中的文件数量有关。限值为 10,000 (9,999),但这不是 INFO 目录中的文件总数,而是指向 INFO 目录中文件的文件总数。对于每个格网,格网文件夹中有两个指向 INFO 文件夹中对应文件的文件:BND(边界)文件和 STA 表(统计数据)文件 (9999/2≈5000)。当格网具有 VAT 时,还会指向 INFO 目录中的文件,因此可存储的数量再次减少 (9999/3≈3333)。格网堆栈只有一个文件指向 INFO 目录 (9999/1≈9999)。
堆栈
堆栈由一组按顺序排列的空间叠置格网(图层)组成,在多元分析中被视为单一实体。聚类分析、分类和主成分分析均可作用于堆栈中的图层。
堆栈具有以下特征:
- 每个图层对应于一个格网的一组图层
- 地图范围或 BND
- 像元大小
- 数据类型
- 投影
堆栈中指定的每个图层都有一个用于指示其在堆栈中的顺序的索引号。组成堆栈的格网必须位于相同的工作空间。
输入图层的边界可完全叠置、部分叠置或根本不叠置,但是只有图层叠置的区域才能构成堆栈。堆栈的 BND 是图层边界相交处。多元分析功能的计算将在叠置区域进行。如果输入图层之间没有公共区域,则堆栈为空,并且不进行任何计算。
堆栈的像元大小默认为堆栈中的粗糙图层。
可将堆栈中输入格网的数据类型(实数或整数)的任意数字结合起来。然而,应用多元技术之前,应了解这些值表示的含义、分类数据还是连续数据,以及这些值的范围或相对范围。在某些分析中,堆栈的输入数据类型决定输出的数据类型。
与输入格网关联的投影信息与堆栈一同存储。由于堆栈被视为单一实体,因此堆栈中的所有格网必须位于相同的投影中。投影信息用于确保堆栈的各个格网占据相同的地理区域。
存储格网堆栈
与格网或 coverage 类似,堆栈以目录结构形式存储。堆栈目录中有两个文件:外部 INFO STK 表和 ASCII PRJ 文件。组成堆栈的实际格网不存储在堆栈中。它们是工作空间中的普通格网。这意味着,任意格网都可用于多个堆栈中。STK 表可存储格网的名称,这些格网组成堆栈及其对应的索引值:
GRID: LIST JER135.STK Record INDEX GRID 1 1 jer1 2 2 jer3 3 3 jer5
INDEX 项给出了堆栈中格网的位置,而 GRID 项列出了组成堆栈的格网名称。输入格网的空间数据不在堆栈中复制。因此,堆栈始终反映最新版本的输入格网。STK 文件与任何其他 INFO 文件一样可访问。可添加项(例如存储数据收集日期的项)以用于描述目的,但是不能使用 INFO 更改 INDEX 项中的值或 GRID 项中的名称。对这些项进行的所有操作仅应使用 Grid 中可用的各种堆栈管理命令予以执行。
PRJ 文件(如果存在)可存储堆栈的投影信息:
Projection STATEPLANE Zone 4701 Datum NAD27 Zunits NO Units FEET Spheroid CLARKE1866 Xshift 0.0000000000 Yshift 0.0000000000 Parameters
如果堆栈中所有输入格网的投影未知,则不创建 PRJ 文件。
存储格网堆栈名称时不得使用空格,不得以数字开头,并且不得长于 9 个字符。
格网中的 NoData
格网中的每个像元都会被分配一个值;但是,系统会在表示该主题的格网上为没有实际值的像元分配 NoData。Nodata 与 0(零)不同;0 是一个有效值。因此,在计算格网的 STA 表中的统计数据时不能使用 NoData 像元。