151 lines
1.8 KiB
Markdown
151 lines
1.8 KiB
Markdown
# NavSea Weather Server Step-1
|
|
GRIB 解析环境测试
|
|
|
|
目标:
|
|
|
|
验证服务器可以正确解析 GRIB 文件。
|
|
|
|
---
|
|
|
|
# 1 安装系统依赖
|
|
|
|
在 Linux 服务器执行:
|
|
|
|
apt update
|
|
|
|
apt install -y python3 python3-pip
|
|
|
|
apt install -y libeccodes0 libeccodes-dev
|
|
|
|
apt install -y python3-eccodes
|
|
|
|
---
|
|
|
|
# 2 安装 Python 库
|
|
|
|
pip3 install cfgrib
|
|
pip3 install xarray
|
|
pip3 install numpy
|
|
|
|
---
|
|
|
|
# 3 下载测试 GRIB 文件
|
|
|
|
创建测试目录:
|
|
|
|
mkdir weather_test
|
|
cd weather_test
|
|
|
|
下载 NOAA GFS 示例:
|
|
|
|
wget https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20260312/00/atmos/gfs.t00z.pgrb2.0p25.f003 -O test.grib2
|
|
|
|
(如果日期目录不存在,可以换最新日期)
|
|
|
|
---
|
|
|
|
# 4 创建测试脚本
|
|
|
|
创建文件:
|
|
|
|
test_grib.py
|
|
|
|
内容:
|
|
|
|
import xarray as xr
|
|
|
|
file = "test.grib2"
|
|
|
|
print("Opening GRIB file...")
|
|
|
|
ds = xr.open_dataset(file, engine="cfgrib")
|
|
|
|
print("Dataset loaded")
|
|
|
|
print(ds)
|
|
|
|
print("\nVariables:")
|
|
print(ds.data_vars)
|
|
|
|
---
|
|
|
|
# 5 运行测试
|
|
|
|
python3 test_grib.py
|
|
|
|
如果成功,你会看到类似输出:
|
|
|
|
Dataset loaded
|
|
|
|
Dimensions:
|
|
latitude: 721
|
|
longitude: 1440
|
|
|
|
Variables:
|
|
u10
|
|
v10
|
|
t2m
|
|
msl
|
|
tp
|
|
|
|
---
|
|
|
|
# 6 测试读取风数据
|
|
|
|
修改脚本:
|
|
|
|
import xarray as xr
|
|
import numpy as np
|
|
|
|
file = "test.grib2"
|
|
|
|
ds = xr.open_dataset(file, engine="cfgrib")
|
|
|
|
u = ds['u10']
|
|
v = ds['v10']
|
|
|
|
speed = np.sqrt(u**2 + v**2)
|
|
|
|
print("Wind sample:")
|
|
|
|
print(speed.values[0][0])
|
|
|
|
---
|
|
|
|
# 7 成功标志
|
|
|
|
如果成功运行:
|
|
|
|
说明:
|
|
|
|
GRIB解析正常
|
|
Python环境正常
|
|
可以进入 Weather Server 开发
|
|
|
|
---
|
|
|
|
# 8 常见错误
|
|
|
|
错误:
|
|
|
|
eccodes library not found
|
|
|
|
解决:
|
|
|
|
apt install libeccodes-dev
|
|
|
|
---
|
|
|
|
# 9 完成后下一步
|
|
|
|
下一步开发:
|
|
|
|
GRIB Downloader
|
|
|
|
模块:
|
|
|
|
weather_server/downloader/gfs_downloader.py
|
|
|
|
负责:
|
|
|
|
自动下载 GFS GRIB 数据。 |