Контейнер GCS gs://alphaearth_foundations содержит файлы COG (Cloud Optimized GeoTIFF), которые вместе составляют ежегодный набор данных AlphaEarth Foundations по встраиванию спутниковых данных. Он содержит ежегодные встраивания за период с 2017 по 2024 год включительно.
Лицензия
Этот набор данных лицензирован в соответствии с CC-BY 4.0 и требует следующего текста с указанием авторства: « Набор данных AlphaEarth Foundations Satellite Embedding создан компаниями Google и Google DeepMind».
Данный контейнер настроен по принципу «платит запрашивающая сторона», поэтому загрузка данных может повлечь за собой исходящие и другие расходы.
Структура каталога
Они разделены на каталоги по годам; каталог каждого года разделен на 120 подкаталогов, по одному на зону UTM, названия которых отражают номер зоны и полушарие ( N или S ).
В каждом каталоге находится несколько файлов COG. Эти файлы содержат все данные о пикселях для данной зоны UTM.
Структура файла
Каждый файл имеет размер 8192x8192 пикселей и 64 канала. После применения преобразования деквантования (см. ниже) величина каждого пикселя нормализована так, чтобы её евклидова длина была равна 1.
Файлы содержат обзорные слои размером 4096x4096 пикселей, 2048x2048 пикселей и так далее, вплоть до обзорного слоя верхнего уровня размером 1x1. Эти обзорные слои построены таким образом, что каждый обзорный пиксель представляет собой среднее значение пикселей с самым высоким разрешением, находящихся под этим обзорным пикселем, где величина среднего значения нормализована до длины 1.
Каналы соответствуют осям A00 – A63 набора данных Satellite Embedding. В 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 Satellite Embedding. В данном примере этот файл соответствует части изображения Earth Engine GOOGLE/SATELLITE_EMBEDDING/V1/ANNUAL/x8qqwcsisbgygl2ry . Две десятичные части имени файла указывают, где находятся значения COG относительно изображения Earth Engine: сначала смещение по оси Y, а затем смещение по оси X. В данном случае начало координат COG находится в точке (0, 8192) относительно начала координат изображения Earth Engine. Это связано с необходимостью подразделить каждое изображение 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 (например, после мозаики нескольких файлов), необходимо использовать описанную ниже процедуру. Стандартные методы построения пирамид растровых изображений (например, использование gdaladdo с опцией -r average для необработанных целочисленных значений) не дадут корректных результатов.
- Деквантование: преобразование необработанных 8-битных целых чисел в числа с плавающей точкой с использованием метода, описанного выше.
- Сумма векторов: выполнить поэлементное суммирование деквантованных векторов.
- Нормализация: вычислить евклидову норму полученного вектора суммы и разделить ее на норму, чтобы нормализовать ее до единичной длины.
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 .
Поскольку по названиям файлов невозможно определить, какую область мира они охватывают, для файлов gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.parquet , gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.gpkg и gs://alphaearth_foundations/satellite_embedding/v1/annual/aef_index.csv был создан индекс в трёх форматах (GeoParquet, GeoPackage и CSV). Этот индекс содержит одну запись для каждого файла в наборе данных. Информация, представленная для каждого файла, представлена следующим образом:
- Геометрия файла представлена как полигон WGS84 (т.е. EPSG:4326). В формате CSV это столбец
WKT. Подробнее о том, как вычисляется эта геометрия, см. ниже. -
crs: CRS зоны UTM, к которой принадлежит это изображение в виде кода EPSG, напримерEPSG:32610. -
year: год, который охватывает изображение. -
utm_zone: Зона UTM изображения, например10N. -
utm_west,utm_south,utm_east,utm_north: границы UTM массива необработанных пикселей. Это не отражает никакой геометрической обработки и включает все пиксели, независимо от того, являются ли они корректными. -
wgs84_west,wgs84_south,wgs84_east,wgs84_north: минимальная/максимальная долгота и широта геометрии WGS84.
Обработка геометрии
Массив пикселей изначально находится в некоторой зоне UTM, поэтому в этой зоне ограничивающий прямоугольник массива пикселей представляет собой простой прямоугольник. Этот ограничивающий прямоугольник преобразуется в многоугольник в системе WGS84. Этот многоугольник включает в себя ряд дополнительных точек, так что его края точно следуют кривым линиям в системе WGS84, в которые преобразуются прямые линии в системе UTM. Этот многоугольник не учитывает корректность/некорректность пикселей изображения, а учитывает только границы массива пикселей изображения.
Затем полигон обрезается по минимальной и максимальной долготе зоны UTM изображения. На практике это может привести к тому, что он не включит несколько корректных пикселей, выходящих за пределы зоны UTM. Исключение этих пикселей из индекса не должно вызвать проблем: какое-либо изображение из соседней зоны UTM должно покрывать эту область.
Обратите внимание, что обрезка по минимальной/максимальной долготе зоны UTM означает, что ни один полигон не пересекает антимеридиан, что должно немного упростить обработку этого файла.