常用工具下载

当前位置: 首页 > 资料下载 > 常用工具下载 > 正文

MICAPS气象数据产品小程序(一)MDFS站点数据读写

作者:樊仲欣浏览量:时间:2022-03-21

MICAPS气象数据产品小程序

(一)MDFS站点数据读写

传统的天气预报以纸质天气图为主要工具,以预报员手工作业为主要制作方式。但是随着计算机在天气预报业务中的应用,从1995年开始,我国借鉴外国先进的技术再结合自身的情况,由国家气象局组织开发了微机和工作站两个版本的气象信息综合分析处理系统(Meteorological Information Comprehensive Analysis And Process System,简称MICAPS),为预报员提供了一个统一标准的人机交互平台,实现了纸质天气图的信息化转变。MICAPS提供了较全面的分析工具和较强的交互功能,可以显示各种气象数据和天气图形,具有叠加、动画、缩放、漫游等功能。同时预报员还可以在MICAPS里面修改和绘制天气图,轻松的完成天气预报的生成和编辑,至今MICAPS系统已由1.0版逐步升级更新到了4.8版,系统的后端数据产品存储也由文件数据库发展成为了分布式数据库,数据资料格式则由原先DIAMOND开头的文本文件转为了MDFS开头的二进制文件,这一切都是为了适应现代气象业务的快速发展对气象信息传输量和传输时效所提出的更高要求。总之MICAPS作为国内使用最广泛的天气预报工作平台,一直在各级气象业务单位的预报和服务工作中承担着关键的角色。

南京信息工程大学上世纪90年代就引进了MICAPS系统,从MICAPS2.0一直用到现在的MICAPS4.5,并接入国家气象局CMAcast系统获取实时气象数据,因此保存有从1995年开始至今的MICAPS数据产品。该系列产品按照数据格式主要分为两类,(1MICAPS2.03.0系列使用的DIAMOND文本文件,(2MICAPS4.0以后使用的MDFS二进制文件(MICAPS4系列也兼容DIAMOND格式文件),其中MDFS的二进制格式因为其可读性较差不易编程处理的原因,所以仅在MICAPS4系列的客户端软件中能够图形化展示,而一般用于编程处理的则是经过格式转换的MDFS文本文件,如下图1所示。


1 MDFS文本文件

那么由于2020年前后国家气象局BURF数据切换的原因,原DIAMOND格式文件的地面高空站点资料中不再存储中国区域的数据,因此从2020年开始南京信息工程大学大气与环境实验教学中心便开始采用MDFS文本文件的方式保存地面高空站点的历史气象数据(文件名以mdfs_ANSI开头),所以针对这种不同于传统DIAMOND格式的站点数据需要如何编程进行读写,就是本文将介绍的内容。

首先介绍地面高空站点的MDFS文本文件,该类型文件从20204月开始至今,包括子类别50余种,地面站点有覆盖全球的两千多国际交换站和全国的两千多国家站,高空站点有覆盖全球的四百多国际交换站,观测时间分辨率从逐日到逐小时不等。

其次分析其文件内容如图1可见,数据头部分是元数据信息,描述了该文件的气象要素、时间(北京时)、高度等共有信息,而站点文件则还有独有的站点数信息。接下来数据区部分采用的是类似于json(JavaScript Object Notation)的文件格式,一级键名是站点编号,键值嵌套二级键,二级键键名则是要素编号和对应的要素值作为键值,其中要素编号有对应的表格可查其中文含义(如附属源代码中elemname.txt文件所示),且要素编号是无序的并在缺测时不出现。

最后编程对MDFS文本文件进行读写,考虑到地面高空站点资料的子类别众多,因此选择了气象要素种类最多且最为常用的地面填图资料作为案例,并分为matlabpython两个篇幅进行介绍,前者在科研中应用广泛,后者则是目前气象上常用的编程语言。

一、matlab

Matlab处理json文件需要用到json4mat程序包(附属源代码已包含),但由于MDFS文本文件的格式并不完全符合json标准要求的原因,因此在读取文件并保存数据区内容到变量后,需要用正则表达式将一级和二级的键名全部变为字符串格式,也就是在键名前增加字符’M’使json4mat可将其识别为json的标准键名,同时由于json中键名和键值要求用‘:’隔开但MDFS文本文件用的却是‘=’,因此也需要做替换。此外matlab中和json对应的数据结构是struct(结构体),因此考虑到matlab中结构体不能直接嵌套需要在中间增加一层cell(元胞数组)的原因,所以在json4mat识别为结构体的大括号的前后需要增加一对中括号以便于json4mat将其识别为元胞数组。

附属源代码(matlab2019b):https://etcme.nuist.edu.cn/zlxz/cygjxz.htm

二、python

因为python是开源软件,所以在程序运行前需要手动安装配置好相关的程序包,处理json需要用到demjson3(该程序包适用于python3),其与本程序其它相关程序包版本如图2

2 python程序包配置

Pythonjson对应的数据结构是dict(字典),由于python自带的json程序包也存在要求键名必须为字符串格式的原因,所以使用demjson3程序包来解决这个问题,此外使用demjson3仍需要将‘=’替换为‘:’隔开键名和键值。

附属源代码(pycharm2021.2.1):https://etcme.nuist.edu.cn/zlxz/cygjxz.htm


  • 附件【M001_matlab.rar】已下载
  • 附件【P001_python.rar】已下载