CMPAS-1KM 产品在内蒙区域雨情图的应用
2023-10-10杜宇,陶鑫
杜 宇,陶 鑫
(内蒙古自治区气象数据中心,内蒙古 呼和浩特 010010)
随着信息技术的发展,降水获取的方法越来越丰富,常规获取降水的方法是通过建设观测站观测降水量,但是这只能表示区域中某点或一小范围的降水情况;比较新的手段则是通过雷达测雨和卫星反演降水。目前为止,观测站网仍旧是观测降水的主要手段,但是其观测的降水量在空间上是非规则离散分布的且大部分区域建设的观测站密度比较稀疏,不能完整地反映真实降水在空间上的连续分布,需要利用现有的观测站的数据通过空间插值的方法对观测数据进行插值得到一个均匀分布的网格数据。近年来,随着卫星、雷达估测降水和数据融合技术的发展,多源融合降水资料逐渐在网格数据的计算中得到了广泛的应用,国家气象信息中心研制的CMPAS 降水实况产品分辨率也从最初的5KM 提高到了1KM,许多数据质量评估结果表明:CMPAS-1KM 产品总体质量高于地面观测站单一来源的降水,对强降水和空间分布的细节把握更加准确[1],文中将对CMPAS-1KM 产品在内蒙区域的雨情图制作应用做详细介绍。
1 研究区域和数据说明
1.1 研究区域
内蒙古自治区,简称“内蒙古”,地处中国北部,地理上位于北纬37 度24 分至53 度23 分,东经97 度12 分至126 度04 分之间,平均海拔高度1KM 左右。地势由东北向西南斜伸,呈狭长形。全区地形涵盖平原丘陵、山地,地貌涵盖草地、湿地、裸地、灌木地、人造地表、耕地、森林、水体,全区观测站点分布东西稀疏。
1.2 数据说明
地面降水观测资料:内蒙古自治区119 个国家级地面自动站、33 个无人站和2285 个区域自动站中质控码为0、3、4(正确、修改和订正)的逐小时降水观测数据。
CMPAS-1K 产品:内蒙古区域逐小时降水实时融合实况分析产品,来源于国家气象信息中心,时间分辨率为1h、空间分辨率0.01 度*0.01 度,是将地面资料、卫星资料和雷达资料三种产品,使用概率密度PDF(Probability Density Function)匹配方法、贝叶斯模式平均法,采用最优插值方法将三种数据源进行融合生成的多源融合降水产品[2-3]。
2 研究方法
内蒙区域雨情图绘制是基于Python 语言和cartopy类库开发的,目前仅支持全区降水色斑图的制作,由于微信小程序部署在互联网,绘图程序部署在内网,因此需要将生成的色斑图进行Base64 编码保存至数据库中,然后在客户端进行解码显示。
2.1 数据下载
地面降水观测资料和CMPAS-1KM 产品均存储在内蒙古气象数据中心核心业务系统-内蒙区气象大数据云平台(以下简称天擎)数据环境中,为了方便用户快速便捷的下载数据,提供了全国统一标准丰富的数据访问接口和应用编程接口,用于数据下载,天擎的服务接口主要功能:
1.强大的数据服务能力。无需编写sql 语句,即可实现数据下载,包括站点数据的检索、统计,格点资料的下载和解析。此外,还提供了数据写入功能,包括对站点资料、文件产品写入。
2.多样的数据服务方式。包括客户端调用服务、REST 服务和脚本方式。客户端调用服务场景是大数据量下载;REST 服务主要面向WEB 工程的前台交互应用;脚本方式则是服务不擅长编程的科研用户,无需编程也可实现数据下载。
3.跨平台、多语言的开发场景。REST 服务支持所有平台和语言的调用。客户端调用服务和脚本服务,支持主流的操作系统,其包括了Linux 64bit、HP-UX、Windows 64bit 等,提供多种语言的客户端开发包,包括C#、Java、Python 等。
内蒙区域雨情图制作所用到的资料包括中国地面逐小时资料的资料代码是SURF_CHN_MUL_HOR,服务接口是statSurfEleInRegion;CMPAS-1KM 产品的资料代码是SURF_CMPAS_MUL_1KM_RT,服务接口是getSurfFileByTime Range,为了确保数据安全,对数据下载拼接的URL 进行加密。
2.2 数据加工处理
通过天擎接口下载的中国地面逐小时资料通过调用统计接口即可完成24 小时累积降水的加工,但是CMPAS-1KM 产品是GRB2 数据格式,需要进行解码统计才可实现24 小时累积降水的计算,而且该小时产品是不定时更新的,同一观测时次可能会下载到多个产品,为了保证数据的准确性,因此需要对下载的产品文件进行加工处理。
1.预处理:预处理的主要作用是去除24 小时内重复的产品,CMPAS-1KM 产品文件命名规则为Z_SURF_C_BABJ_yyyymmddhh24miss_P_CMPA_RT_BEHT_0P01_HORPRE-yyyymmddhh24.GRB2,为了保障数据的及时性,CMP AS 产品在同一时次会滚动更新从而生成多个文件,为了保障数据的准确性则需要剔除一些重复的产品。剔除方法是定义一个字典,遍历当前时次所有产品,以资料时间为键值,将产品文件路径存储到字典中,然后按照资料生成的时间比较同一时次产品,选取最新生成时间的产品替换字典中的产品,从而获得最准确的CMPAS-1KM 产品。
2.完整性检查:判断预处理流程字典大小,字典存储24 个文件则资料完整进入第三步完成加工统计生成新的产品,否则进行补掉回算。
3.加工统计:解码选用的是ecCodes 工具,它是欧洲中期天气预报中心(ECMWF)开发的数据文件I/O 程序集,提供了GRIB、GRIB2、BUFR3、BUFR4 和GTS等标准数据文件解码接口。
遍历24个时次的逐小时CMPAS-1KM产品,利用ecCodes的codes_grib_new_from_file 函数打开文件,codes_get_values 函数读取每个格点的降水数据,codes_get 函数获取产品的经度和纬度,然后将24 个时次的降水数据进行累积。为了绘制雨情图,将统计后的24 小时累积降水数据重新生成NC 文件存储,ecCodes 读取的降水数据是一维的,需要结合经纬度信息将一维转换为二维存储,主要代码如表1 所示[4]。
表1
2.3 雨情图生成
Cartopy是一个开源免费的第三方Python扩展包,主要利用Matplotlib 来画图,内置了投影接口、底图接口和填充图接口。站点数据绘制雨情图,需要通过插值算法将分布不均匀的站点数据插值到空间分布的格点,而CMPAS-24H 产品是标准的等经纬度NC 格点数据,不需要插值,可以直接使用Cartoy 绘制雨情图[5-6]。
1.数据解析:NETCDF 文件包含维度、变量和属性信息,其中维度表示的是真实的物理维度,如时间、经度、纬度和高度等信息,变量则表示同一类型值的数据,网格降水数据则存储在变量中,大小由维度决定,属性则是存储辅助数据或元数据。利用NETCDF 包的Dataset 函数读取CMPAS-24H 统计产品,获取内蒙区域的经度、纬度和降水网格数据。
2.画布设置:设置色斑图绘制画布,图片大小为400dpi,常用的投影有默认投影、墨卡托投影和兰勃脱投影。默认投影适合单独省份或者地级市的绘制,兰勃脱投影适合中纬度大范围绘制,比如绘制全国、东亚形势、西北太平洋等;墨卡托投影适合低纬度赤道附近的绘制,一般研究台风、纬向环流等为等经纬度投影,文中使用默认投影。
3.边界设置:包括底图信息和显示区域。添加底图信息,读取内蒙区域的shap 文件并调用axe.add_feature 函数实现;定义显示区域则设置经纬度范围为[95,128,35,55]并调用set_extent 函数。
4.色标配置:不同月份降水相态不同,夏季为雨,冬季为雪,根据降雨或降雪量级设置不同的色标。(见表2)
表2
调 用matplotlib.colors 的ListedColormap 函 数生成颜色数组,然后调用BoundaryNorm 函数将颜色数组和降水量实现映射。
5.雨情图绘制及掩膜配置:绘制雨情图需要先将经度和纬度网格化,然后实现雨情图绘制,传递的参数包括经度网格、纬度网格、色标及投影等信息;绘制的图形是标准的矩形,为了更突出内蒙区域,读取中国shape 文件,将内蒙区域外进行白化处理,只绘制内蒙区域的降水色斑图。
3 业务应用
分别基于CMPAS-1KM 产品和观测站点绘制了内蒙区域雨情图,总体分布趋势,二者表现是一致的,但是CMPAS-1KM 产品绘制的雨情图在站点稀疏的区域更加平滑,且对降水量较大的区域表现更为准确。CMPAS-1KM 产品具有覆盖全面、分布均匀的优势,能够精确地反映雨量的实况,为内蒙区域的雨量监测提供了基础数据支撑,“雨在哪”微信小程序实现了内蒙区域滚动24 小时雨情实时监测。
4 结语
目前,国家气象信息中心已经将多源数据融合实况分析产品制作算法打包封装为工具下发至省级,计划开展融合本省特色资料,加强数据质量控制,利用此算法在本地生成内蒙区域的多源降水融合产品,进一步提高产品的生成时效和质量。