COG图像从本地存储到S3的镶嵌

介绍

本教程介绍如何使用存储在S3存储桶中的颗粒将构建在本地颗粒之上的现有ImageMosaic更新为COG ImageMosaic。它的目标用户是希望将ImageMosaic的COG颗粒移动到远程存储桶中,而无需重新采集整个颗粒集合。

假设

  • ImageMosaic商店已经存在,其索引基于数据库(即PostGIS)。

  • 本地GeoTIFF颗粒已经是有效的齿轮。

  • 用户有在S3上上传数据的经验。

验证数据是否为有效COG

可以使用COG验证器服务来验证样本GeoTIFF是否为有效的COG。

  1. 将示例GeoTIFF存储到将用于远程服务的目标存储桶(或服务器位置),并复制其完整的URL位置,即 https://modis-vi-nasa.s3-us-west-2.amazonaws.com/MOD13A1.006/2018.01.01.tif

  2. COG Validator

  3. 将示例COG URL粘贴到文本框中,然后单击提交按钮。

  4. 如果样例文件是有效的COG,您将收到如下消息:

Cloud Optimized GeoTIFF Validator: result Validation succeeded ! https://sample.s3.eu-central-1.amazonaws.com/test/cog.tif is a valid Cloud Optimized GeoTIFF.

如果文件不是有效的COG,您可以使用GDAL 3.1或更高版本将您的文件转换为COG格式。请参阅相关的 GDAL documentation 了解更多细节。

一旦验证了数据,您的所有数据都需要存储到S3存储桶中。

图像马赛克更新

下一步是更新ImageMosaic的配置和索引。

ImageMosaic配置更新

需要向ImageMosaic配置添加一些新属性以支持COG。

找到 .properties 包含马赛克配置的文件。它通常是一种 .properties 与父文件夹同名的文件。您可能会认出它,因为它通常是在第一次ImageMosaic配置期间自动生成的,并且它包含以下标头:

#-Automagically created from GeoTools-

让我们假设它被命名为 mosaic.properties 为便于将来在本文档中引用,请参阅。找到后,通过添加以下新属性来编辑该文件:

  • Cog=true

  • SuggestedSPI=it.geosolutions.imageioimpl.plugins.cog.CogImageReaderSpi

在公共存储桶上存储颗粒时,您可以坚持使用默认的RangeReader实现,这样就不需要其他标志,并且可以跳到ImageMosaic索引更新段落。

如果您使用的是私有存储桶,则需要为Mosaic.properties文件指定其他属性:

  • CogRangeReader=it.geosolutions.imageioimpl.plugins.cog.S3RangeReader

  • CogUser=S3AccessKeyID

  • CogPassword=S3SecretAccessKey

在那里 S3AccessKeyIDS3SecretAccessKey 是访问该存储桶所需的实际值。

ImageMosaic索引更新

下一步是更新ImageMosaic索引,它是组成马赛克的所有颗粒的目录。我们需要更新位置值以引用远程URL,而不是磁盘上的本地路径。位置属性最初包含磁盘上每个区组的路径,该路径可以是相对路径,也可以是绝对路径。相对路径是相对于ImageMosaic父配置文件夹的,而绝对路径是完整路径。

这个 mosaic.properties 文件包含一个 PathType 属性设置为 RELATIVEABSOLUTE 。在旧的马赛克上,这一财产可能会丢失 AbsolutePath 属性,而不是布尔值为真/假的。在此基础上,请注意同一马赛克的所有路径要么是相对的,要么是绝对的。

举个例子,存储在 /var/data/imageMosaic/mosaic 加颗粒剂在 /var/data/imageMosaic/mosaic/2018.01.01.tif 可能在数据库中具有位置属性等于以下值的记录:

  • 2018.01.01.tif 在相对路径的情况下

  • /var/data/imageMosaic/mosaic/2018.01.01.tif 在绝对路径的情况下。

路径类型会影响为更新索引而执行的查询。

备注

确保备份您的表,以便在更新查询出错的情况下进行快速恢复。

在本例中,我们将使用与上一个示例中使用的S3 URL相同的公共数据集 Modis COG数据集的ImageMosaic示例 一节。

对于具有相对路径的位置,简单的替换查询可能如下所示:

UPDATE schema.table SET location=CONCAT(
'https://modis-vi-nasa.s3-us-west-2.amazonaws.com/MOD13A1.006/', location);

因此,我们基本上将S3存储桶URL作为位置值的前缀。这样,根据上面的例子, location=2018.01.01.tif 将会成为 location='https://modis-vi-nasa.s3-us-west-2.amazonaws.com/MOD13A1.006/2018.01.01.tif

对于具有绝对路径的位置,替换查询可能如下所示(对于我们的示例):

UPDATE schema.table SET location=REPLACE(location,'/var/data/imageMosaic/mosaic/',
'https://modis-vi-nasa.s3-us-west-2.amazonaws.com/MOD13A1.006/');

地球服务器重新加载

完成所有操作后,重新加载Geoserver配置。