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
meso_grib2_orig_file_path = get_data_file("cma-meso-1km")
meso_grib2_orig_file_pathPosixPath('/home/wangdp/project/cedarkit/notebook-project/notebook-devel/repo/data-notebook-project/data-notebook/data/cma-meso-1km/grib2/orig/Z_NAFP_C_BABJ_20260725000000_P_CEMC-CMA-MESO-1KM-ORIG-02400.grb2')输出间隔内最大雷达组合反射率¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 输出间隔内雷达组合反射率 | cdbzmax#1 | - | - | (0, 16, 224) | surface | - | 22 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="cdbzmax#1",
lazy=True
)
assert field.attrs["GRIB_count"] == 22field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 16,
"parameterNumber": 224,
},
stepType="max",
lazy=True
)
assert field.attrs["GRIB_count"] == 22雷达回波顶高度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 雷达回波顶高度 | echotop | RETOP | - | (0, 16, 3) | - | - | 23 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="RETOP",
lazy=True
)
assert field.attrs["GRIB_count"] == 23field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="echotop",
lazy=True
)
assert field.attrs["GRIB_count"] == 23field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 16,
"parameterNumber": 3,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 23最大上升螺旋度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 最大上升螺旋度 | uhmax(2000-5000) | UPHL | - | (0, 7, 15) | heightAboveGroundLayer | 5000, 2000 | 24 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="UPHL",
level_type="heightAboveGroundLayer",
level={
"first_level": 5000,
"second_level": 2000,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 24field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="uhmax(2000-5000)",
lazy=True
)
assert field.attrs["GRIB_count"] == 24field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 7,
"parameterNumber": 15,
},
level_type="heightAboveGroundLayer",
level={
"first_level": 5000,
"second_level": 2000,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 24输出间隔内5分钟最大降水¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 输出间隔内5分钟最大降水 | rain5max | - | - | (0, 1, 241) | surface | - | 25 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="rain5max",
lazy=True
)
assert field.attrs["GRIB_count"] == 25field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 241,
},
stepType="max",
lazy=True
)
assert field.attrs["GRIB_count"] == 25最大垂直风切速度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 最大垂直风切速度 | shrmax(0-600) | - | - | (0, 2, 237) | heightAboveGroundLayer | 600, 0 | 26 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="shrmax(0-600)",
lazy=True
)
assert field.attrs["GRIB_count"] == 26field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 237,
},
level_type="heightAboveGroundLayer",
level={
"first_level": 600,
"second_level": 0,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 26The history saving thread hit an unexpected error (OperationalError('disk I/O error')).History will not be written to the database.
最大垂直风切角度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 最大垂直风切角度 | shrmaxdir(0-600) | - | - | (0, 2, 238) | heightAboveGroundLayer | 600, 0 | 27 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="shrmaxdir(0-600)",
lazy=True
)
assert field.attrs["GRIB_count"] == 27field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 238,
},
level_type="heightAboveGroundLayer",
level={
"first_level": 600,
"second_level": 0,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 27最大雷达回波高度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 最大雷达回波高度 | dbzmaxh | - | - | (0, 16, 226) | surface | - | 28 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="dbzmaxh",
lazy=True
)
assert field.attrs["GRIB_count"] == 28field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 16,
"parameterNumber": 226,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 28地面气压¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 地面气压 | ps | PRES | sp | (0, 3, 0) | surface | - | 29 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="PRES",
lazy=True
)
assert field.attrs["GRIB_count"] == 29field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="sp",
lazy=True
)
assert field.attrs["GRIB_count"] == 29field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="ps",
lazy=True
)
assert field.attrs["GRIB_count"] == 29field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 3,
"parameterNumber": 0,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 29海平面气压¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 海平面气压 | psl | PRMSL | prmsl | (0, 3, 1) | meanSea | - | 30 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="PRMSL",
lazy=True
)
assert field.attrs["GRIB_count"] == 30field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="prmsl",
lazy=True
)
assert field.attrs["GRIB_count"] == 30field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="psl",
lazy=True
)
assert field.attrs["GRIB_count"] == 30field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 3,
"parameterNumber": 1,
},
level_type="meanSea",
lazy=True
)
assert field.attrs["GRIB_count"] == 30