构建和使用图像金字塔

只要TIFF的大小低于2GB的限制,geoserver就可以通过概述有效地处理大型TIFF。

一旦图像大小超过了这个限制,就应该开始考虑图像金字塔了。

图像金字塔构建了多个图像拼接,每个图像在不同的缩放级别,使其能够存储在单独的文件中。这就带来了一个合成开销,使瓦片回到一个单一的图像,但可以加快图像处理,因为每个概述是瓦片,从而可以有效地访问它的一个子集(而不是一个单一的geotiff,其中基层可以瓦片,但概述从来没有)。

本教程演示如何使用开放源代码实用程序构建图像金字塔,以及如何将其加载到geoserver中。本教程假设您至少运行了geoserver 2.0.2。

建造金字塔

对于本教程,我们准备了 sample BlueMarble TNG subset 以GeoTIFF的形式。图像是瓦片和JPEG压缩,没有概述。不完全是您希望用于高性能数据服务的内容,但有利于重新分配和作为构建金字塔的起点。

为了建造金字塔我们将使用 gdal_retile.py 实用程序,GDAL命令行实用程序的一部分,可用于各种操作系统(如果您使用的是Microsoft Windows look for FWTools

以下命令将在磁盘上构建金字塔:

mkdir bmpyramid
gdal_retile.py -v -r bilinear -levels 4 -ps 2048 2048 -co "TILED=YES" -co "COMPRESS=JPEG" -targetDir bmpyramid bmreduced.tiff

这个 gdal_retile.py 用户指南提供了所有可能参数的详细说明,下面是上面命令行中使用的参数的说明:

  • -v :详细输出,允许用户查看每个文件创建滚动,从而知道正在取得进展(一个大金字塔结构可能需要数小时)

  • -r bilinear :生成较低分辨率级别时使用双线性插值。这是在不要求GeoServer在内存中执行昂贵插值的情况下获得良好图像质量的关键

  • -levels 4 :金字塔中的层数

  • -ps 2048 2048 :金字塔中的每个瓦片将是2048x2048 GeoTIFF

  • -co "TILED=YES" :金字塔中的每个GeoTIFF瓦片都将内部瓦片

  • -co "COMPRESS=JPEG" :金字塔中的每个GeoTIFF瓦片都将被JPEG压缩(为了获得更高的性能,请使用较小的大小,也不要使用此参数进行测试)

  • -targetDir bmpyramid :在bmpyramid目录中构建棱锥体。目标目录必须存在且为空

  • bmreduced.tiff :源文件

这将在bmpyramid中生成许多TIFF文件以及子目录 12, 34 .

完成后,假设已经安装了geoserver image pyramid插件,则可以通过指向包含pyramid的目录并单击“保存”来创建覆盖率存储:

../../_images/configureStore.png

配置图像金字塔存储

单击“保存”时,存储将查找目录,识别 gdal_retile 生成结构并执行一些后台操作:

  • 将根目录中的所有tiff文件移动到新创建的目录 0

  • 在所有子目录中创建图像马赛克(shapefile index plus属性文件)

  • 创建描述整个金字塔结构的根属性文件

完成后,将要求用户选择覆盖范围,该覆盖范围将以金字塔根目录命名:

../../_images/chooseLayer.png

选择出版覆盖范围

发布层,然后设置层参数 USE_JAI_IMAGEREADfalse 要获得更好的可扩展性:

../../_images/layerParams.png

调整棱锥体参数

提交并转到预览,金字塔应该准备好使用:

../../_images/preview2.png

预览棱锥体

关于大金字塔的注释

自动创建金字塔索引和元数据文件的代码可能需要一些时间才能运行,尤其是在以下情况下:

  • 金字塔零级由数千个文件组成。

  • 系统已经忙于处理磁盘,因此将所有文件移动到 0 目录

如果延迟太高,创建存储的请求将超时,并可能破坏金字塔创建。因此,对于非常大的金字塔来说,考虑放松一些舒适感,创造 0 手动目录和移动文件:

cd bmpyramid
mkdir 0
mv *.tiff 0