【WRF后处理】WRF模拟效果评价及可视化:MB、RMSE、IOA、R

news2024/12/27 7:27:38

【WRF后处理】模拟效果评价及可视化

  • 准备工作
    • 模型评价指标
  • Python实现代码
    • Python处理代码:导入站点及WRF模拟结果
    • 可视化图形及评价指标
  • 参考

在气象和环境建模中(如使用 WRF 模型进行模拟),模型性能评价指标是用于定量评估模拟值与观测值之间偏差和拟合程度的重要工具。
本博客主要介绍 结合 WRF 模拟结果(wrfout 文件) 和 站点实测数据 进行模拟效果评价。

准备工作

1.1 WRF 模拟结果 (wrfout)
WRF 的输出文件(wrfout_d_YYYY-MM-DD_HH:MM:SS)包含了模拟结果的三维网格数据,需要提取与站点位置匹配的模拟值。提取工具常用 Python 的 NetCDF4 或 xarray 库。

1.2 站点实测数据

站点实测数据通常包含以下内容:

  • 站点经纬度:用于找到与站点位置匹配的模拟网格点。
  • 时间序列数据:如气温、降水、风速、风向等观测值,与 WRF 输出时间对应。

1.3 时间和空间对齐

  • 时间对齐:确保 WRF 输出时间和站点观测时间一致,必要时插值。
  • 空间对齐:将站点位置与 WRF 的网格点匹配(最近邻、双线性插值等)。

模型评价指标

以下是常用的四个评价指标,用于评价WRF模拟效果。
在这里插入图片描述
1、 Mean Bias(MB,平均偏差)
MB 表示模拟值与观测值之间的平均误差,反映了模型的系统性偏差。
若 MB 为正,表示模拟值总体偏高;若 MB 为负,表示模拟值总体偏低。
缺点:MB 可能会因为正负误差相互抵消而掩盖模型的实际误差大小,因此通常需要结合其他指标(如 RMSE)一起使用。

2、Root Mean Square Error(RMSE,均方根误差)
RMSE 是一个衡量模拟值与观测值之间误差幅度的指标,它反映了模型误差的整体大小。
RMSE 对误差的平方进行加权,因此对较大的误差更加敏感,能够凸显模型的极端误差。
RMSE 单位与变量一致,因此在不同变量之间比较时,需要注意单位问题。

3、Index of Agreement(IOA,一致性指数)
IOA 是一个无量纲指标,用于衡量模拟值与观测值之间的一致性。
IOA 的取值范围为 [0, 1]:

  • 1 表示模拟值与观测值完全一致。
  • 0 表示模拟值与观测值完全不相关。

缺点:IOA 对极端值较敏感。

4、 Pearson Correlation Coefficient (r,皮尔逊相关系数)
r 越接近 1:表示模拟值与观测值之间的线性关系越强,模型效果越好。
r 越接近 0:表示模拟值与观测值之间的线性关系较弱。
缺点:r 仅反映线性相关性,无法衡量偏差或误差幅度。

Python实现代码

Python处理代码:导入站点及WRF模拟结果

以下为Python处理代码,通过对比站点和WRF模拟结果,评价WRF模拟效果。

import matplotlib.pyplot as plt
import geopandas as gpd
import wrf
import os
from netCDF4 import Dataset


# 打开 WRF 输出文件
directory = "C:/Database/wrfout"                   # 替换为实际的文件夹路径
wrf_file = "wrfout_d03_2020-07-06_12_00_00"

# 合并文件夹路径和文件名
file_path = os.path.join(directory, wrf_file)

# 打开 WRF 输出文件
ncfile = Dataset(file_path)
print(f"Successfully opened: {
     file_path}")

# 提取经纬度和变量
lats = wrf.getvar(ncfile, "lat", meta=False)    # 纬度
lons = wrf.getvar(ncfile, "lon", meta=False)    # 经度
temperature = wrf.getvar(ncfile, "T2", meta=False)  # 2米温度

# 转换为 NumPy 数组
lats_np = wrf.to_np(lats)
lons_np = wrf.to_np(lons)
# 将温度从开尔文转换为摄氏度
temperature_c = wrf.to_np(temperature) - 273.15  # 转换为摄氏度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2251578.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于JSP+MySQL的网上招聘系统的设计与实现

摘要 在这样一个经济飞速发展的时代,人们的生存与生活问题已成为当代社会需要关注的一个焦点。对于一个刚刚 踏入社会的年轻人来说,他对就业市场和形势了解的不够详细,同时对自己的职业规划也很模糊,这就导致大量的 时间被花费在…

机器学习——生成对抗网络(GANs):原理、进展与应用前景分析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一. 生成对抗网络的基本原理二. 使用步骤2.1 对抗性训练2.2 损失函数 三. GAN的变种和进展四. 生成对抗网络的应用五. 持续挑战与未来发展方向六. 小结 前言 生…

vue.js学习(day 14)

目录 综合案例:商品列表 自定义指令 main.js(全局注册) import Vue from vue import App from ./App.vueVue.config.productionTip false// //1.全局注册指令 // Vue.directive(focus,{ // //inserted 会在 指令所在的元素,被插入到页面中时触发 /…

C++类中多线程的编码方式

问题 在C++代码中,一般的代码是需要封装在类里面,比如对象,方法等。否则就不能很好的利用C++面向对象的能力了。 但是这个方式在处理线程时会碰到一个问题。 考虑下面一个简单的场景: class demoC { public:std::thread t;int x;void threadFunc(){std::cout<<x&…

使用 Tkinter 创建一个简单的 GUI 应用程序来合并视频和音频文件

使用 Tkinter 创建一个简单的 GUI 应用程序来合并视频和音频文件 Python 是一门强大的编程语言&#xff0c;它不仅可以用于数据处理、自动化脚本&#xff0c;还可以用于创建图形用户界面 (GUI) 应用程序。在本教程中&#xff0c;我们将使用 Python 的标准库模块 tkinter 创建一…

LearnOpenGL学习(入门--变换,坐标系统,摄像机)

完整代码见&#xff1a;zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 glm::mat4 trans; trans glm::rotate(trans, glm::radians(90.0f), glm::vec3(0.0, 0.0, 1.0)); trans glm::scale(trans, glm::vec3(0.5, 0.5, 0.5)); 我们把箱子在每个轴都缩放到0.5倍&#xff0c;然…

LLamafactory API部署与使用异步方式 API 调用优化大模型推理效率

文章目录 背景介绍第三方大模型API 介绍LLamafactory 部署API大模型 API 调用工具类项目开源 背景介绍 第三方大模型API 目前&#xff0c;市面上有许多第三方大模型 API 服务提供商&#xff0c;通过 API 接口向用户提供多样化的服务。这些平台不仅能提供更多类别和类型的模型…

【Leecode】Leecode刷题之路第66天之加一

题目出处 66-加一-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 66-加一-官方解法 方法1&#xff1a;找出最长的后缀9 思路&#xff1a; 代码示例&#xff1a;&#xff08;Java&#…

uniapp-vue2引用了vue-inset-loader插件编译小程序报错

报错信息 Error: Vue packages version mismatch: - vue3.2.45 (D:\qjy-myApp\admin-app\node_modules\vue\index.js) - vue-template-compiler2.7.16 (D:\qjy-myApp\admin-app\node_modules\vue-template-compiler\package.json) This may cause things to work incorrectly.…

【人工智能-科普】图神经网络(GNN):与传统神经网络的区别与优势

文章目录 图神经网络(GNN):与传统神经网络的区别与优势什么是图神经网络?图的基本概念GNN的工作原理GNN与传统神经网络的不同1. 数据结构的不同2. 信息传递方式的不同3. 模型的可扩展性4. 局部与全局信息的结合GNN的应用领域总结图神经网络(GNN):与传统神经网络的区别与…

【C#设计模式(15)——命令模式(Command Pattern)】

前言 命令模式的关键通过将请求封装成一个对象&#xff0c;使命令的发送者和接收者解耦。这种方式能更方便地添加新的命令&#xff0c;如执行命令的排队、延迟、撤销和重做等操作。 代码 #region 基础的命令模式 //命令&#xff08;抽象类&#xff09; public abstract class …

Shell脚本小练习

学习了这么长时间Shell脚本&#xff0c;总得来一次小小的练习吧&#xff0c;那么请看下文&#xff01; 1.用Shell写一个小计算器。 通过read命令获取用户输入的表达式&#xff0c;表达式的格式设定为操作数1 运算符 操作数2&#xff0c;例如53&#xff0c;然后利用设计的脚本…

二,[ACTF2020 新生赛]Include1感谢 Y1ng 师傅供题。

进入靶场后&#xff0c;发现tips可以点击 点击后进入此页面 猜测此为文件包含漏洞,构造payload&#xff0c;并成功得到base64编码后的源码 详解payload&#xff1a; php://filter/readconvert.base64-encode/resourceflag.php 1.php://filter是PHP中的一个流封装协议&#xf…

技术实践 | AI 安全:通过大模型解决高危WEB应用识别问题

一、引言 在日常企业安全能力建设中&#xff0c;收敛企业外网高危资产&#xff0c;以保障公司外部安全是企业安全的重要工作。WEB 高危服务&#xff08;如&#xff1a;管理后台、内部系统等&#xff09;外开是企业所面临的一个重要风险。针对该风险&#xff0c;传统的方式是基…

【Linux】TCP网络编程

目录 V1_Echo_Server V2_Echo_Server多进程版本 V3_Echo_Server多线程版本 V3-1_多线程远程命令执行 V4_Echo_Server线程池版本 V1_Echo_Server TcpServer的上层调用如下&#xff0c;和UdpServer几乎一样&#xff1a; 而在InitServer中&#xff0c;大部分也和UDP那里一样&…

osg、osgearth源码编译(二)

如果比较懒&#xff0c;也可以不看这篇文章&#xff0c;网上应该有很多编译好的库。也可以找我要。 本人还是建议学会编译&#xff0c;因为其他人电脑上编译好的&#xff0c;可能在你的电脑环境上&#xff0c;出现这样那样奇怪的问题&#xff0c;所以&#xff0c;最好还是自己能…

【QGIS入门实战精品教程】4.11:文本型字段转浮点型

《QGIS入门实战精品教程(配套案例数据)》:本专栏以实战案例的形式,深入浅出地介绍了QGIS的基本使用方法,用一个个实例讲解了QGIS基本操作与常见的空间分析方法。订阅专栏,获取专栏内所有文章阅读权限,从私信查收配套实验数据等资料,持续同步更新! 文章目录 一、加载实…

【R库包安装】R库包安装总结:conda、CRAN等

【R库包安装】R studio 安装rgdal库/BPST库 R studio 安装rgdal库解决方法 R studio 安装BPST库&#xff08;github&#xff09;解决方法方法1&#xff1a;使用devtools安装方法2&#xff1a;下载安装包直接在Rstudio中安装 参考 基础 R 库包的安装可参见另一博客-【R库包安装】…

探索 IntelliJ IDEA 中 Spring Boot 运行配置

前言 IntelliJ IDEA 作为一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;为 Spring Boot 应用提供了丰富的运行配置选项&#xff0c;定义了如何在 IntelliJ IDEA 中运行 Spring Boot 应用程序&#xff0c;当从主类文件运行应用程序时&#xff0c;IDE 将创建…

Qt支持RKMPP硬解的视频监控系统/性能卓越界面精美/实时性好延迟低/录像存储和回放/云台控制

一、前言 之前做的监控系统&#xff0c;已经实现了在windows上硬解码比如dxva2和d3d11va&#xff0c;后续又增加了linux上的硬解vdpau的支持&#xff0c;这几种方式都是跨系统的硬解实现方案&#xff0c;也是就是如果都是windows系统&#xff0c;无论X86还是ARM都通用&#xf…