MESO要素清单:1-10#
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
meso_grib2_orig_file_path = get_data_file("cma-meso-1km")
meso_grib2_orig_file_path
PosixPath('/home/wangdp/project/cedarkit/notebook-project/notebook-devel/ref/data-notebook-project/data-notebook/data/cma-meso-1km/grib2/orig/Z_NAFP_C_BABJ_20260725000000_P_CEMC-CMA-MESO-1KM-ORIG-02400.grb2')
总降水#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
总降水 |
APCP |
- |
rain |
(0, 1, 8) |
- |
- |
1 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="APCP",
lazy=True
)
assert field.attrs["GRIB_count"] == 1
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="rain",
lazy=True
)
assert field.attrs["GRIB_count"] == 1
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 8,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 1
降雪#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
降雪量 |
ASNOW |
- |
snow |
(0, 1, 29) |
- |
- |
2 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="ASNOW",
lazy=True
)
assert field.attrs["GRIB_count"] == 2
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="snow",
lazy=True
)
assert field.attrs["GRIB_count"] == 2
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 29
},
lazy=True
)
assert field.attrs["GRIB_count"] == 2
地表温度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
地表温度 |
TMP |
t |
ts |
(0, 0, 0) |
surface |
- |
3 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="TMP",
level_type="sfc",
lazy=True
)
assert field.attrs["GRIB_count"] == 3
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="t",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 3
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="ts",
lazy=True
)
assert field.attrs["GRIB_count"] == 3
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 0,
"parameterNumber": 0,
},
level_type="sfc",
lazy=True
)
assert field.attrs["GRIB_count"] == 3
地表向下长波辐射#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
地表向下长波辐射 |
NLWRF |
str |
str |
(0, 5, 5) |
surface |
- |
4 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="NLWRF",
lazy=True
)
assert field.attrs["GRIB_count"] == 4
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="str",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 4
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 5,
"parameterNumber": 5,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 4
地表净短波辐射#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
地表净短波辐射 |
NSWRF |
ssr |
ssr |
(0, 4, 9) |
surface |
- |
5 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="NSWRF",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 5
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="ssr",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 5
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 4,
"parameterNumber": 9,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 5
地形高度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
地形高度 |
HGT |
orog |
zs |
(0, 3, 5) |
surface |
- |
6 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="HGT",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 6
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="orog",
lazy=True
)
assert field.attrs["GRIB_count"] == 6
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="zs",
lazy=True
)
assert field.attrs["GRIB_count"] == 6
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 3,
"parameterNumber": 5,
},
level_type="sfc",
lazy=True
)
assert field.attrs["GRIB_count"] == 6
2米比湿#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
2米比湿 |
SPFH |
2sh |
q2m |
(0, 1, 0) |
heightAboveGround |
2 |
7 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="SPFH",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 7
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="2sh",
lazy=True
)
assert field.attrs["GRIB_count"] == 7
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="q2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 7
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 0,
},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 7
2米温度#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
2米温度 |
TMP |
2t |
t2m |
(0, 0, 0) |
heightAboveGround |
2 |
8 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="TMP",
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 8
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="2t",
lazy=True
)
assert field.attrs["GRIB_count"] == 8
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="t2m",
lazy=True
)
assert field.attrs["GRIB_count"] == 8
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 0,
"parameterNumber": 0,
},
level_type="heightAboveGround",
level=2,
lazy=True
)
assert field.attrs["GRIB_count"] == 8
10米U#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
10米U |
UGRD |
10u |
u10m |
(0, 2, 2) |
heightAboveGround |
10 |
9 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="UGRD",
level_type="heightAboveGround",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 9
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="10u",
lazy=True
)
assert field.attrs["GRIB_count"] == 9
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="u10m",
lazy=True
)
assert field.attrs["GRIB_count"] == 9
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 2,
},
level_type="heightAboveGround",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] ==9
10米V#
要素名 |
wgrib2 |
eccodes |
cemc |
GRIB Key |
层次类型 |
层次 |
编号 |
|---|---|---|---|---|---|---|---|
10米V |
VGRD |
10v |
v10m |
(0, 2, 3) |
heightAboveGround |
10 |
10 |
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="VGRD",
level_type="heightAboveGround",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 10
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="10v",
lazy=True
)
assert field.attrs["GRIB_count"] == 10
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter="v10m",
lazy=True
)
assert field.attrs["GRIB_count"] == 10
field = load_field_from_file(
meso_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 3,
},
level_type="heightAboveGround",
level=10,
lazy=True
)
assert field.attrs["GRIB_count"] == 10