气象上一般使用气压垂直坐标系,在不同的气压层绘制变量。ERA5再分析数据的最低气压层是1000 hPa。实际上,由于地形起伏,一些位置的地面气压低于1000 hPa,一些位置的地面气压高于1000 hPa。所以,1000 hPa等压面所对应的高度位置,有时候在地面之下,有时候在地面之上。对于那些位于地面之下的数据,没有实际意义的,需要进行剔除。

那么,如何判断等压面的数据是否在地面之上,还是在地面之下呢。

常规的思维,如前所述,就是比较等压面的气压Plevel和该位置正下方地面的地面气压Psp(Surface Pressure),如果等压面气压小于地面气压(即Plevel<Psfc),则该等压面位于地面之上,该气压层的气象要素(比如温度,风速)有实际意义,若该等压面位于地面之下,则该气压层的气象要素没有实际意义。

但是,实际工作中,一般用的是海平面气压Psfc,地面气压Psp这个量一般用不到,尽管ERA5数据有这个量。所以利用气压进行地面高度判断不是很方便。

那么,有什么比较方便的办法呢?使用位势/位势高度进行比较。这是因为观测气压比测量高度更加方便,并且气压一般是随高度递减的,气压和高度一一对应这也就说明了,气象上通常不画不同高度上的等压线,而画不同等压面的上的等位势/位势高度线。

如何比较呢,可以通过比较不同气压层上某点对应的位势Z和该位置对应的地面的位势Zsfc,可以判断该等压面是否在地面之上。若Z>Zsfc,则位于地面上,Z<Zsfc,则位于地面下。

这里以GrADS软件,ERA5再分析数据为例,讲如何绘制带地形覆盖的剖面图(垂直坐标为气压)。

需要用到变量有两个,地面位势,不同等压面的位势。

其中,ERA5的地面位势是"ERA5 hourly data on single levels from 1959 to present"的数据集中,名称为Geopotential的变量(在ncl中变量名为 Z_GDS0_SFC),单位是 m**2 s**-2,表示各格点的地面层所在的位势。这是一个二维变量

而不同等压面的位势Z是在"ERA5 hourly data on Pressure levels from 1959 to present"数据集,名称为Geopotential的变量(在ncl中变量名为 Z_GDS0_ISBL_**),单位是 m**2 s**-2,表示各格点的地面层所在的位势。这是一个三维变量

在GrADS中,二维变量和三维变量不能直接比较(没有类似python的broadcast广播机制),所以需要另外定义一个三维变量,把二维的地形数据spread扩展到三维,再进行比较。

gs绘图脚本。

(注:zsfc.ctl为地面位势数据zsfc.grib的描述文件,pressure_level.ctl为气压层数据pressure_level.grib的描述文件。zsfc.grib可从"ERA5 hourly data on single levels from 1959 to present"的数据集中自己选定变量名Geopotential和时空范围来下载,pressure_level.grib可从"ERA5 hourly data on Pressure levels from 1959 to present"数据集选定变量和时空范围下载。ctl文件的生成需要使用grib2ctlgribmap命令,不再赘述)

'reinit'
*打开地面位势文件
'open zsfc.ctl'
*打开气压层数据(包含位势zprs,温度tprs等变量)
'open pressure_level.ctl
'set lat 30'
'set lon 95 115'
'set lev 1000 70'
'set time 00Z01JAN2022'
'define z=zsfc'
'set gxout shade2b'
*绘制mask之后的温度剖面
'd maskout(tprs.2,zpr2.2-z)'
'draw title tprs 00Z01JAN2022 1mo'
‘cbarn'
'gxprint a.png white'
;

这样就可以将地形以下的数据mask掉了

效果图:

最新文章

  1. hadoop_elk架构图
  2. Java主要知识结构
  3. script标签不带属性与带async、defer的区别
  4. Java帮助文档的生成
  5. Ubuntu 13.10 安装 ia32-lib
  6. DNS子域委派配置案例[转载]
  7. selenium文件上传的实现
  8. 跳转到QQ聊天界面和QQ群界面
  9. [React] React Router: Nested Routes
  10. uc/os 笔记(转)
  11. 程序中非action获得spring容器
  12. head和tail命令-----得到头尾N行或者这去掉尾头N/N-1行
  13. Windows10 Ubuntu bash 配置 LAMP+JDK+Tomcat
  14. 记录下扣jio的2018年
  15. log4j日志输出框架
  16. sql中varchar(n),nvarchar(n) 长度性能及所占空间分析
  17. Rest风格理解
  18. Windows如何安装Android SDK
  19. 毒枭第一季/全集Narcos迅雷下载
  20. C#: 获取当前路径不要用Environment.CurrentDirectory

热门文章

  1. LeetCode-2013 检测正方形
  2. Ubuntu 桌面系统升级
  3. 快捷方法1:csdn如何不登录复制代码
  4. docker配置文件模板
  5. 【vite+pinia】
  6. vue 项目引入 jquery
  7. go环境 依赖管理 基本命令
  8. BS4&amp;xpath的使用
  9. wampServer本地php环境配置笔记
  10. 转载--文章(感谢米粒儿博主分享) 关于 Json.net序列化时间问题