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
gfs_grib2_orig_file_path = get_data_file("cma-gfs")
gfs_grib2_orig_file_pathPosixPath('/home/wangdp/project/cedarkit/notebook-project/notebook-devel/repo/data-notebook-project/data-notebook/data/cma-gfs/grib2/orig/Z_NAFP_C_BABJ_20260811000000_P_NWPC-GRAPES-GFS-GLB-02400.grib2')层次¶
30 层列表,单位百帕 (mb):
1000
975
950
925
900
850
800
750
700
650
600
550
500
450
400
350
300
275
250
225
200
175
150
125
100
70
50
30
20
10
DZDT/SPFH/CLMR/RWMR/ICMR/SNMR/GRLE/CDCC¶
垂直速度¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 垂直速度 | w | DZDT | wz | (0, 2, 9) | pl | 30层 | 224-253 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="DZDT",
level_type="pl",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 224field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="wz",
level_type="pl",
level=850,
lazy=True
)
assert field.attrs["GRIB_count"] == 229field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="w",
level_type="pl",
level=70,
lazy=True
)
assert field.attrs["GRIB_count"] == 249field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 9,
},
level_type="pl",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 253比湿¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 比湿 | q | SPFH | q | (0, 1, 0) | pl | 30层 | 254-283 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="SPFH",
level_type="pl",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 254field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="q",
level_type="pl",
level=850,
lazy=True
)
assert field.attrs["GRIB_count"] == 259field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="q",
level_type="pl",
level=70,
lazy=True
)
assert field.attrs["GRIB_count"] == 279field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 0,
},
level_type="pl",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 283云水混合比¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 云水混合比 | qc | CLMR | clwmr | (0, 1, 22) | pl | 30层 | 284-313 |
注:wgrib2 建议云水混合比 (CLWMR) 使用 CLLMR
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="CLMR",
level_type="pl",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 284field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="clwmr",
level_type="pl",
level=850,
lazy=True
)
assert field.attrs["GRIB_count"] == 289field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="qc",
level_type="pl",
level=70,
lazy=True
)
assert field.attrs["GRIB_count"] == 309field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 22,
},
level_type="pl",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 313雨水混合比¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 雨水混合比 | qr | RWMR | rwmr | (0, 1, 24) | pl | 30层 | 314-343 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="RWMR",
level_type="pl",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 314field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="rwmr",
level_type="pl",
level=850,
lazy=True
)
assert field.attrs["GRIB_count"] == 319field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="qr",
level_type="pl",
level=70,
lazy=True
)
assert field.attrs["GRIB_count"] == 339field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 24,
},
level_type="pl",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 343冰水混合比¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 冰水混合比 | qi | ICMR | icmr | (0, 1, 23) | pl | 30层 | 344-373 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="ICMR",
level_type="pl",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 344field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="icmr",
level_type="pl",
level=850,
lazy=True
)
assert field.attrs["GRIB_count"] == 349field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="qi",
level_type="pl",
level=70,
lazy=True
)
assert field.attrs["GRIB_count"] == 369field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 23,
},
level_type="pl",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 373雪水混合比¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 雪水混合比 | qs | SNMR | snmr | (0, 1, 25) | pl | 30层 | 374-403 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="SNMR",
level_type="pl",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 374field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="snmr",
level_type="pl",
level=850,
lazy=True
)
assert field.attrs["GRIB_count"] == 379field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="qs",
level_type="pl",
level=70,
lazy=True
)
assert field.attrs["GRIB_count"] == 399field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 25,
},
level_type="pl",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 403霰¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 霰 | graupel | GRLE | grle | (0, 1, 32) | pl | 30层 | 404-433 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="GRLE",
level_type="pl",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 404field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="grle",
level_type="pl",
level=850,
lazy=True
)
assert field.attrs["GRIB_count"] == 409field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="graupel",
level_type="pl",
level=70,
lazy=True
)
assert field.attrs["GRIB_count"] == 429field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 32,
},
level_type="pl",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 433云量¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 云量 | cc | CDCC | ccl | (0, 6, 22) | pl | 30层 | 434-463 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="CDCC",
level_type="pl",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 434field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="ccl",
level_type="pl",
level=850,
lazy=True
)
assert field.attrs["GRIB_count"] == 439field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="cc",
level_type="pl",
level=70,
lazy=True
)
assert field.attrs["GRIB_count"] == 459field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 6,
"parameterNumber": 22,
},
level_type="pl",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 463