GFS要素清单:22-45#
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/ref/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_path
PosixPath('/home/wangdp/project/cedarkit/notebook-project/notebook-devel/ref/data-notebook-project/data-notebook/data/cma-gfs/grib2/orig/Z_NAFP_C_BABJ_20260725000000_P_NWPC-GRAPES-GFS-GLB-02400.grib2')
粗糙度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
粗糙度 |
- |
- |
znt |
(0, 3, 228) |
surface |
- |
22 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="znt",
lazy=True
)
assert field.attrs["GRIB_count"] == 22
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 3,
"parameterNumber": 228,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 22
地形高度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
地形高度 |
HGT |
orog |
zs |
(0, 3, 5) |
surface |
- |
23 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="HGT",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 23
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="orog",
lazy=True
)
assert field.attrs["GRIB_count"] == 23
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="zs",
lazy=True
)
assert field.attrs["GRIB_count"] == 23
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 3,
"parameterNumber": 5,
},
level_type="sfc",
lazy=True
)
assert field.attrs["GRIB_count"] == 23
2sh/2t#
2米比湿#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
2米比湿 |
SPFH |
2sh |
q2m |
(0, 1, 0) |
heightAboveGround |
2 |
24 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="SPFH",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 24
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="2sh",
lazy=True
)
assert field.attrs["GRIB_count"] == 24
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="q2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 24
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 0,
},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 24
2米温度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
2米温度 |
TMP |
2t |
t2m |
(0, 0, 0) |
heightAboveGround |
2 |
25 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="TMP",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 25
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="2t",
lazy=True
)
assert field.attrs["GRIB_count"] == 25
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="t2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 25
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 0,
"parameterNumber": 0,
},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 25
10u/10v#
10米U#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
10米U |
UGRD |
10u |
u10m |
(0, 2, 2) |
heightAboveGround |
10 |
26 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="UGRD",
level_type="heightAboveGround",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 26
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="10u",
lazy=True
)
assert field.attrs["GRIB_count"] == 26
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="u10m",
lazy=True
)
assert field.attrs["GRIB_count"] == 26
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 2,
},
level_type="heightAboveGround",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 26
10米V#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
10米V |
VGRD |
10v |
v10m |
(0, 2, 3) |
heightAboveGround |
10 |
27 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="VGRD",
level_type="heightAboveGround",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 27
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="10v",
lazy=True
)
assert field.attrs["GRIB_count"] == 27
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="v10m",
lazy=True
)
assert field.attrs["GRIB_count"] == 27
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 3,
},
level_type="heightAboveGround",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 27
TCDC/LCDC/MCDC/HCDC#
总云量#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
总云量 |
TCDC |
tcc |
tcc |
(0, 6, 1) |
entireAtmosphere |
- |
28 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="TCDC",
lazy=True
)
assert field.attrs["GRIB_count"] == 28
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="tcc",
lazy=True
)
assert field.attrs["GRIB_count"] == 28
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 6,
"parameterNumber": 1,
},
level_type="entireAtmosphere",
lazy=True
)
assert field.attrs["GRIB_count"] == 28
低云量#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
低云量 |
LCDC |
lcc |
lcc |
(0, 6, 3) |
entireAtmosphere |
- |
29 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="LCDC",
lazy=True
)
assert field.attrs["GRIB_count"] == 29
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="lcc",
lazy=True
)
assert field.attrs["GRIB_count"] == 29
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 6,
"parameterNumber": 3,
},
level_type="entireAtmosphere",
lazy=True
)
assert field.attrs["GRIB_count"] == 29
中云量#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
中云量 |
MCDC |
mcc |
mcc |
(0, 6, 4) |
entireAtmosphere |
- |
30 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="MCDC",
lazy=True
)
assert field.attrs["GRIB_count"] == 30
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="mcc",
lazy=True
)
assert field.attrs["GRIB_count"] == 30
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 6,
"parameterNumber": 4,
},
level_type="entireAtmosphere",
lazy=True
)
assert field.attrs["GRIB_count"] == 30
高云量#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
高云量 |
HCDC |
hcc |
hcc |
(0, 6, 5) |
entireAtmosphere |
- |
31 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="HCDC",
lazy=True
)
assert field.attrs["GRIB_count"] == 31
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="hcc",
lazy=True
)
assert field.attrs["GRIB_count"] == 31
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 6,
"parameterNumber": 5,
},
level_type="entireAtmosphere",
lazy=True
)
assert field.attrs["GRIB_count"] == 31
TCIWV/TCOLW/TCOLI#
大气总柱水汽含量#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
大气总柱水汽含量 |
TCIWV |
- |
tvw |
(0, 1, 64) |
atmosphere |
- |
32 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="TCIWV",
lazy=True
)
assert field.attrs["GRIB_count"] == 32
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="tvw",
lazy=True
)
assert field.attrs["GRIB_count"] == 32
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 64,
},
level_type="atmosphere",
lazy=True
)
assert field.attrs["GRIB_count"] == 32
大气总柱云水qc含量#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
大气总柱云水qc含量 |
TCOLW |
- |
tcw |
(0, 1, 69) |
atmosphere |
- |
33 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="TCOLW",
lazy=True
)
assert field.attrs["GRIB_count"] == 33
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="tcw",
lazy=True
)
assert field.attrs["GRIB_count"] == 33
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 69,
},
level_type="atmosphere",
lazy=True
)
assert field.attrs["GRIB_count"] == 33
大气总柱云冰含量#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
大气总柱云冰含量 |
TCOLI |
- |
tiw |
(0, 1, 70) |
atmosphere |
- |
34 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="TCOLI",
lazy=True
)
assert field.attrs["GRIB_count"] == 34
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="tiw",
lazy=True
)
assert field.attrs["GRIB_count"] == 34
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 70,
},
level_type="atmosphere",
lazy=True
)
assert field.attrs["GRIB_count"] == 34
边界层高度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
边界层高度 |
HPBL |
blh |
pblh |
(0, 3, 18) |
surface |
- |
35 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="HPBL",
lazy=True
)
assert field.attrs["GRIB_count"] == 35
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="blh",
lazy=True
)
assert field.attrs["GRIB_count"] == 35
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="pblh",
lazy=True
)
assert field.attrs["GRIB_count"] == 35
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 3,
"parameterNumber": 18,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 35
东西向应力#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
东西向应力 |
- |
- |
wess |
(0, 2, 227) |
surface |
- |
36 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="wess",
lazy=True
)
assert field.attrs["GRIB_count"] == 36
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 227,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 36
南北向应力#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
南北向应力 |
- |
- |
nsss |
(0, 2, 228) |
surface |
- |
37 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="nsss",
lazy=True
)
assert field.attrs["GRIB_count"] == 37
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 228,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 37
雪深#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
雪深 |
SNOD |
sde |
sd |
(0, 1, 11) |
surface |
- |
38 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="SNOD",
lazy=True
)
assert field.attrs["GRIB_count"] == 38
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="sde",
lazy=True
)
assert field.attrs["GRIB_count"] == 38
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="sd",
lazy=True
)
assert field.attrs["GRIB_count"] == 38
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 11,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 38
反照率#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
反照率 |
ALBDO |
al |
albedo |
(0, 19, 1) |
surface |
- |
39 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="ALBDO",
lazy=True
)
assert field.attrs["GRIB_count"] == 39
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="al",
lazy=True
)
assert field.attrs["GRIB_count"] == 39
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="albedo",
lazy=True
)
assert field.attrs["GRIB_count"] == 39
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 19,
"parameterNumber": 1,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 39
TMAX/TMIN/RHMAX/RHMIN#
2m最高温度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
2m最高温度 |
TMAX |
tmax |
mx2t, tmax2m |
(0, 0, 4) |
heightAboveGround |
2 |
40 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="TMAX",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 40
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="tmax",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 40
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="tmax2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 40
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 0,
"parameterNumber": 4,
},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 40
2m最低温度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
2m最低温度 |
TMIN |
tmin |
mn2t, tmin2m |
(0, 0, 5) |
heightAboveGround |
2 |
41 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="TMIN",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 41
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="tmin",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 41
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="tmin2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 41
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 0,
"parameterNumber": 5,
},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 41
2m最高相对湿度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
2m最低温度 |
- |
- |
rhmax2m |
(0, 1, 231) |
heightAboveGround |
2 |
42 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="rhmax2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 42
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 231,
},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 42
2m最低相对湿度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
2m最低相对湿度 |
- |
- |
rhmin2m |
(0, 1, 232) |
heightAboveGround |
2 |
43 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="rhmin2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 43
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 232,
},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 43
PRES/PRMSL#
地面气压#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
地面气压 |
PRES |
sp |
ps |
(0, 3, 0) |
surface |
- |
44 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="PRES",
lazy=True
)
assert field.attrs["GRIB_count"] == 44
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="sp",
lazy=True
)
assert field.attrs["GRIB_count"] == 44
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="ps",
lazy=True
)
assert field.attrs["GRIB_count"] == 44
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 3,
"parameterNumber": 0,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 44
海平面气压#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
海平面气压 |
PRMSL |
prmsl |
psl |
(0, 3, 1) |
meanSea |
- |
45 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="PRMSL",
lazy=True
)
assert field.attrs["GRIB_count"] == 45
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="prmsl",
lazy=True
)
assert field.attrs["GRIB_count"] == 45
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="psl",
lazy=True
)
assert field.attrs["GRIB_count"] == 45
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 3,
"parameterNumber": 1,
},
level_type="meanSea",
lazy=True
)
assert field.attrs["GRIB_count"] == 45