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_pathThe history saving thread hit an unexpected error (OperationalError('attempt to write a readonly database')).History will not be written to the database.
PosixPath('/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')KX/SX/CAPE/CIN/PLI/pc/dcape¶
K指数¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| K指数 | k | KX | kx | (0, 7, 2) | meanSea | - | 774 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="KX",
level_type="meanSea",
lazy=True
)
assert field.attrs["GRIB_count"] == 774field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="kx",
lazy=True
)
assert field.attrs["GRIB_count"] == 774field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="k",
lazy=True
)
assert field.attrs["GRIB_count"] == 774field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 7,
"parameterNumber": 2,
},
level_type="meanSea",
lazy=True
)
assert field.attrs["GRIB_count"] == 774强天气胁迫指数¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 强天气胁迫指数 | sweatidx | SX | sx | (0, 7, 5) | surface | - | 775 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="SX",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 775field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="sx",
level_type="sfc",
lazy=True
)
assert field.attrs["GRIB_count"] == 775field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="sweatidx",
lazy=True
)
assert field.attrs["GRIB_count"] == 775field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 7,
"parameterNumber": 5,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 775对流有效位能¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 对流有效位能 | cape | CAPE | - | (0, 7, 6) | surface | - | 776 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="CAPE",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 776field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="cape",
lazy=True
)
assert field.attrs["GRIB_count"] == 776field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 7,
"parameterNumber": 6,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 776对流抑制能量¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 对流抑制能量 | cin | CIN | - | (0, 7, 7) | surface | - | 777 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="CIN",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 777field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="cin",
lazy=True
)
assert field.attrs["GRIB_count"] == 777field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 7,
"parameterNumber": 7,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 777抬升指数¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 抬升指数 | pli | PLI | pli | (0, 7, 0) | surface | - | 778 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="PLI",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 778field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="pli",
lazy=True
)
assert field.attrs["GRIB_count"] == 778field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 7,
"parameterNumber": 0,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 778抬升凝结高度处气压¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 抬升凝结高度处气压 | pc | - | - | (0, 1, 228) | surface | - | 779 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="pc",
lazy=True
)
assert field.attrs["GRIB_count"] == 779field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 1,
"parameterNumber": 228,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 779下沉对流有效位能¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 下沉对流有效位能 | dcape | - | - | (0, 7, 224) | surface | - | 780 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="dcape",
lazy=True
)
assert field.attrs["GRIB_count"] == 780field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 7,
"parameterNumber": 224,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 780垂直风切变¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 0-1000m垂直风切变 | shr(0-1000) | VWSH | vwsh | (0, 2, 25) | heightAboveGroundLayer | 1000, 0 | 781 |
| 0-3000m垂直风切变 | shr(0-3000) | VWSH | vwsh | (0, 2, 25) | heightAboveGroundLayer | 3000, 0 | 782 |
| 0-6000m垂直风切变 | shr(0-6000) | VWSH | vwsh | (0, 2, 25) | heightAboveGroundLayer | 6000, 0 | 783 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="VWSH",
level_type="heightAboveGroundLayer",
level=1000,
lazy=True
)
assert field.attrs["GRIB_count"] == 781field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="vwsh",
level_type="heightAboveGroundLayer",
level={
"first_level": 3000,
"second_level": 0,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 782field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="shr(0-6000)",
lazy=True
)
assert field.attrs["GRIB_count"] == 783field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 2,
"parameterNumber": 25,
},
level_type="heightAboveGroundLayer",
level={
"first_level": 6000,
"second_level": 0,
},
lazy=True
)
assert field.attrs["GRIB_count"] == 783最优抬升指数¶
| 要素名 | cemc | wgrib2 | eccodes | GRIB Key | 层次类型 | 层次 | 编号 |
|---|---|---|---|---|---|---|---|
| 最优抬升指数 | bli | BLI | bli | (0, 7, 1) | surface | - | 784 |
field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="BLI",
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 784field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter="bli",
lazy=True
)
assert field.attrs["GRIB_count"] == 784field = load_field_from_file(
gfs_grib2_orig_file_path,
parameter={
"discipline": 0,
"parameterCategory": 7,
"parameterNumber": 1,
},
level_type="surface",
lazy=True
)
assert field.attrs["GRIB_count"] == 784