NOAA 高分辨率快速更新 (HRRR) stactools 包
项目描述
stactools-noaa-hrrr
- 名称:noaa-hrrr
- 包:
stactools.noaa_hrrr
- stactools-noaa-hrrr 在 PyPI
- 所有者:@hrodmn
- 数据集主页
- 使用的STAC扩展
- 额外字段
noaa-hrrr:forecast_cycle_type
:标准(18小时)或扩展(48小时)noaa-hrrr:region
:CONUS 或 Alaska
- 以人类可读的形式浏览示例
- 浏览演示示例项目和集合的笔记本
此包可用于为NOAA高分辨率快速更新(HRRR)大气预报数据集生成STAC元数据。
数据已上传到AWS、Azure和Google云存储,您可以使用stactools.noaa_hrrr.stac
函数中的cloud_provider
参数选择您想要的云提供商,以使用grib
和index
href。
背景
NOAA HRRR数据集 是一个持续更新的大气预报数据产品。
数据结构
- 有两个区域:CONUS 和 Alaska
- 每小时,为每个区域生成新的每小时预报,包括许多大气属性
- 所有小时(
00-23
)在conus
区域都会获得18小时的预报 - 在
alaska
区域,每3小时生成一次预报(00
,03
,06
等) - 在
00
,06
,12
,18
小时会生成48小时的预报 - 产品之一(
subh
)获得15分钟的预报(每小时每个属性有四个),但子小时预报作为单一代码为2文件中的一个层存储,而不是单独的文件。
- 所有小时(
- 预报被分为4个产品(
sfc
,prs
,nat
,subh
) - 每个GRIB2文件有数百到数千个变量
- 每个.grib2文件都附有.grib2.idx文件,其中包含变量级元数据,包括该变量数据的起始字节(用于制作范围请求而不是读取整个文件)和一些其他描述性元数据
组织STAC元数据的考虑事项摘要
经过广泛讨论,我们决定以以下结构组织STAC元数据
-
集合:为每个区域-产品组合创建单独的集合
- 区域:
conus
和alaska
- 产品:
sfc
,prs
,nat
和subh
- 区域:
-
项目:存档中的每个GRIB文件都表示为一个项目,包含两个资产
"grib"
:包含实际数据。"index"
:.grib2.idx辅助文件。
每个GRIB文件包含从参考时间开始到特定预报小时的整个产品的所有变量的预报,因此您需要组合多个项目中的数据来构建一个预报的时间序列。
-
grib:layers
:在"GRIB"资产内部,grib:layers
属性详细说明了每个层的详细信息,包括描述、单位和字节范围。这使应用程序能够在不下载整个文件的情况下访问GRIB2文件中的特定部分。- 我们打算在测试了其他GRIB2数据集上的此规范之后,提出一个包含
grib:layers
属性的GRIB
STAC扩展来存储字节范围。 - 层级元数据值得存储在STAC中,因为您可以使用
/vsisubfile
或vrt://
来构造GDAL可以读取的特定层URI。/vsisubfile/{start_byte}_{byte_size},/vsicurl/{grib_href}
vrt:///vsicurl/{grib_href}?bands={grib_message}
,其中grib_message
是GRIB2文件中层的索引。- 在底层,GDAL的
vrt
驱动程序正在读取辅助的.grib2.idx文件并将其转换为/vsisubfile
URI。
- 在底层,GDAL的
- 我们打算在测试了其他GRIB2数据集上的此规范之后,提出一个包含
优点
- 应用程序可以使用
grib:layers
创建层特定数据集,从而便于高效的数据处理。 - 按区域和产品分割可以定义连贯的集合级数据立方体元数据,提高可访问性。
缺点
- 在STAC元数据中存储字节范围等层级元数据会导致STAC项目膨胀,因为每个GRIB2文件中有数百到数千个层。
有关更多详细信息,请参阅相关的问题讨论和拉取请求#3和#6。
STAC示例
Python使用示例
- 查看示例笔记本,了解如何创建STAC元数据以及如何使用带有
grib:layers
元数据的STAC项目将数据加载到xarray中。
安装
使用pip安装stactools-noaa-hrrr
pip install stactools-noaa-hrrr
命令行使用
创建集合对象
stac noaahrrr create-collection {region} {product} {cloud_provider} {destination_file}
例如。
stac noaahrrr create-collection conus sfc azure example-collection.json
创建项目
stac noaahrrr create-item \
{region} \
{product} \
{cloud_provider} \
{reference_datetime} \
{forecast_hour} \
{destination_file}
例如。
stac noaahrrr create-item conus sfc azure 2024-05-01T12 10 example-item.json
创建日期范围内的所有项目
stac noaahrrr create-item-collection \
{region} \
{product} \
{cloud_provider} \
{start_date} \
{end_date} \
{destination_folder}
例如。
stac noaahrrr create-item-collection conus sfc azure 2024-05-01 2024-05-31 /tmp/items
Docker
您可以使用以下命令在具有所有依赖项的docker容器中启动jupyterhub服务器
docker/build
docker/jupyter
使用stac noaahrrr --help
查看所有子命令和选项。
贡献
我们使用 pre-commit 来检查任何更改。为了设置您的开发环境
pip install -e '.[dev]'
pre-commit install
检查所有文件
pre-commit run --all-files
运行测试
pytest -vv
如果您已更新STAC元数据输出,请更新示例
scripts/update-examples
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
stactools_noaa_hrrr-0.1.2.tar.gz (1.1 MB 查看哈希值)
构建分布
关闭
stactools_noaa_hrrr-0.1.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5f952669b49c8417926805ac1777eb4f03c1deb6ab5939952d7373553eb6eb56 |
|
MD5 | 3eb0e6e44f68ba3d07e0293b8f343d95 |
|
BLAKE2b-256 | 35b73708fd713836dbbeb587eb62c4006611396e20b070e9a03619edf2445e32 |
关闭
stactools_noaa_hrrr-0.1.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 07f87845d300f85d56e092fb2b054103ed8fa690866da75205effc70f77ea3b5 |
|
MD5 | 4490815d255627ccf6cc6732e5101ecd |
|
BLAKE2b-256 | 5c3fc5f990d02b9fa5e71354a37a1ea72c2e1b30fa9ebbba1036c1762f374165 |