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')降水与地面要素¶
对流降水¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 对流降水 | rainc | ACPCP | acpcp | (0, 1, 10) | surface | - | 1 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="ACPCP",
lazy=True
)
assert field.attrs["GRIB_count"] == 1field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="acpcp",
lazy=True
)
assert field.attrs["GRIB_count"] == 1field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="rainc",
lazy=True
)
assert field.attrs["GRIB_count"] == 1field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 1, "parameterNumber": 10},
lazy=True
)
assert field.attrs["GRIB_count"] == 1总降水¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 总降水 | rain | APCP | - | (0, 1, 8) | surface | - | 2 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="APCP",
lazy=True
)
assert field.attrs["GRIB_count"] == 2field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="rain",
lazy=True
)
assert field.attrs["GRIB_count"] == 2field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 1, "parameterNumber": 8},
lazy=True
)
assert field.attrs["GRIB_count"] == 2降雪¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 降雪 | sf | ASNOW | - | (0, 1, 29) | surface | - | 3 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="ASNOW",
lazy=True
)
assert field.attrs["GRIB_count"] == 3field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="sf",
lazy=True
)
assert field.attrs["GRIB_count"] == 3field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 1, "parameterNumber": 29},
lazy=True
)
assert field.attrs["GRIB_count"] == 3地表温度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 地表温度 | ts | TMP | t | (0, 0, 0) | surface | - | 4 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="TMP",
lazy=True
)
assert field.attrs["GRIB_count"] == 4field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="t",
lazy=True
)
assert field.attrs["GRIB_count"] == 4field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="ts",
lazy=True
)
assert field.attrs["GRIB_count"] == 4field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 0, "parameterNumber": 0},
lazy=True
)
assert field.attrs["GRIB_count"] == 42米温度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 2米温度 | t2m | TMP | 2t | (0, 0, 0) | heightAboveGround | 2 | 5 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="TMP",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 5field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="2t",
lazy=True
)
assert field.attrs["GRIB_count"] == 5field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="t2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 5field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 0, "parameterNumber": 0},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 510米U风¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 10米U风 | u10m | UGRD | 10u | (0, 2, 2) | heightAboveGround | 10 | 6 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="UGRD",
lazy=True
)
assert field.attrs["GRIB_count"] == 6field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="10u",
lazy=True
)
assert field.attrs["GRIB_count"] == 6field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="u10m",
lazy=True
)
assert field.attrs["GRIB_count"] == 6field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 2, "parameterNumber": 2},
lazy=True
)
assert field.attrs["GRIB_count"] == 610米V风¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 10米V风 | v10m | VGRD | 10v | (0, 2, 3) | heightAboveGround | 10 | 7 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="VGRD",
lazy=True
)
assert field.attrs["GRIB_count"] == 7field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="10v",
lazy=True
)
assert field.attrs["GRIB_count"] == 7field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="v10m",
lazy=True
)
assert field.attrs["GRIB_count"] == 7field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 2, "parameterNumber": 3},
lazy=True
)
assert field.attrs["GRIB_count"] == 7组合雷达反射率¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 组合雷达反射率 | cdbz | CR | - | (0, 16, 224) | surface | - | 8 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="CR",
lazy=True
)
assert field.attrs["GRIB_count"] == 8field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="cdbz",
lazy=True
)
assert field.attrs["GRIB_count"] == 8field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 16, "parameterNumber": 224},
lazy=True
)
assert field.attrs["GRIB_count"] == 8雪深¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 雪深 | sd | SNOD | sde | (0, 1, 11) | surface | - | 9 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="SNOD",
lazy=True
)
assert field.attrs["GRIB_count"] == 9field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="sde",
lazy=True
)
assert field.attrs["GRIB_count"] == 9field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="sd",
lazy=True
)
assert field.attrs["GRIB_count"] == 9field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 1, "parameterNumber": 11},
lazy=True
)
assert field.attrs["GRIB_count"] == 9海平面气压¶
海平面气压¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 海平面气压 | psl | PRMSL | prmsl | (0, 3, 1) | meanSea | - | 10 |
field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="PRMSL",
lazy=True
)
assert field.attrs["GRIB_count"] == 10field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="prmsl",
lazy=True
)
assert field.attrs["GRIB_count"] == 10field = load_field_from_file(
reps_grib2_orig_file_path,
parameter="psl",
lazy=True
)
assert field.attrs["GRIB_count"] == 10field = load_field_from_file(
reps_grib2_orig_file_path,
parameter={"discipline": 0, "parameterCategory": 3, "parameterNumber": 1},
lazy=True
)
assert field.attrs["GRIB_count"] == 10