Cubos de datos en Microsoft Planetary Computer Pro

Como se mencionó en Tipos de datos admitidos, Microsoft Planetary Computer Pro admite la ingesta, la optimización en la nube y la visualización de archivos de cubo de datos en formatos NetCDF, HDF5, Zarr y GRIB2. Aunque es complejo e históricamente complicado en el almacenamiento local, estos recursos están optimizados para entornos en la nube con Planetary Computer Pro, lo que les permite más herramientas eficaces para estructurar y almacenar datos multidimensionales como imágenes satélite y modelos climáticos.

Ingesta de cubos de datos

Los archivos de cubo de datos se pueden ingerir en Planetary Computer Pro de la misma manera que otros tipos de datos ráster. Al igual que con otros formatos de fecha, los recursos y los elementos asociados del Catálogo de activos temporales (STAC) de Spatio deben almacenarse primero en Azure Blob Storage. A diferencia de otros recursos ráster bidimensionales, sin embargo, se producen más pasos de optimización en la nube tras la ingesta de determinados formatos de cubo de datos (NetCDF y HDF5).

Nota:

Los datos GRIB2 se ingieren de la misma manera que otros datos ráster bidimensionales (sin otros pasos de optimización en la nube), ya que son básicamente una colección de tramas 2D con un archivo de índice asociado que hace referencia a los datos de forma eficaz en entornos en la nube. Del mismo modo, Zarr ya es un formato nativo de la nube, por lo que no se realiza ninguna optimización tras la ingesta.

Optimización en la nube de cubos de datos

Cuando se ingiere un elemento de STAC que contiene recursos de NetCDF o HDF5, los recursos están optimizados en la nube, no mediante la transformación de los datos en sí, sino mediante la generación de archivos de referencia que permiten el acceso a datos más eficaz.

Optimización de la nube mediante manifiestos Kerchunk

A diferencia de los datos de trama 2D que se transforman en objetos Geotiff optimizados para la nube (COG) cuando se ingieren en Planetary Computer Pro, los recursos del cubo de datos se optimizan a través de la generación de archivos de referencia o manifiestos Kerchunk. Kerchunk es una biblioteca de Python de código abierto que crea estos manifiestos de fragmentos o archivos JSON que describen la estructura del cubo de datos y sus fragmentos mediante claves de fragmentos de estilo Zarr que se asignan a los intervalos de bytes del archivo original donde residen esos fragmentos. Una vez generados, los archivos Kerchunk se almacenan en Blob Storage junto con los recursos y los elementos de STAC se enriquecen para incluir referencias a estos manifiestos, lo que optimiza el acceso a datos para entornos en la nube.

Propiedades del elemento STAC que desencadenan la optimización en la nube

Dentro de los elementos STAC de la colección, se deben cumplir las condiciones siguientes para que un recurso de cubo de datos esté optimizado para la nube:

  • El formato de activo es uno de los siguientes tipos:
    • application/netcdf
    • application/x-netcdf
    • application/x-hdf5
  • El recurso tiene un roles campo que incluye data o visual dentro de su lista de roles.

Si se cumplen estas condiciones, se genera un manifiesto Kerchunk (assetid-kerchunk.json) en Blob Storage junto con el recurso.

Nota:

El tipoapplication/x-hdf de formato de recurso suele corresponder a los recursos de HDF4. La ingesta de GeoCatalog no admite actualmente la creación de manifiestos Kerchunk virtuales para HDF4 debido a su complejidad adicional y varias variantes.

Enriquecimiento de elementos de STAC

Para cada recurso optimizado dentro del elemento STAC, se agregan los siguientes campos:

  • msft:datacube_converted: true : indica que se aplicó el enriquecimiento.
  • cube:dimensions : un diccionario que enumera las dimensiones del conjunto de datos y sus propiedades.
  • cube:variables : diccionario que describe las variables de conjunto de datos y sus propiedades.

Estas variables deben usarse en las configuraciones de renderizado para asegurarse de que la visualización de los activos de cubo de datos en el Explorador lea y represente los datos de manera más eficiente.

Ventajas de los cubos de datos optimizados para la nube

La optimización de la nube del cubo de datos mejora el rendimiento del acceso a los datos, especialmente para los flujos de trabajo de visualización. Cuando hay un manifiesto Kerchunk, permite un acceso más rápido en comparación con la carga de todo el archivo de conjunto de datos.

Microsoft Planetary Computer Pro Explorer y las API de mosaico usan de forma preferente el manifiesto Kerchunk para las operaciones de lectura de datos, si existen en el mismo directorio de almacenamiento de blobs que el recurso original.

La lectura de datos mediante un enfoque fragmentado basado en referencias es más rápido porque evita leer todo el archivo en memoria.

Desactivar la optimización en la nube del cubo de datos

Si decide que no desea trabajar con recursos de cubo de datos optimizados para la nube, deshabilite la optimización de la nube quitando data y visual de la lista de recursos roles en el elemento JSON de STAC antes de la ingesta.

Ingesta y actualizaciones de datos de Zarr

Como se mencionó anteriormente, Zarr es inherentemente un formato nativo de la nube, por lo que no se produce ninguna optimización adicional cuando se ingiere y no es necesaria ninguna modificación de sus elementos de STAC. Sin embargo, si tiene previsto actualizar dinámicamente los recursos de Zarr y volver a escribir los elementos de STAC para que funcionen con la versión más reciente, debe tener en cuenta dos métodos de actualización: Append y Sync.

Append

Si agrega nuevos datos a un almacén de Zarr almacenado localmente, pero quiere actualizar la versión almacenada en Planetary Computer Pro, debe volver a usar el elemento STAC. Cuando se vuelve a ingerir ese elemento, el comportamiento predeterminado es revisar los activos para detectar cualquier dato nuevo y añadirlo a los datos que ya están almacenados en la nube. No es necesario realizar ninguna modificación en el elemento STAC antes de la reingestión.

Sincronizar

Si elimina datos de un almacén de Zarr almacenado localmente, al volver a ingerir el mismo elemento de STAC no permitirá que la versión en la nube coincida con la versión de su máquina, ya que la funcionalidad de agregar busca nuevos datos, pero no se ajusta según los datos faltantes. Aquí es donde entra en juego la sincronización . Al modificar el elemento STAC para incluir un parámetro que indique que desea sincronizar los datos existentes con los nuevos y volver a ingestar ese elemento STAC modificado, solo los datos más recientes del almacén de Zarr están disponibles en Planetary Computer Pro. La modificación del elemento STAC debe aparecer de la siguiente manera:

{
    ...
    "assets": {
        "pr": {
            "href": "https://managedstorage.azure.com/collection-container/somestuff/pr.zarr",
            "msft:ingestion": {
              "directory": "sync"
            }
        }
    }
}