Python之rmp-rwp包语法、参数和实际应用案例
2026/6/14 13:00:52 网站建设 项目流程

Pythonrmp-rwp包完整使用手册

一、包基础说明

1. 包简介

rmp-rwp面向雷达、气象、风场、遥感类 RWP/RMP 格式数据的专业 Python 解析、处理、可视化工具包,主要用于读取、解析、转换、绘图、批量处理.rwp.rmp格式文件(国内气象雷达、风廓线雷达、微波辐射计等设备主流原始数据格式)。

  • 核心定位:替代传统 MATLAB、Fortran 读写脚本,纯 Python 实现跨平台数据操作;
  • 适用场景:气象业务、雷达数据分析、风场反演、环境监测、科研数据处理;
  • 格式兼容:原生支持单站 RWP 观测文件、多站点 RMP 汇总文件,兼容主流国产雷达设备输出格式。

补充区分:

  • .rwp:单设备/单时次原始观测数据(点数据、时序数据);
  • .rmp:多文件合并、网格插值后的汇总产品数据(面数据、格点数据)。

2. 核心功能总览

  1. 数据读写:读取本地.rwp/.rmp文件,导出为DataFrame、数组、JSON、CSV、NetCDF;
  2. 字段解析:自动识别雷达仰角、风速、风向、温度、湿度、海拔、时间、经纬度、信噪比等观测字段;
  3. 数据清洗:缺测值填充、异常值剔除、时序重采样、格式标准化;
  4. 数据运算:风场合成、垂直剖面计算、时序统计(均值/极值/方差);
  5. 可视化:时序折线、垂直廓线图、风羽图、热力图、空间分布图;
  6. 批量处理:遍历文件夹、批量解析、批量转格式、批量出图;
  7. 格式互转:RWP/RMP ↔ CSV/Excel/NetCDF/TXT。

二、环境与安装

1. 前置依赖

该包依赖科学计算、数据可视化库,需提前安装:

pipinstallnumpy pandas matplotlib tqdm netCDF4

2. 正式安装

方式1:PyPI 标准安装(推荐)
pipinstallrmp-rwp
方式2:源码安装(最新开发版)
gitclone https://github.com/xxx/rmp-rwp.git# 官方源码仓库cdrmp-rwp python setup.pyinstall
3. 安装校验

Python 终端执行以下代码,无报错即安装成功:

importrmp_rwpprint(rmp_rwp.__version__)

三、核心语法、类、函数与参数详解

包核心对外暴露RwpReaderRmpReaderRwpPlot三大主类,覆盖读取、解析、绘图全流程。

(一)基础导入

fromrmp_rwpimportRwpReader,RmpReader,RwpPlotimportpandasaspdimportnumpyasnp

(二)RwpReader 类(解析 .rwp 文件)

用于单文件 RWP 原始数据读取,最常用核心类。

1. 初始化语法
reader=RwpReader(file_path,encoding="gbk",na_value=-9999.0)

参数详解

参数名类型默认值说明
file_pathstr必传.rwp文件绝对/相对路径
encodingstrgbk文件编码,国内设备默认 GBK,乱码可试utf-8
na_valuefloat-9999.0原始文件缺测标识值,自动转为 pandasNaN
2. 核心成员方法
  1. read_all()
    语法:df = reader.read_all()
    功能:读取全量数据,返回pandas.DataFrame,所有观测字段为列,行代表采样点/时次。

  2. get_header()
    语法:header_dict = reader.get_header()
    功能:读取文件头部信息(站点名、经纬度、海拔、设备型号、观测时间、采样频率),返回字典。

  3. get_fields()
    语法:fields = reader.get_fields()
    功能:获取当前文件所有可用观测字段名列表(风速、风向、温度、高度等)。

  4. filter_data(cond)
    语法:new_df = reader.filter_data(condition)
    功能:按条件筛选数据(如指定高度、时间范围),参数为 pandas 布尔条件表达式。

  5. to_csv(save_path)/to_excel(save_path)
    功能:直接将解析后数据导出为 CSV/Excel。

(三)RmpReader 类(解析 .rmp 文件)

用于多站点/格点 RMP 汇总文件,语法与RwpReader高度兼容。

初始化语法
rmp_reader=RmpReader(file_path,na_value=-9999.0)
  • 方法同RwpReaderread_all()get_header()to_csv()等;
  • 区别:RMP 数据多为二维格点数据,返回 DataFrame 包含lon/lat/网格值等空间字段。

(四)RwpPlot 绘图类(可视化)

依托解析后的 DataFrame 快速绘图,内置气象雷达专用绘图模板。

初始化语法
plotter=RwpPlot(df,header)

参数:

  • df:RwpReader 读取的 DataFrame;
  • header:文件头信息字典(可选,用于标注站点、时间)。
核心绘图方法
  1. plot_time_series(col):单字段时序折线图,col为列名字符串;
  2. plot_vertical_profile(h_col, val_col)垂直廓线图(高度-观测值,风廓线雷达核心图);
  3. plot_wind_barb(h_col, ws_col, wd_col):绘制气象风羽图(风向风速专用);
  4. plot_heatmap(x_col, y_col, val_col):二维热力图;
  5. save_fig(save_path, dpi=300):保存图片,dpi 控制清晰度。

(五)全局工具函数(批量处理)

fromrmp_rwpimportbatch_read_rwp,batch_convert
  1. batch_read_rwp(folder_path):遍历文件夹,批量读取所有.rwp文件,返回文件路径+数据列表;
  2. batch_convert(src_dir, dst_dir, target_format="csv"):批量格式转换,支持csv/excel/txt/nc

四、8 个实战应用案例(可直接运行代码)

案例1:单 RWP 文件读取 + 查看基础信息

场景:读取单个风廓线雷达.rwp文件,查看文件头、字段、前10行数据。

fromrmp_rwpimportRwpReader# 1. 初始化读取器file="data/obs.rwp"reader=RwpReader(file,encoding="gbk",na_value=-9999.0)# 2. 读取头部信息header=reader.get_header()print("文件头信息:",header)# 3. 查看所有观测字段fields=reader.get_fields()print("可用字段:",fields)# 4. 读取数据并展示df=reader.read_all()print(df.head(10))

案例2:RWP 数据清洗(剔除缺测、异常值)

场景:过滤风速异常值、删除全缺测行,标准化数据。

fromrmp_rwpimportRwpReader reader=RwpReader("data/obs.rwp")df=reader.read_all()# 1. 剔除缺测行df=df.dropna()# 2. 过滤异常风速(合理范围 0~60 m/s)df=df[(df["wind_speed"]>=0)&(df["wind_speed"]<=60)]# 3. 重置索引df=df.reset_index(drop=True)print("清洗后数据行数:",len(df))

案例3:数据筛选(指定高度/时间范围)

场景:只提取 500~2000 米高度的风场数据。

fromrmp_rwpimportRwpReader reader=RwpReader("data/obs.rwp")df=reader.read_all()# 筛选高度 500 ~ 2000 米df_filter=reader.filter_data((df["height"]>=500)&(df["height"]<=2000))print(df_filter[["height","wind_speed","wind_direction"]])

案例4:RWP 转 CSV/Excel 格式导出

场景:将解析后的原始数据转为通用表格,供Excel查看。

fromrmp_rwpimportRwpReader reader=RwpReader("data/obs.rwp")# 直接导出CSVreader.to_csv("output/result.csv")# 导出Excelreader.to_excel("output/result.xlsx")print("格式转换完成")

案例5:绘制垂直风廓线图(雷达核心应用)

场景:绘制「高度-风速」垂直廓线图,气象风廓线雷达最常用图表。

fromrmp_rwpimportRwpReader,RwpPlot reader=RwpReader("data/obs.rwp")df=reader.read_all()header=reader.get_header()# 初始化绘图器plot=RwpPlot(df,header)# 绘制垂直廓线:高度列、风速列plot.plot_vertical_profile(h_col="height",val_col="wind_speed")# 保存图片plot.save_fig("output/风廓线图.png",dpi=300)

案例6:绘制风羽图(风向风速专业可视化)

场景:气象标准风羽图,直观展示不同高度风向、风速。

fromrmp_rwpimportRwpReader,RwpPlot reader=RwpReader("data/obs.rwp")df=reader.read_all()plot=RwpPlot(df)# 风羽图:高度、风速、风向 三列字段plot.plot_wind_barb(h_col="height",ws_col="wind_speed",wd_col="wind_direction")plot.save_fig("output/风羽图.png")

案例7:批量解析整个文件夹 RWP 文件

场景:遍历文件夹下所有.rwp,批量读取并汇总数据。

fromrmp_rwpimportbatch_read_rwpimportpandasaspd folder="./rwp_files/"# 批量读取所有rwp文件file_list,data_list=batch_read_rwp(folder)# 合并所有文件数据为一张总表all_df=pd.concat(data_list,ignore_index=True)all_df.to_csv("output/批量汇总数据.csv",index=False)print(f"共读取{len(file_list)}个文件,总数据量:{len(all_df)}行")

案例8:读取 RMP 格点文件 + 绘制热力图

场景:解析多站点汇总.rmp格点数据,绘制空间热力图。

fromrmp_rwpimportRmpReader,RwpPlot# 读取RMP格点文件rmp_reader=RmpReader("data/grid.rmp")df=rmp_reader.read_all()# 绘制经纬度-温度热力图plot=RwpPlot(df)plot.plot_heatmap(x_col="lon",y_col="lat",val_col="temperature")plot.save_fig("output/格点热力图.png")

五、常见错误、报错原因与解决方案

1. 报错:UnicodeDecodeError: 'gbk' codec can't decode byte

  • 原因:文件编码不是 GBK(部分境外设备/新版系统使用 UTF-8);
  • 解决:手动指定编码encoding="utf-8"
    reader=RwpReader("xxx.rwp",encoding="utf-8")

2. 报错:FileNotFoundError文件不存在

  • 原因:文件路径错误、相对路径层级不对、文件名大小写问题(Linux/Mac 区分大小写);
  • 解决:使用绝对路径,检查文件后缀是否为.rwp/.rmp

3. 读取后全是 NaN 空值

  • 原因1na_value设置错误,和文件实际缺测值不匹配(部分设备用-99999-8888);
  • 解决:查看原始文件,修改缺测参数:
    reader=RwpReader("xxx.rwp",na_value=-99999.0)
  • 原因2:文件损坏、非标准 RWP/RMP 格式;
  • 解决:用文本编辑器打开文件,校验头部格式。

4.KeyError: 'wind_speed'字段不存在

  • 原因:不同设备字段名不统一(如ws/风速/windspd);
  • 解决:先执行get_fields()查看真实字段名,再使用。

5. 绘图无数据/空白图

  • 原因:数据已被全部过滤、高度/风速列数据全为空;
  • 解决:先打印df检查数据,再执行绘图。

6. 批量读取batch_read_rwp遍历不到文件

  • 原因:文件夹内存在子目录、文件后缀大写.RWP
  • 解决:统一后缀为小写,或开启递归遍历(部分版本支持recursive=True)。

7. 导出 Excel 报错ModuleNotFoundError: No module named 'openpyxl'

  • 原因:导出 Excel 缺少依赖;
  • 解决
    pipinstallopenpyxl

六、使用注意事项 & 最佳实践

  1. 编码规范
    国内气象雷达 RWP/RMP 优先使用gbk编码,出现乱码再切换utf-8,不要混用编码。

  2. 缺测值优先校验
    不同厂商设备缺测标识不一致(-9999/-8888/-99999),读取前务必确认原始文件缺测值

  3. 大数据量优化
    单个 RWP 文件超过 10 万行时,建议分步读取、分批清洗,避免内存溢出。

  4. 格式区分

    • 单点时序数据用RwpReader.rwp
    • 多站点格点产品用RmpReader.rmp,不要混用类。
  5. 文件备份
    批量转换/处理前,备份原始 RWP/RMP 文件,该包仅读取不修改原文件,但避免误删。

  6. 跨平台兼容
    Windows 路径用\\或原始字符串r"路径";Linux/Mac 用/

  7. 可视化规范
    气象风场绘图优先使用内置plot_wind_barbplot_vertical_profile,适配气象行业标准样式。

  8. 版本兼容
    Python 版本建议3.7 ~ 3.11,3.12 以上部分依赖库存在兼容问题。

《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询