import numpy as np
import pandas as pd
import xarray as xr
from reki.format.grib.eccodes import load_field_from_file/home/wangdp/project/cedarkit/notebook-project/notebook-devel/repo/data-notebook-project/data-notebook/.venv/lib/python3.14/site-packages/gribapi/__init__.py:23: UserWarning: ecCodes 2.42.0 or higher is recommended. You are running version 2.34.1
warnings.warn(
from data_notebook.data import get_data_file
reps_grib2_orig_file_path = get_data_file("cma-reps")
reps_grib2_orig_file_pathPosixPath('/home/wangdp/project/cedarkit/notebook-project/notebook-devel/repo/data-notebook-project/data-notebook/data/cma-reps/grib2/orig/Z_NAFP_C_BABJ_20260811060000_P_NWPC-GRAPES-REPS-CN-02400-m001.grib2')稳定度指数¶
2米相对湿度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 2米相对湿度 | rh2m | RH | 2r | (0, 1, 1) | heightAboveGround | 2 | 59 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="RH",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 59field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="2r",
lazy=True
)
assert field.attrs["GRIB_count"] == 59field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="rh2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 59field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 1, "parameterNumber": 1},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 59K指数¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| K指数 | kidx | KX | kx | (0, 7, 2) | meanSea | - | 60 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="KX",
lazy=True
)
assert field.attrs["GRIB_count"] == 60field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="kx",
lazy=True
)
assert field.attrs["GRIB_count"] == 60field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="kidx",
lazy=True
)
assert field.attrs["GRIB_count"] == 60field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 7, "parameterNumber": 2},
lazy=True
)
assert field.attrs["GRIB_count"] == 60对流有效位能¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 对流有效位能 | cape | CAPE | - | (0, 7, 6) | surface | - | 61 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="CAPE",
lazy=True
)
assert field.attrs["GRIB_count"] == 61field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="cape",
lazy=True
)
assert field.attrs["GRIB_count"] == 61field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 7, "parameterNumber": 6},
lazy=True
)
assert field.attrs["GRIB_count"] == 61对流抑制能量¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 对流抑制能量 | cin | CIN | - | (0, 7, 7) | surface | - | 62 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="CIN",
lazy=True
)
assert field.attrs["GRIB_count"] == 62field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="cin",
lazy=True
)
assert field.attrs["GRIB_count"] == 62field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 7, "parameterNumber": 7},
lazy=True
)
assert field.attrs["GRIB_count"] == 62下沉对流有效位能¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 下沉对流有效位能 | dcape | DCAPE | - | (0, 7, 224) | surface | - | 63 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="DCAPE",
lazy=True
)
assert field.attrs["GRIB_count"] == 63field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="dcape",
lazy=True
)
assert field.attrs["GRIB_count"] == 63field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 7, "parameterNumber": 224},
lazy=True
)
assert field.attrs["GRIB_count"] == 630-1000米垂直风切变¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 0-1000米垂直风切变 | shr(0-1000) | VWSH | vwsh | (0, 2, 25) | heightAboveGroundLayer | 1000, 0 | 64 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="VWSH",
lazy=True
)
assert field.attrs["GRIB_count"] == 64field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="vwsh",
lazy=True
)
assert field.attrs["GRIB_count"] == 64field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="shr(0-1000)",
lazy=True
)
assert field.attrs["GRIB_count"] == 64field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 2, "parameterNumber": 25},
lazy=True
)
assert field.attrs["GRIB_count"] == 640-3000米垂直风切变¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 0-3000米垂直风切变 | shr(0-3000) | VWSH | vwsh | (0, 2, 25) | heightAboveGroundLayer | 3000, 0 | 65 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="VWSH",
level_type="heightAboveGroundLayer",
level=3000,
lazy=True
)
assert field.attrs["GRIB_count"] == 65field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="vwsh",
level_type="heightAboveGroundLayer",
level=3000,
lazy=True
)
assert field.attrs["GRIB_count"] == 65field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="shr(0-3000)",
lazy=True
)
assert field.attrs["GRIB_count"] == 65field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 2, "parameterNumber": 25},
level_type="heightAboveGroundLayer",
level=3000,
lazy=True
)
assert field.attrs["GRIB_count"] == 650-6000米垂直风切变¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 0-6000米垂直风切变 | shr(0-6000) | VWSH | vwsh | (0, 2, 25) | heightAboveGroundLayer | 6000, 0 | 66 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="VWSH",
level_type="heightAboveGroundLayer",
level=6000,
lazy=True
)
assert field.attrs["GRIB_count"] == 66field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="vwsh",
level_type="heightAboveGroundLayer",
level=6000,
lazy=True
)
assert field.attrs["GRIB_count"] == 66field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="shr(0-6000)",
lazy=True
)
assert field.attrs["GRIB_count"] == 66field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 2, "parameterNumber": 25},
level_type="heightAboveGroundLayer",
level=6000,
lazy=True
)
assert field.attrs["GRIB_count"] == 66最优抬升指数¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 最优抬升指数 | bli | BLI | bli | (0, 7, 1) | surface | - | 67 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="BLI",
lazy=True
)
assert field.attrs["GRIB_count"] == 67field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="bli",
lazy=True
)
assert field.attrs["GRIB_count"] == 67field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 7, "parameterNumber": 1},
lazy=True
)
assert field.attrs["GRIB_count"] == 67冰雹指数¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 冰雹指数 | hi | HI | - | (0, 1, 239) | surface | - | 68 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="HI",
lazy=True
)
assert field.attrs["GRIB_count"] == 68field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="hi",
lazy=True
)
assert field.attrs["GRIB_count"] == 68field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 1, "parameterNumber": 239},
lazy=True
)
assert field.attrs["GRIB_count"] == 68整层可降水量¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 整层可降水量 | pwat | PWAT | pwat | (0, 1, 3) | atmosphere | - | 69 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="PWAT",
lazy=True
)
assert field.attrs["GRIB_count"] == 69field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="pwat",
lazy=True
)
assert field.attrs["GRIB_count"] == 69field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 1, "parameterNumber": 3},
lazy=True
)
assert field.attrs["GRIB_count"] == 69能见度与阵风¶
能见度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 能见度 | vis | VIS | vis | (0, 19, 0) | surface | - | 70 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="VIS",
lazy=True
)
assert field.attrs["GRIB_count"] == 70field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="vis",
lazy=True
)
assert field.attrs["GRIB_count"] == 70field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 19, "parameterNumber": 0},
lazy=True
)
assert field.attrs["GRIB_count"] == 70阵风风速¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 阵风风速 | gust | GUST | i10fg | (0, 2, 22) | heightAboveGround | 10 | 71 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="GUST",
lazy=True
)
assert field.attrs["GRIB_count"] == 71field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="i10fg",
lazy=True
)
assert field.attrs["GRIB_count"] == 71field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="gust",
lazy=True
)
assert field.attrs["GRIB_count"] == 71field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 2, "parameterNumber": 22},
lazy=True
)
assert field.attrs["GRIB_count"] == 71