AlphaEarth Foundations GCS 数据

gs://alphaearth_foundations GCS 存储分区包含 COG(云优化 GeoTIFF)文件,这些文件共同构成了 AlphaEarth Foundations 年度 卫星 嵌入 数据集。它包含 2017 年到 2025 年(含)的年度嵌入。

Google 致力于持续生成年度卫星嵌入图层,并且会提前至少一年通知任何预计的交付变更,但前提是 USGS 和 ESA 持续提供数据集生成所依赖的输入数据流。

许可

此数据集已获得 CC-BY 4.0 许可,并且需要提供以下提供方信息:“AlphaEarth Foundations 卫星嵌入 数据集 由 Google 和 Google DeepMind 制作。”

截至 2026 年 7 月,此存储分区设置为“提供方付费”。

目录结构

这些文件按年份划分为目录;每个年份的目录划分为 120 个子目录,每个子目录对应一个 UTM 区域,其名称反映了区域编号和半球(NS)。

每个目录中都有许多 COG 文件。这些文件包含该 UTM 区域的所有像素数据。

文件结构

每个文件的尺寸为 8192x8192 像素,包含 64 个通道。应用反量化映射(见下文)后,每个像素的大小都已归一化,使其欧几里得长度为 1。

这些文件包含 4096x4096 像素、2048x2048 像素等概览图层,一直到 1x1 顶级概览图层。这些概览图层的构建方式如下:每个概览像素都是该概览像素下最高分辨率像素的平均值,其中平均值的大小已归一化为长度 1。

这些通道按顺序对应于卫星嵌入数据集的 A00A63 轴。COG 也包含这些通道的命名。

每个通道中每个像素的值都是带符号的 8 位整数。反量化中介绍了如何将 这些值映射到嵌入的 原始值(范围为 [-1, 1])。

值 -128 对应于屏蔽的像素。如果它出现在一个通道中,则会出现在所有通道中。COG 反映了这一点(即,它们的 NoData 值设置为 -128)。

每个文件的名称也包含一些信息。例如,考虑名为 gs://alphaearth_foundations/satellite_embedding/v1/annual/2019/1S/x8qqwcsisbgygl2ry-0000008192-0000000000.tiff 的文件。 从文件名中可以看出,此文件是 2019 年年度嵌入的一部分,适用于 UTM 区域 1S(区域 1,南半球)。基本文件名 x8qqwcsisbgygl2ry-0000008192-0000000000 用于将此文件链接到相应的 Earth Engine 卫星嵌入图片名称。在此示例中,此文件对应于 Earth Engine 图片 GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL/x8qqwcsisbgygl2ry 的一部分。文件名的两个十进制部分指定了此 COG 的值相对于该 Earth Engine 图片的位置,即 Y 中的偏移量,然后是 X 中的偏移量。在这种情况下,COG 的像素原点相对于 Earth Engine 图片的原点位于 (0, 8192)。 这是因为有必要细分每个 Earth Engine 图片(尺寸为 16384x16384 像素),以使生成的 COG 不会过于笨重。

反量化

如需将每个像素的每个通道中的原始带符号 8 位值(介于 -127 和 127 之间,因为 -128 保留为“无数据”值)转换为可用于分析的浮点值(介于 -1 和 1 之间),需要执行的映射为

  • 除以 127.5
  • 平方
  • 乘以原始值的符号

这在 NumPy 中表示为

  # values is a NumPy array of raw pixel values
  de_quantized_values = ((values / 127.5) ** 2) * np.sign(values)

在 Earth Engine 中,相应的操作为

  var de_quantized_values = values.divide(127.5).pow(2).multiply(values.signum());

创建降采样金字塔

如果您打算从这些 COG 的基本分辨率图层创建自己的降采样版本或外部概览(例如,在拼接多个文件后),则必须使用以下过程。标准栅格金字塔技术(例如,对原始整数值使用带有 -r average 的 gdaladdo)不会产生正确的结果。

  1. 反量化:使用反量化中介绍的方法将原始 8 位整数转换为浮点数。
  2. 求和向量:对反量化向量执行元素级求和。
  3. 归一化:计算所得和向量的欧几里得范数,并将其除以该范数,以将其重新归一化为单位长度。
import numpy as np

# Assuming 'raw_values' is a NumPy array of shape (N, 64)
# containing the raw signed 8-bit integers from N pixels.
# N = 4 for a 2x2 aggregation, for example.

# 1. De-quantize
de_quantized_values = ((raw_values / 127.5) ** 2) * np.sign(raw_values)

# 2. Sum the de-quantized vectors
sum_vec = np.sum(de_quantized_values, axis=0)  # Shape (64,)

# 3. Normalize the sum vector
norm = np.linalg.norm(sum_vec)
# Add epsilon to prevent division by zero
pyramided_vec = sum_vec / (norm + 1e-9)

# 'pyramided_vec' is the correctly downsampled 64-dimensional unit vector.

COG 中的概览图层是使用此过程生成的;如果它们符合您的需求,您可以立即使用这些概览图层,而无需进行任何其他计算。

清单和索引

您可以在 gs://alphaearth_foundations/satellite_embedding/v1/annual/manifest.txt 中找到此数据集中的文件列表。

由于无法从文件名中确定它们所涵盖的世界区域,因此还提供了索引,该索引以三种形式(GeoParquet、GeoPackage 和 CSV)提供,位于文件 gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.parquetgs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.gpkggs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.csv 中。此索引包含数据集中每个文件的一个条目。为每个文件提供的信息如下:

  • 文件的几何图形,采用 WGS84(即 EPSG:4326)多边形的形式。在 CSV 形式中,此信息位于 WKT 列中。如需了解计算详情,请参阅几何图形处理
  • crs:此图片所属的 UTM 区域的 CRS,采用 EPSG 代码的形式,例如 EPSG:32610
  • year:图片涵盖的年份。
  • utm_zone:图片的 UTM 区域,例如 10N
  • utm_westutm_southutm_eastutm_north:原始像素数组的 UTM 边界。这不反映任何几何图形处理,并且包含所有像素,无论它们是否有效。
  • wgs84_westwgs84_southwgs84_eastwgs84_north:WGS84 几何图形的最小和最大经纬度。

几何图形处理

像素数组本身位于某个 UTM 区域中,因此在该 UTM 区域中,像素数组的边界框是一个简单的矩形。该边界框在 WGS84 中转换为多边形。此多边形包含许多额外的点,以便其边缘紧密跟随 WGS84 中 UTM 中的直线转换成的曲线。此多边形不考虑图片中像素的有效性,仅考虑图片像素数组的边界。

然后,将多边形裁剪为图片 UTM 区域的最小和最大经度。实际上,这可能会导致它不包含一些超出 UTM 区域边缘的有效像素。从索引中省略这些像素应该不会导致任何问题:来自相邻 UTM 区域的某些图片应涵盖该区域。

请注意,裁剪为 UTM 区域的最小和最大经度意味着没有多边形会跨越反子午线,这应该会使处理此文件稍微简单一些。