你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如 支持的数据类型中所述,Microsoft Planetary Computer 专业版支持在 NetCDF、HDF5、Zarr 和 GRIB2 格式中导入、云优化和可视化多维数据集文件。 虽然本地存储上复杂且历史上很繁琐,但这些资产已针对行星计算机专业版的云环境进行了优化,进一步使它们成为构建和存储多维数据(如卫星图像和气候模型)的有效工具。
引入数据多维数据集
数据多维数据集文件可以像其他光栅数据类型一样引入到 Planetary Computer Pro 中。 与其他日期格式一样,必须先将资产和关联的 Spatio 临时资产目录 (STAC) 项存储在 Azure Blob 存储中。 与其他二维光栅资产不同,引入某些数据多维数据集格式(NetCDF 和 HDF5)时会执行更多的云优化步骤。
注释
GRIB2 数据的摄取方式与其他二维光栅数据相同(无其他云优化步骤),因为它们本质上是包含一个关联索引文件的 2D 光栅集合,该文件在云环境中有效地引用了数据。 同样,Zarr 已经是云原生格式,因此引入时不会进行任何优化。
多维数据集的云优化
引入包含 NetCDF 或 HDF5 资产的 STAC 项时,资产经过云优化,而不是通过转换数据本身,而是通过生成可提高数据访问效率的引用文件。
通过 Kerchunk 清单进行云优化
与在被引入 Planetary Computer Pro 时转换为云优化 GeoTIFF (COG) 的 2D 光栅数据不同,数据多维数据集资产通过生成引用文件或 Kerchunk 清单进行优化。 Kerchunk 是一个开源 Python 库,用于创建这些区块清单,或 JSON 文件,这些文件使用 Zarr 样式的区块键描述数据多维数据集的结构及其区块,这些区块映射到这些区块所在的原始文件中的字节范围。 生成后,Kerchunk 文件与资产一起存储在 Blob 存储中,STAC 项将扩充为包含对这些清单的引用,从而优化云环境的数据访问。
触发云优化的 STAC 项属性
在集合的 STAC 项中,数据立方体资产必须满足以下条件才能云优化:
- 资产格式是以下类型之一:
application/netcdfapplication/x-netcdfapplication/x-hdf5
- 该资产具有一个
roles字段,该字段的角色列表中包含data或visual。
如果满足这些条件,则会在 Blob 存储中与资产一起生成 Kerchunk 清单 (assetid-kerchunk.json)。
注释
资产格式类型application/x-hdf 通常对应于 HDF4 资产。 GeoCatalog 引入目前不支持为 HDF4 创建虚拟 kerchunk 清单,因为它增加了复杂性并具有多种变体。
STAC 项扩充
对于 STAC 项中的每个优化资产,将添加以下字段:
-
msft:datacube_converted: true– 指示已应用扩充。 -
cube:dimensions– 一个字典,其中列出了数据集维度及其属性。 -
cube:variables– 描述数据集变量及其属性的字典。
这些变量应该用于渲染配置,以确保 Explorer 中的数据多维数据集资产的可视化效果以最高效的方式读取和渲染数据。
云优化的数据立方体的优点
数据立方云端优化可提高数据访问性能,特别是在可视化流程中。 如果存在 Kerchunk 清单文件,与加载整个数据集文件相比,它可以更快地进行访问。
Microsoft Planetary Computer Pro Explorer 和 Tiling API 会优先使用 Kerchunk 清单来执行数据读取操作,如果清单与原始资产位于同一 Blob 存储目录中。
使用基于分块的基于引用的方法读取数据速度更快,因为它避免将整个文件读取到内存中。
禁用数据立方体云优化
如果决定不想使用云优化的数据多维数据集资产,请在引入前从 STAC 项的 JSON 中的资产的 data 列表里删除 visual 和 roles,以禁用云优化。
Zarr 数据导入和更新
如前所述,Zarr 本质上是云原生格式,因此引入时不会进行额外的优化,并且不需要修改其 STAC 项。 但是,如果计划动态更新 Zarr 资产并重新引入 STAC 项以使用最新版本,则需要注意两种更新方法: 追加 和 同步。
Append
如果将新数据添加到本地存储的 Zarr 存储区,但想要更新存储在行星计算机专业版中的版本,则需要重新引入 STAC 项。 重新引入该项时,默认行为是检查资产中是否有任何新数据,并将其添加到存储在云中的数据中。 在重新引入之前,无需修改 STAC 项。
同步
如果从本地存储的 Zarr 存储中删除数据,则重新引入相同的 STAC 项将不允许基于云的版本与计算机上的版本匹配,因为 追加 功能查找新数据,但不会根据任何缺失的数据进行调整。 这就是 同步 发挥作用的地方。 通过将 STAC 项目修改为包含一个参数,以指示您希望将现有数据与新数据进行同步,然后重新引入该修改后的 STAC 项目,行星计算机专业版中只会提供来自 Zarr 存储的最新数据。 对 STAC 项的修改应如下所示:
{
...
"assets": {
"pr": {
"href": "https://managedstorage.azure.com/collection-container/somestuff/pr.zarr",
"msft:ingestion": {
"directory": "sync"
}
}
}
}