你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
先决条件
- 具有活动订阅的 Azure 帐户; 免费创建帐户。
- Azure Microsoft Planetary Computer Pro GeoCatalog 资源
- Blob 存储帐户 创建 Blob 存储帐户。
- 包含数据立方体资产(NetCDF、HDF5、GRIB2)、STAC 项目和静态 STAC 目录的 Blob 存储容器。 了解如何创建 STAC 项。
设置引入源
在开始引入数据多维数据集数据之前,需要设置引入源,该源将用作凭据来访问存储资产和 STAC 项的 Blob 存储帐户。 可以使用 托管标识 或 SAS 令牌设置引入源。
创建数据立方体集合
一旦设置了您的引入源,您可以为您的数据立方体资产创建一个集合。 可以参考 使用 Python 和 Microsoft Planetary Computer Pro 创建 STAC 集合 中的步骤来创建一个集合。
引入数据多维数据集资产
可以在引入概述中遵循数据多维数据集数据的引入过程和其他数据类型的启动。 但是,如数据多维数据集概述中所述,在Planetary Computer Pro的数据处理过程中,引入是与这些文件类型不同的步骤。 虽然 GRIB2 数据和关联的 STAC 项与任何其他二维光栅文件一样引入,但 NetCDF 和 HDF5 资产会进行进一步的数据扩充。
数据多维数据集概述中记录了 Kerchunk 清单的生成,但请务必注意的是,Kerchunk 资产将与原始资产一起添加到 Blob 存储容器,并且一个额外的 cube:variables 字段会添加到 STAC 项 JSON。 在行星计算机专业资源管理器中呈现这些数据类型时,这一点很重要。
配置数据多维数据集集合
数据多维数据集集合的配置是另一个步骤,该步骤看起来与其他数据类型略有不同。 可以按照 Microsoft Planetary Computer 专业版 Web 界面配置集合 中所述的步骤来配置您的数据立方体集合,但在构建呈现配置时,您需要注意以下差异:
NetCDF 和 HDF5 资产的呈现配置
请记住,JSON 格式的标准呈现配置参数如下所示:
[
{
"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",
"minZoom": 1,
"info_options": "assets=pr-kerchunk&subdataset_name=pr"
}
]
options 字段用于利用云优化的 Kerchunk 资产,而不是 STAC 项中列出的原始资产。 还需要包含 subdataset_name 参数,该参数是要呈现的变量的名称。
info_options 字段为此集合启用资源管理器的时间滑块。 它使用与 options 相同的 URL 查询字符串格式,但应仅包含用于发现 /info 所需的参数,通常是 assets 和 subdataset_name。 省略样式和切片参数,如 rescale、 colormap_name和 datetime。 当你希望滑块继续可用时,不要将 datetime=... 固定在 options 中,因为硬编码的值会替代此滑块。 如果省略 info_options,则资源管理器会回退为读取 STAC 项目元数据的时间限制(cube:dimensions、start_datetime、end_datetime)。
GRIB2 资产呈现配置
options GRIB2 资产的呈现配置字段类似于上一个示例,但无需包含subdataset_name参数。 这是因为 GRIB2 数据已通过索引文件以最佳方式进行结构化和引用。 在本例中,该 assets 参数表示要呈现的带或二维光栅层。 下面是 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,
"info_options": "assets=data"
}
]
对于 GRIB2,将 info_options 设置为 options 中使用的资产键。 添加 info_options 后,即可启用 Explorer 的时间滑块,该滑块会直接从 Tiler 的 /info 端点发现可用的 GRIB 波段/消息索引。 如果你的 GRIB 集合为不同资源提供了多种渲染配置,请向每个应驱动滑块的渲染选项添加 info_options。
Zarr资产的呈现配置
options Zarr 资产的字段与 NetCDF 和 HDF5 类似,但有两个重要的要求:
- 使用
sel=time=...选择单个时间切片进行呈现。 - 在渲染之前将数据简化为二维输出。
如果未折叠其他维度,呈现可能会失败,并出现 Source data must be 1 band 等错误。
可以在 sel 中详细了解参数。 以下是单个时间步和 2D 输出的最小工作 Zarr 呈现配置:
[
{
"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
}
]
在资源管理器中可视化数据多维数据集资产
引入和配置数据多维数据集资产后,可以在 Planetary Computer Pro 资源管理器中将其可视化。 有关使用资源管理器的分步指南,请参阅 快速入门:在 Microsoft 行星计算机专业版中使用资源管理器。
虽然 Microsoft Planetary Computer Pro 包含一个可用于可视化某些多维数据集资产的平铺器;但对于每种支持的数据类型,都有一些注意事项。
NetCDF 和 HDF5 可视化效果
并非所有可以引入到Microsoft行星计算机中的 NetCDF 数据集都与行星计算机专业版的可视化图块兼容。 数据集必须具有 X 轴和 Y 轴、纬度和经度坐标以及要可视化的空间维度和边界。 例如,纬度和经度是变量而不是坐标的数据集与 Planetary Computer Pro 的平铺器不兼容。
在尝试可视化 NetCDF 或 HDF5 数据集之前,可以使用以下命令来检查它是否符合要求。
安装所需的依赖项
pip install xarray[io] rioxarray cf_xarray运行以下函数:
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.")
GRIB2 可视化效果
只要将索引文件(.idx)与 GRIB2 资产一同存储在同一 Blob 存储容器中,这些已传入 Microsoft Planetary Computer Pro 的 GRIB2 资产就可以在 Microsoft Planetary Computer Explorer 中进行可视化。 索引文件是在引入过程中生成的,是最佳访问和呈现 GRIB2 数据所必需的。
Zarr 可视化效果
引入到 Microsoft Planetary Computer Pro 中的 Zarr 资产可以在资源管理器中可视化,只要渲染配置指定使用 sel 字段中的 options 参数来渲染哪个变量和时间片段。 否则将导致资源管理器尝试同时呈现 Zarr 存储的所有变量和时间切片,这将导致资源管理器崩溃。
Zarr 存储和空间区块的大小也会影响性能。 你应该将目标设定为将 Zarr 存储的总大小保持在 2 GB 以下,并确保每个块小于 100 MB,以保证平铺器的最佳性能。
Zarr 可视化限制和已知问题
时间滑块行为(已知限制)
注释
Zarr 的时间滑块行为目前受到限制。 只有在引入过程中正确检测到时间维度时,才会出现资源管理器时间滑块。
即使 Zarr 资产包含时间值,引入也可能无法检测某些数据集的时态元数据。 在这些情况下,时间滑块不会渲染,你必须在渲染配置中一次可视化一个时间步骤(例如sel=time=2024-01-01)。
必需和建议的时态元数据
若要启用时间感知行为,STAC 元数据应包含以下时间维度 cube:dimensions :
type: temporalextentstep
对于 Zarr 源数据,请尽可能遵循 CF 时间约定,例如:
standard_name="time"axis="T"
这些约定对于一致的元数据解释是必需的,但由于当前限制,它们并不总是足以保证每个 Zarr 数据集的时间滑块支持。
Kerchunk 备注
Kerchunk 可以提高多维访问模式的性能,但在引入期间未检测到时态维度时,它无法解决时间滑块问题。
某些 Zarr 数据集在索引处理期间也可能失败,并出现错误,例如 Index must be monotonic increasing or decreasing。
时间滑块用于数据立方体可视化
如果数据多维数据集资产具有时间组件,则可以使用 Explorer 中的时间滑块来可视化随时间推移的更改。 如果你的 STAC 项包含具有time维度以及extent和step字段的资产,则时间滑块将自动显示。
注释
有关 Zarr 资产,请参阅 Zarr 可视化限制和已知问题,了解当前时间滑块的约束以及所需的渲染配置模式。