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

【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  # 转换为摄氏度

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习基础2

目录 1.损失函数 1.1 线性回归损失函数 1.1.1 MAE损失 1.1.2 MSE损失 1.1.3 SmoothL1Loss 1.2 CrossEntropyLoss 1.3 BCELoss 1.4. 总结 2.BP算法 2.1 前向传播 2.2 反向传播 2.2.1 原理 2.2.2. 链式法则 2.4 重要性 2.5 案例 2.5.1 数据准备 2.5.2 神经元计算…

STM32的CAN波特率计算

公式: CAN波特率 APB总线频率 / (BRP分频器 1)/ (SWJ BS1 BS2) SWJ一般为1。 例如STM32F407的,CAN1和CAN2都在在APB1下,频率是42000000 如果想配置成1M波特率,则计算公式为:

⭐ Unity 资源管理解决方案:Addressable_ Demo演示

一、使用Addressable插件的好处: 1.自动管理依赖关系 2.方便资源卸载 3.自带整合好的资源管理界面 4.支持远程资源加载和热更新 二、使用步骤 安装组件 1.创建资源分组 2.将资源加入资源组 3.打包资源 4.加载资源 三种方式可以加载 using System.Collections…

uniapp实现APP版本升级

App.vue 直接上代码 <script>export default {methods: {//APP 版本升级Urlupload() {// #ifdef APP-PLUSplus.runtime.getProperty(plus.runtime.appid, (info) > {// 版本号变量持久化存储getApp().globalData.version info.version;this.ToLoadUpdate(info.versi…

spark 写入mysql 中文数据 显示?? 或者 乱码

目录 前言 Spark报错&#xff1a; 解决办法&#xff1a; 总结一下&#xff1a; 报错&#xff1a; 解决&#xff1a; 前言 用spark写入mysql中&#xff0c;查看中文数据 显示?? 或者 乱码 Spark报错&#xff1a; Sat Nov 23 19:15:59 CST 2024 WARN: Establishing SSL…

欧科云链研究院:比特币还能“燃”多久?

出品&#xff5c; OKG Research 作者&#xff5c;Hedy Bi 本周二&#xff0c;隔夜“特朗普交易” 的逆转趋势波及到比特币市场。比特币价格一度冲高至约99,000美元后迅速回落至93,000美元以下&#xff0c;最大跌幅超6%。这是由于有关以色列和黎巴嫩有望达成停火协议的传闻引发…

27加餐篇:gRPC框架的优势与不足之处

gRPC作为一个现代的、开源的远程过程调用(RPC)框架,在多个方面都展现了其优雅之处,同时也存在一些不足之处。这篇文章我们就相对全面的分析一下gRPC框架那些优雅的地方和不足的地方。 优雅的地方 gRPC作为一个RPC框架,在编码、传输协议已经支持多语言方面都比较高效,下…

Spring MVC练习(前后端分离开发实例)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f439;今日诗词:二十五弦弹夜月&#xff0c;不胜清怨却飞来&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64f; ⛳️点赞 ☀️收藏⭐️关注&#x1f4…

重构项目架构

前言 我们上篇文章对整个项目进行一个整体的规划&#xff0c;其中对于APP类规划了类&#xff0c;本篇文章我们就来实现这个规划&#xff1b; class App {//加载页面constructor() {}//获取位置_getPosition() {}//接受位置_loadMap() {}//在地图上点击展现表单_showForm() {}/…

哈希C++

文章目录 一.哈希的概念1.直接定址法2.负载因子 二.哈希函数1.除法散列法 / 除留余数法2.乘法散列法3.全域散列法&#xff08;了解&#xff09; 三.处理哈希冲突哈希冲突&#xff1a;1.开放定址法&#xff08;1&#xff09;线性探测&#xff1a;&#xff08;2&#xff09;二次探…

转录组数据挖掘(生物技能树)(第11节)下游分析

转录组数据挖掘&#xff08;生物技能树&#xff09;&#xff08;第11节&#xff09; 文章目录 R语言复习转录组数据差异分析差异分析的输入数据操作过程示例一&#xff1a;示例二&#xff1a;示例三&#xff1a;此代码只适用于人的样本 R语言复习 #### 读取 ####dat read.deli…

Diving into the STM32 HAL-----Cyclic Redundancy Check笔记

在数字系统中&#xff0c;数据完全有可能被损坏&#xff0c;特别是当它流经通信介质时。在数字电子学中&#xff0c;消息是等于 0 或 1 的比特流&#xff0c;当这些比特中的一个或多个在传输过程中意外更改时&#xff0c;它就会损坏。因此&#xff0c;消息中始终有一些额外的数…

Swift——类与结构体

一.结构体 在swift的标准库中&#xff0c;大部分的类型都是结构体&#xff0c;比如&#xff1a;Int&#xff0c;Double&#xff0c;String&#xff0c;Array&#xff0c;Dictionary等等&#xff0c;它们都是结构体。 结构体定义如下&#xff1a; struct Person {var name:St…

反射泛型

反射 class 包含哪些内容&#xff1f; 当使用new 对象时需要构造函数是public 的&#xff0c;而当变成私有时再new则会报错 反射通过私有构造方法创建对象&#xff0c;破环单例模式 Clazz.getDeclared(构造函数&#xff0c;方法属性等)和直接get构造函数&#xff0c;方法属性等…

RHCE——SELinux

SELinux 什么是SELinux呢&#xff1f;其实它是【Security-Enhanced Linux】的英文缩写&#xff0c;字母上的意思就是安全强化Linux的意思。 SELinux是由美国国家安全局(NSA)开发的&#xff0c;当初开发的原因是很多企业发现&#xff0c;系统出现问题的原因大部分都在于【内部…

etcd、kube-apiserver、kube-controller-manager和kube-scheduler有什么区别

在我们部署K8S集群的时候 初始化master节点之后&#xff08;在master上面执行这条初始化命令&#xff09; kubeadm init --apiserver-advertise-address10.0.1.176 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.0 --service…

uniapp定义new plus.nativeObj.View实现APP端全局弹窗

为什么要用new plus.nativeObj.View在APP端实现弹窗&#xff1f;因为uni.showModal在APP端太难看了。 AppPopupView弹窗函数参数定义 参数一:弹窗信息(所有属性可不填&#xff0c;会有默认值) 1.title:"", //标题 2.content:"", //内容 3.confirmBoxCo…

一文学习开源框架OkHttp

OkHttp 是一个开源项目。它由 Square 开发并维护&#xff0c;是一个现代化、功能强大的网络请求库&#xff0c;主要用于与 RESTful API 交互或执行网络通信操作。它是 Android 和 Java 开发中非常流行的 HTTP 客户端&#xff0c;具有高效、可靠、可扩展的特点。 核心特点 高效…

DRM(数字权限管理技术)防截屏录屏----视频转hls流加密、web解密播放

提示&#xff1a;视频转hls流加密、web解密播放 需求&#xff1a;研究视频截屏时&#xff0c;播放器变黑&#xff0c;所以先研究的视频转hls流加密 文章目录 [TOC](文章目录) 前言一、工具ffmpeg、openssl二、后端nodeexpress三、web播放四、文档总结 前言 ‌HLS流媒体协议‌&a…

Rk3588 onnx转rknn,出现 No module named ‘rknn‘

一、操作步骤&#xff1a; rk3588 需要将yolo11 的模型onnx转rknn。 https://github.com/airockchip/rknn_model_zoo/tree/main/examples/yolo11 这个是用yolo11训练的模型&#xff0c;有80种类型。 完整下载下来后&#xff0c;在按文档描述下载模型下来&#xff1a; 然后进…