Earth Engine 中的 Cloud Optimized GeoTIFF (COG)

借助 Google Earth Engine,您可以处理存储在您自己的 Google Cloud Storage (GCS) 存储桶中的栅格数据。通过 使用 Cloud Optimized GeoTIFF (COG),您可以直接在 Earth Engine 中访问 和分析数据,而无需将 像素提取到 Earth Engine 的资源存储区中。

这种云优先方法具有多项优势,尤其是在管理大型数据集或将 Earth Engine 集成到更广泛的 Google Cloud 工作流或外部工具和平台时。

为何使用 Cloud Storage 和 COG?

  • 灵活性和互操作性: 将数据保留在标准 Cloud Storage 存储桶中,以便其他工具和服务可以访问这些数据。 无论您是直接上传数据还是从 Earth Engine 导出数据,Cloud Storage 都是 Earth Engine 和外部工作流的单一事实来源。
  • 数据控制功能和出站流量: 将数据存储在 Cloud Storage 中可提供标准对象存储区管理功能。这样,您就可以使用 Cloud Storage 功能(例如 请求者付款或 公共存储桶)下载、迁移或共享数据,并使用标准 Cloud IAM管理访问权限。
  • 灵活扩缩: 避免 Earth Engine 存储空间限制。 Cloud Storage 提供几乎无限的自助式存储空间扩缩功能,可扩缩到 PB 级。
  • 无需等待提取: 注册 COG 的速度很快,因为 Earth Engine 只需从文件标头读取元数据(例如投影和维度)以进行索引和验证。实际像素数据保留在 Cloud Storage 中,并在计算期间按需读取,因此无需单独的提取任务。

Earth Engine 中的 COG 工作流

Earth Engine 支持与 Cloud Storage 上的 COG 的双向工作流:您可以将 COG 直接从 GCS 读取到 Earth Engine 中,也可以将 Earth Engine 的计算结果直接作为 COG 写入 GCS。

从 Cloud Storage 读取 COG

如需将 GCS 托管的 COG 引入 Earth Engine,您有两种选择:

  1. 直接加载 (ee.Image.loadGeoTIFF): 使用 GCS URI 直接加载单个图片。这最适合快速测试、临时分析或临时数据:

    JavaScript

    var image = ee.Image.loadGeoTIFF('gs://google-sample-bucket/my_image.tif');
    

    Python

    image = ee.Image.loadGeoTIFF('gs://google-sample-bucket/my_image.tif')
    

    如需查看已完成示例,请参阅 Cloud GeoTIFF 中的图片。

  2. 已注册的资源: 使用上传清单将一个或多个 COG 注册为 Earth Engine 资源(请参阅 COG 注册指南)。这是生产工作流的推荐路径,尤其是在构建图片集时。

功能 直接加载 (loadGeoTIFF) 已注册的资源(清单)
设置 无(仅限 GCS URI) 清单(Python 客户端、CLI 或 REST)
性能 标准 (读取时读取标头) 已优化 (创建时已编入索引)
管理 未创建任何资源 计入资源数量配额,而不是存储空间。
用例 原型设计、临时分析 需要快速读取的生产工作流。

将 COG 写入 Cloud Storage

如需将 Earth Engine 计算结果另存为 Cloud Storage 存储桶中的 COG, 请使用 Export.image.toCloudStorage 批量导出函数(请参阅导出 图片),并在formatOptions中将cloudOptimized参数设置为true。这会告知 Earth Engine 编译图片并将其作为完全兼容的 COG 直接写入您的 GCS 存储桶。

受支持的 Cloud Storage 存储桶位置

如需让 Earth Engine 访问您的 Cloud Storage 存储桶,该存储桶必须 位于以下数据中心区域或多区域之一:

  • us 多区域
  • 任何包含 us-central1 的美国双区域
  • us-central1 区域

如果您的存储桶位于任何其他区域数据中心,Earth Engine 将拒绝注册和读取请求。Earth Engine 仅访问存储在 Google Cloud Storage 存储桶中的 COG。不支持外部云端存储空间提供商和通用 HTTP 网址。

Earth Engine COG 导出规范

当您使用 Export.image.toCloudStorage 和 cloudOptimized: true 在 formatOptions 中从 Earth Engine 导出分析结果时,Earth Engine 的内置导出器 会自动应用以下标准:

  • 文件结构: 生成具有内部平铺 (TILED=YES) 的 BigTIFF (BIGTIFF=YES),并将所有概览复制到文件开头。
  • 自动概览: 如果输出光栅尺寸为 512x512 像素或更大,Earth Engine 会自动构建五个级别的二次方概览 ([2, 4, 8, 16, 32])。Earth Engine 会根据输出像素数据类型动态选择概览重采样方法:浮点图片使用三次 重采样,所有其他整数或离散图片使用最近邻 重采样。
  • 默认压缩和平铺: Earth Engine 会导出具有 256x256 像素块平铺和 LZW 压缩 (COMPRESS=LZW) 的 COG。无法在 formatOptions 中自定义压缩和图块尺寸。
  • 自动分片: 如果导出的栅格较大(超过 4 GiB 未压缩),Earth Engine 会自动将导出内容拆分为多个 名为 baseFilename-yMin-xMin 的空间图块(请参阅 大型文件导出)。
  • 替换分片限制: 如需将大型栅格(最高上限为 16 GiB 未压缩,每条边 131,072 像素)作为单个文件导出而不进行分片,请在 formatOptions 内指定 fileDimensions。每个维度都必须是图块大小(默认值为 256,例如 [65536, 65536])的正整数倍。由于 fileDimensions 设置的是最大文件维度,而不是输出边界框,因此传递较大的上限会强制导出到单个文件中,而无需进行精确的网格计算。您还可以传递 skipEmptyFiles: true,以防止生成空白背景图块。
  • 优化权衡: 配置大型导出时,请评估文件数量和导出速度之间的权衡。指定较小的 fileDimensions 或 shardSize 会生成更多文件片段,但会最大限度地提高后端工作器之间的并行处理能力,从而缩短导出完成时间。相反,替换限制以生成单个大型文件可以简化文件管理和数据共享,但由于单文件组装和 I/O 瓶颈,可能会增加导出执行时间。非常大的 单文件 COG 导出(接近 16 GiB 未压缩限制 ,尤其是压缩效果不佳的图片)在概览和 COG 组装期间也可能会超出临时 存储容量;如果导出失败 ,请考虑分片为较小的文件或 在外部转换标准 GeoTIFF 导出。

在 Earth Engine 外部自定义 COG 创建

虽然使用 cloudOptimized: true 直接导出是为大多数工作流生成即用型 COG 的最简单方法,但您也可以导出标准 GeoTIFF(cloudOptimized: false,默认值),并使用 GDAL 等外部工具自行将其转换为 COG。当您需要执行以下操作时,两步导出和转换工作流可能很有用:

  • 自定义压缩和布局: 根据您的数据集调整块大小(例如 512x512)、预测变量、概览重采样方法或压缩编解码器 (例如 ZSTD)(请参阅 准备 COG)。
  • 避免大规模单文件导出时出现容量错误: 在导出期间跳过概览生成和 COG 布局重写可以减少内存和临时存储开销,从而降低非常大的单文件导出达到容量限制的可能性。
  • 缩短 Earth Engine 导出执行时间: 将概览构建和 COG 格式设置卸载到您自己的计算环境可以缩短 Earth Engine 导出阶段。

费用考虑因素和存储类别

分析已注册的 COG 资源时,Earth Engine 的读取操作不会产生 Google Cloud 项目的 Cloud Storage 读取操作或数据检索费用。

Cloud Storage 主要根据标准月度静态数据存储空间(GB/月) 以及任何外部客户端数据传输或网络出站流量费用(具体取决于您的存储桶位置和客户端网络配置)向您收费。

存储类别建议

  • 标准存储空间(推荐): 标准存储空间最适合活跃的 Earth Engine 工作流。由于没有最短存储期限规则,您可以自由覆盖、更新或删除临时 COG,而不会产生提前删除罚款。此外,如果您或您的协作者在 Earth Engine 外部使用桌面地理信息系统 (GIS) 软件、GDAL 脚本或机器学习笔记本访问存储桶,Standard Storage 不会产生任何零售检索附加费。
  • Nearline、Coldline 和 Archive Storage: 所有 Cloud Storage 类别都提供与 Standard Storage 相同的低延迟访问和吞吐量,因此在 Earth Engine 中使用较冷的存储层级时,不会产生读取性能损失。虽然 Earth Engine 计算也可以读取这些层级,而无需支付零售数据检索费用,但 Cloud Storage 零售规则强制执行严格的最短存储期限(Nearline 为 30 天,Coldline 为 90 天,Archive 为 365 天)。在最短期限之前修改或删除文件会触发提前删除附加费。此外,从任何外部客户端工具访问冷对象都会产生高昂的数据检索附加费。

如需详细了解零售价格和最短期限政策,请参阅 Google Cloud Storage 价格指南。

工作流概览

在 Earth Engine 中使用 COG 的典型工作流包括以下步骤:

导入外部数据:

  • 优化: 使用外部工具(例如 GDAL、本地工作站脚本或云处理流水线)将栅格文件转换为 COG 格式。
  • 上传: 将 COG 上传到位于 us-central1 或美国多区域的受支持 Cloud Storage 存储桶。
  • 权限: 确保您和任何项目协作者都具有对文件的 Cloud Storage 读取权限(请参阅 COG 权限)。
  • 注册: 使用 Python 客户端库、earthengine 命令行 工具或 REST API 将 COG 注册为 Earth Engine 资源(请参阅COG 注册)。

导出结果:

  • 导出: 从 Earth Engine 到 Cloud Storage 运行批量导出,并将 cloudOptimized 设置为 true(请参阅导出图片)。
  • 注册(可选): 将导出的 COG 重新注册到 Earth Engine 中,作为 新资源以进行进一步分析(请参阅 COG 注册)。

准备好开始了吗?请按照详细的 COG 注册指南注册您的 第一个资源。