金字塔可用于改善显示性能。它们是原始栅格数据集的缩减采样版本,可包含多个缩减采样图层。金字塔的各个连续图层均以 2:1 的比例进行缩减采样。以下是为栅格数据集创建的两级金字塔示例:
金字塔通过仅检索使用指定分辨率(取决于显示要求)的数据,可以加快栅格数据的显示速度。利用金字塔,可在绘制整个数据集时快速显示较低分辨率的数据副本。而随着逐渐放大,各个更精细的分辨率等级将逐渐得到绘制,并且性能将保持不变,因为您在连续绘制更小的各个区域。数据库服务器会根据用户的显示比例自动选择最适合的金字塔等级。如果不使用金字塔,则必须从磁盘中读取整个数据集,然后将其重采样为更精细的大小。这便称为“显示重采样”,发生在刷新显示内容时。
每个栅格数据集只需构建一次金字塔, 之后每次查看栅格数据集时都会访问这些金字塔。栅格数据集越大,创建金字塔集所花费的时间就越长,但是显示将会更快,可以为将来节省时间。
尽管无法为栅格目录构建金字塔,但是可以为栅格目录中的每个栅格数据集构建金字塔。镶嵌数据集与栅格目录类似。您可以为镶嵌数据集中的每个栅格数据集构建金字塔,也可以使用镶嵌数据集工具集中的工具为镶嵌数据集构建概视图。
金字塔文件
金字塔存储在单个文件中,默认情况下,该文件位于与源栅格相同的位置。金字塔文件共有两种类型:概视图 (.ovr) 和分辨率降低的数据集 (.rrd)。这两种类型的金字塔文件 ArcGIS 均可读取,但是只能写入 .ovr 文件(少数例外情况将在下文中予以介绍)。
将为 ERDAS IMAGINE 文件创建 .rrd 文件。
.ovr 文件由 ArcGIS 版本 10 或更高版本创建和使用。.ovr 文件的一项增强功能在于,您可以选择压缩方法和压缩质量。请切记,JPEG 类型压缩只能与相应文件类型配合使用,这些文件类型可存储符合 JPEG 规范的数据。如果选择 JPEG 金字塔,还可以指定 JPEG 金字塔的压缩质量。
.ovr 文件的大小大约是原始未压缩文件的 8%。如果金字塔文件经过压缩,.ovr 文件可能会更小(如 2%)。由于压缩依赖于数据的类似程度,因此很难估算 .ovr 文件的大小。
以下是各金字塔等级下栅格数据集存储大小增加情况的示例(根据不同的压缩类型)。等级 0 表示原始栅格数据集。
级别 | 无压缩 | LZ77 压缩 | JPEG 压缩 |
---|---|---|---|
0 | 1.0 GB | 1.0 GB | 1.0 GB |
1 | 1.0655 GB | 1.0483 GB | 1.0133 GB |
2 | 1.0824 GB | 1.0606 GB | 1.0169 GB |
3 | 1.0866 GB | 1.0637 GB | 1.0179 GB |
4 | 1.0877 GB | 1.0645 GB | 1.0182 GB |
5 | 1.0880 GB | 1.0647 GB | 1.0183 GB |
6 | 1.0881 GB | 1.0647 GB | 1.0183 GB |
金字塔重采样方法
有三种金字塔重采样方法可供使用:最邻近法、双线性和双三次卷积法。最邻近法是默认采用的方法,通常适用于任意类型的栅格数据集。但是,建议对带有色彩映射表的离散(标称)数据或栅格数据集(如土地利用数据、经过扫描的地图和伪彩色图像)应用最邻近法。对于连续数据(如卫星影像或航空摄影),应使用双线性插值法或双三次卷积法。尽管双线性插值法执行速度更快,但是得到的结果却不如双三次卷积法的结果锐利。对于 1 位 TIFF 或 IMG 文件,建议使用双线性插值法。
镶嵌和栅格数据集原点
在地理数据库中镶嵌栅格数据时,可在栅格数据镶嵌到栅格数据集的过程中为栅格数据集构建金字塔,也可以在加载完成后构建金字塔。ArcGIS 允许构造部分金字塔,因此,在执行镶嵌操作期间,仅重新构建与源数据重叠的金字塔部分。这在更新已镶嵌栅格数据集时很有用,因为添加新栅格数据集后,无需为整个栅格数据集重新构建金字塔。如果更新的是栅格数据集原点(金字塔的参考点)处的数据,则需要为整个栅格数据集重新构建金字塔。
栅格数据集的原点即为栅格数据集左上角的坐标。金字塔的构造始于该坐标,然后向右、向下持续进行。如果从栅格数据集的原点开始向左或向上镶嵌数据,则需要变换原点,以反映新的左上角点。变换现有栅格数据集的原点后需要重新构建金字塔。重新构建金字塔的操作可能非常耗时,尤其是在大量栅格数据集源文件(或其他栅格数据集)已经镶嵌到栅格数据集中从而使该栅格数据集变大的情况下更是如此。
由于重新构建金字塔操作非常耗时,因此应该通过分析源数据来识别出栅格数据集左上角栅格的坐标,然后在创建栅格数据集时输入该坐标。您在创建栅格数据集时自行设置了金字塔参考点的 x 坐标和 y 坐标(请参阅创建栅格数据集),而并没有使用所插入第一个栅格数据集的左上角坐标。因此便可以通过在创建栅格数据集时设置金字塔的参考点来避免变换栅格数据集的原点。