Inicio rápido: Introducción a los cubos de datos en Microsoft Planetary Computer Pro

Prerrequisitos

Configuración del origen de ingesta

Antes de empezar a ingerir datos del cubo de datos, deberá configurar un origen de ingesta, que funcionará como sus credenciales para acceder a la cuenta de Blob Storage donde se almacenan recursos y elementos de STAC. Puede configurar un origen de ingesta mediante la identidad administrada o el token de SAS.

Creación de una colección de cubos de datos

Una vez configurado el origen de ingesta, podrá crear una colección para los activos del cubo de datos. Los pasos para crear una colección se pueden seguir en Creación de una colección STAC con Microsoft Planetary Computer Pro mediante Python.

Ingesta de recursos de cubo de datos

El inicio del proceso de ingesta para los datos del cubo de datos y otros tipos de datos se puede seguir en Introducción a la ingesta. Sin embargo, como se describe en Información general del cubo de datos, la ingesta es el paso del control de datos de Planetary Computer Pro que difiere para estos tipos de archivo. Aunque los datos GRIB2 y los elementos STAC asociados se ingieren igual que cualquier otro archivo ráster bidimensional, los recursos netCDF y HDF5 se someten a un enriquecimiento de datos adicional. La generación de manifiestos kerchunk se documenta en Información general del cubo de datos, pero lo que es importante tener en cuenta es que los recursos Kerchunk se agregarán al contenedor de Blob Storage junto con los recursos originales y se agregará un campo adicional cube:variables al JSON del elemento STAC. Esto es importante al representar estos tipos de datos en el Explorador Planetary Computer Pro.

Configuración de una colección de cubos de datos

La configuración de la colección de cubos de datos es otro paso que tendrá un aspecto ligeramente diferente al de otros tipos de datos. Puede seguir los pasos descritos en Configurar una colección con la interfaz web Microsoft Planetary Computer Pro para configurar la colección de cubos de datos, pero deberá tener en cuenta las siguientes diferencias al compilar la configuración de representación:

Configuración de representación para recursos de NetCDF y HDF5

Recuerde que un argumento de configuración de representación estándar en formato JSON tiene este aspecto:

[
  {
    "id": "prK1950-06-30",
    "name": "prK1950-06-30",
    "type": "raster-tile",
    "options": "assets=pr-kerchunk&subdataset_name=pr&rescale=0,0.01&colormap_name=viridis&datetime=1950-06-30",
    "minZoom": 1
  }
]

El campo options es donde querrá utilizar el recurso Kerchunk optimizado para la nube, en lugar del recurso original enumerado en el elemento de STAC. También deberá incluir el subdataset_name argumento , que es el nombre de la variable que desea representar.

Configuración de representación de recursos GRIB2

El options campo de la configuración de representación de recursos GRIB2 tiene un aspecto similar al ejemplo anterior, pero no es necesario incluir el subdataset_name argumento . Esto se debe a que los datos GRIB2 ya están estructurados de forma óptima y se hace referencia a ellos a través de sus archivos de índice. El assets argumento, en este caso, representa la banda o capa de ráster 2D que desea visualizar. A continuación se muestra un ejemplo de una configuración de representación de GRIB2:

[ 
 {
    "id": "render-config-1",
    "name": "Mean Zero-Crossing Wave Period",
    "description": "A sample render configuration. Update `options` below.",
    "type": "raster-tile",
    "options": "assets=data&subdataset_bands=1&colormap_name=winter&rescale=0,10",
    "minZoom": 1
 }
]

Configuración de renderización para los activos de Zarr

El options campo de los recursos de Zarr es similar a NetCDF y HDF5, pero hay dos requisitos importantes:

  1. Seleccione un único segmento de tiempo para la representación mediante sel=time=....
  2. Reduzca los datos a una salida 2D antes de la representación.

Si no se contraen dimensiones adicionales, la renderización puede producir errores como Source data must be 1 band.

Puede obtener más información sobre el sel parámetro en Xarray DataArray.sel. La siguiente es una configuración mínima de renderizado en Zarr para procesar un punto de tiempo específico y un resultado en dos dimensiones:

[
    {
        "id": "era5-zarr-single-time",
        "name": "ERA5 single timestep",
        "type": "raster-tile",
        "options": "assets=data&subdataset_name=precipitation_amount_1hour_Accumulation&sel=time=2024-01-01&sel_method=nearest&colormap_name=viridis&rescale=0,0.01",
        "minZoom": 12
    }
]

Visualización de recursos de cubo de datos en el Explorador

Una vez que los recursos del cubo de datos se ingieren y configuran, puede visualizarlos en el Explorador de Computer Pro Planetary. Se puede seguir una guía paso a paso para usar el Explorador en Inicio rápido: Uso del Explorador en Microsoft Planetary Computer Pro.

Aunque el Ordenador Planetario de Microsoft Pro incluye un icono que se puede usar para visualizar algunos recursos de cubo de datos, hay algunas advertencias que se deben tener en cuenta cuando se trata de cada tipo de datos admitido.

Visualización de NetCDF y HDF5

No todos los conjuntos de datos de NetCDF que se pueden ingerir en el equipo planetario de Microsoft son compatibles con el icono de visualización de Planetary Computer Pro. Un conjunto de datos debe tener ejes X e Y, coordenadas de latitud y longitud, y dimensiones espaciales y límites que se van a visualizar. Por ejemplo, un conjunto de datos en el que la latitud y la longitud son variables, pero no coordenadas, no es compatible con el icono de Planetary Computer Pro.

Antes de intentar visualizar el conjunto de datos de NetCDF o HDF5, puede usar lo siguiente para comprobar si cumple los requisitos.

  1. Instalación de las dependencias necesarias

    pip install xarray[io] rioxarray cf_xarray
    
  2. Ejecute la siguiente función:

    import xarray as xr
    import cf_xarray
    import rioxarray
    
    def is_dataset_visualizable(ds: xr.Dataset):
        """
        Test if the dataset is compatible with the Planetary Computer tiler API.
        Raises an informative error if the dataset is not compatible.
        """
        if not ds.cf.axes:
            raise ValueError("Dataset does not have CF axes")
        if not ds.cf.coordinates:
            raise ValueError("Dataset does not have CF coordinates")
        if not {"X", "Y"} <= ds.cf.axes.keys():
            raise ValueError(f"Dataset must have CF X and Y axes, found: {ds.cf.axes.keys()}")
    
        if not {"latitude", "longitude"} <= ds.cf.coordinates.keys():
            raise ValueError("Dataset must have CF latitude and longitude coordinates, "
                             f"actual: {ds.cf.coordinates.keys()}")
    
        if ds.rio.x_dim is None or ds.rio.y_dim is None:
            raise ValueError("Dataset does not have rioxarray spatial dimensions")
    
        if ds.rio.bounds() is None:
            raise ValueError("Dataset does not have rioxarray bounds")
    
        left, bottom, right, top = ds.rio.bounds()
        if left < -180 or right > 180 or bottom < -90 or top > 90:
            raise ValueError("Dataset bounds are not valid; they must be within [-180, 180] and [-90, 90]")
    
        if ds.rio.resolution() is None:
            raise ValueError("Dataset does not have rioxarray resolution")
    
        if ds.rio.transform() is None:
            raise ValueError("Dataset does not have rioxarray transform")
    
        print("✅ Dataset is compatible with the Planetary Computer tiler API.")
    

Visualización de GRIB2

Los recursos GRIB2 que se han ingerido en Microsoft Planetary Computer Pro se pueden visualizar en el Explorador siempre que tengan un archivo de índice asociado (.idx) almacenado en el mismo contenedor de Blob Storage. El archivo index se genera durante la ingesta y es necesario para obtener un acceso óptimo y la representación de datos GRIB2.

Visualización de Zarr

Los recursos de Zarr ingeridos en el Ordenador Planetario de Microsoft Pro se pueden visualizar en el Explorador siempre que la Configuración de representación especifique qué variable y segmento de tiempo se van a representar mediante el parámetro sel en el campo options. Si no se hace, el Explorador intentará representar todas las variables y fragmentos de tiempo del almacén de Zarr de una sola vez, lo que provocará un fallo en el Explorador.

El tamaño del almacén de Zarr y de los fragmentos espaciales también afectará al rendimiento. Debe procurar mantener el tamaño total de un almacén de Zarr a menos de 2 GB, y cada bloque a menos de 100 MB, para obtener un rendimiento óptimo del generador de mosaicos.

Limitaciones de visualización de Zarr y problemas conocidos

Comportamiento del control deslizante de tiempo (limitación conocida)

Nota:

El comportamiento del control deslizante de tiempo para Zarr está limitado actualmente. El control de desplazamiento de tiempo del Explorador solo aparece cuando se detecta correctamente una dimensión temporal durante la ingesta.

Incluso cuando los recursos de Zarr contienen valores de tiempo, la ingesta puede no detectar metadatos temporales para algunos conjuntos de datos. En esos casos, el control de desplazamiento temporal no se renderizará y verá un solo punto en el tiempo a la vez en la configuración de renderización (por ejemplo, sel=time=2024-01-01).

Para habilitar el comportamiento con reconocimiento de tiempo, los metadatos de STAC deben incluir una dimensión temporal en cube:dimensions con:

  • type: temporal
  • extent
  • step

En el caso de los datos de origen de Zarr, siga las convenciones de tiempo de CF siempre que sea posible, por ejemplo:

  • standard_name="time"
  • axis="T"

Estas convenciones son necesarias para la interpretación coherente de metadatos, pero debido a las limitaciones actuales, no siempre son suficientes para garantizar la compatibilidad con el control deslizante de tiempo para cada conjunto de datos de Zarr.

Notas de Kerchunk

Kerchunk puede mejorar el rendimiento de los patrones de acceso multidimensional, pero no resuelve los problemas de control del tiempo cuando no se detectan dimensiones temporales durante la ingestión.

Algunos conjuntos de datos de Zarr también pueden producir errores durante el procesamiento de índices con errores como Index must be monotonic increasing or decreasing.

Plan de desarrollo y soporte técnico futuro

El soporte técnico actual y planeado es:

  • Zarr v2: compatible hoy
  • Zarr v3: aún no es compatible, se prevé incorporarlo en el futuro
  • Visualización y control temporal de Zarr con varios puntos de tiempo: disponible ya de forma parcial y se prevé añadir más mejoras

Control deslizante de tiempo para la visualización del cubo de datos

Si los recursos del cubo de datos tienen un componente temporal, puede usar el control deslizante de tiempo en el Explorador para visualizar los cambios a lo largo del tiempo. El control deslizante de tiempo aparecerá automáticamente si los elementos STAC contienen recursos con una time dimensión con un extent y step campo.

Nota:

Para los recursos de Zarr, consulte Limitaciones de visualización de Zarr y problemas conocidos para conocer las restricciones actuales de los controles de desplazamiento de tiempo y los patrones necesarios para la configuración de renderizado.