2) 中国西安 710054 中国地震局第二监测中心
2) Second Monitoring and Application Center, China Earthquake Administration, Xi'an 710054, China
地震分析会商系统通过对测震资料和地球物理资料的宏观及微观异常分析得到地震趋势预测意见,是多学科交叉的综合性系统工程,涉及地震分析、计算机技术和信息处理等技术领域(李谊瑞等,1989)。随着国家战略需求的不断发展,建设多信息多数据融合的地震分析预报会商系统成为发展趋势。研究发现,地震与气象要素变化具有密切联系(周辉等,2017;马华锋等,2024;李见等,2024;徐锡统,2024),因此对气象数据的整合与利用,无论是对推进地震会商技术系统建设还是震后次生灾害的防范与人员救助,具有重要的研究意义与应用价值(祝晓红,2015)。
气象观测数据包括气温、气压、比湿、风速、太阳短波辐射和降雨量等要素数据,通常存储在NetCDF(Network Common Data Format,一种网络通用数据格式)文件中(顾洪等,2012)。NetCDF是一种自描述的二进制数据格式,包含描述纬度和变量的元数据信息。目前常用的NetCDF数据读取方式主要有3种:①利用NetCDF4Excel插件,可直观查看数据结构,操作简单,缺点是数据存储形式为表格,需要解析后存入数据库才能进一步使用数据;②利用MATLAB/GrADS等软件打开(丁晶等,2024),可通过自带工具箱读取NetCDF数据,但过程繁琐,尤其是GrADS,需要了解GS描述语言(马红云等,2011);③通过C#/R语言等程序读取(刘培宁等,2014;王长利,2016),优点是效率高,但跨平台性能较差,例如C#,需要引入较多动态链接库,比较耗费资源,同时需要掌握一定编程语言基础。为了更好地利用气象数据资源,需要将解析数据文件存储到数据库中,以便对外界提供数据服务。通常使用数据库技术和ASP.NET(于平等,2008)或编程语言(肖勇等,2016)将数据导入数据库,但技术复杂,需要编写单独的代码块。而Python语言是一种解释型语言,具有语法简单易学、支撑库强大、可实现跨平台移植以及资源耗费低等优点。
本文将使用Python语言,对各类气象观测数据进行解析(王若曈等,2015),通过执行文件的批处理操作,实现数据文件的高效解析,然后将解析代码集成在数据专家Datist(多源数据融合专家应用软件,简称数据专家)中,建立Datist流程,对解析文件进行辟分与合并,存入数据库MySQL。此方法简单,可操作性强,无需掌握数据库技术和编程知识,即可方便快捷且高效地实现数据入库功能。
1 功能原理地震分析会商系统气象数据整合原理框图见图 1。原始气象要素数据文件后缀为.nc,需要对文件解析处理以便得到具体的维度、变量以及数据信息,其中维度表示每个变量的维度名及长度,而变量包含了维度、属性(如数据单位)信息及变量的值。将解析处理数据经数据库操作存入对应数据库,与其他数据作为数据资源层,为其他应用程序提供数据服务。
![]() |
图 1 数据整合原理框图 Fig.1 Framework diagram of data integration |
气象文件解析与入库包括原始气象数据的解析处理和入库操作2部分。数据解析处理过程如下:使用Python代码从气象要素数据文件夹获取所有nc文件,经遍历解析代码得到每个nc文件对应的维度信息和具体要素数据,输出为文本格式文件并保存。目前,气象观测数据包括气温、气压、比湿、风速、太阳短波辐射和降雨量等要素,观测时间分辨率为1 h,每种要素对应24 h数据,在解析并保存文件时,需要注意区分不同文件,防止数据混淆。最后,将处理过的数据集成在数据专家Datist节点中,方便后续调用。
利用Datist将数据写入数据库。由于解析数据放在一个文件夹中,不便于后续操作,通过“数据转存”节点,按气象因素保存在对应文件中。解析数据的变量包括一维变量(经纬度)和二维变量(降水量、温度等),其中一维数据可以直接写入数据库,而二维数据则需经过辟分处理找到值和维度的对应关系,合并后共同存入数据库。最后,将不需要的字段进行过滤和排序后存入数据库。
2 功能设计与实现 2.1 原始气象要素文件解析原始气象文件包括6种类别的要素文件,存储格式为NetCDF,时间分辨率为1 h,每天24个时次,空间分辨率为(1/16)°×(1/16)°。解析过程如下:获取原始气象nc文件,对其进行遍历解析,查看具体维度和变量数据,将数据保存为文本格式。
(1)文件格式。原始气象文件包括气温、气压、比湿、风速、降水、太阳短波辐射等要素,文件名命名规则为:P_CLDAS_RE01_EA16_要素_HOUR_yyyymmddhh.nc。其中:P为固定代码;CLDAS代表CMA陆面数据同化系统产品;RE01表示第1次再处理产品;EA16表示产品区域是东亚区域和(1/16)°分辨率;要素表示产品要素名称,其中TMP代表气温、RRS代表气压、RHU代表比湿、WIN代表风速、SRA代表太阳短波辐射、PRE代表降水;HOUR表示小时产品;nc表示文件类型是NetCDF格式数据。
6个要素各自对应24个小时文件记录,可根据文件名确定当前文件类别和数据采集日期。
(2).nc文件解析。解析文件主要用到NetCDF4和numpy包,前者用来解析.nc文件,后者用来将数据保存为.txt文本。部分代码如下
import netCDF4 #加载NetCDF4模块
from netCDF4 import Dataset #从NetCDF4模块加载Dataset方法
import numpy as np #加载numpy模块
filenames = get_filename(srcfilepath,filetype) #调用方法,获得.nc文件
for filename in filenames: #遍历.nc文件
file_path = “.data/{filename}”.format(filename = str(filename))
global nc_obj #开始解析.nc文件
nc_obj=Dataset(file_path)
取2015年1月1日0时降水量文件P_CLDAS_RE01_EA16_PRE_HOUR_2015010100.nc进行解析,以二维数组形式给出解析数据,结果包含降水量数据(图 2)和经纬度范围(图 3),其中:经度范围60.03°—159.96°E,纬度范围0.03°—64.96°N。
![]() |
图 2 降水量数据解析 Fig.2 Precipitation data analysis |
![]() |
图 3 经纬度范围解析 Fig.3 Latitude and Longitude range analysis |
数据专家Datist软件由长安大学研发,专项服务于大数据时代的数据整合与融合,通过可视化节点组合完成数据的获取、组合、整合、过滤及有形化表达,其最大特点是遵循零代码原则,无需掌握复杂的编程技术,通过排列组合各功能节点,调用节点函数即可实现对海量多源数据的整合、查询以及报告生成等批量化处理过程①。为了实现气象数据的安全保存,实现最大程度的数据共享(李丽等,2021),选择MySQL数据库作为数据存储方式。
① 崔维庚. Datist多源数据融合专家应用软件. 陕西省:西安数源软件有限公司,2016-07-01.
利用数据专家,建立解析数据入库节点,具体流程如下:将解析代码植入Python接口节点,通过变量传参,方便灵活地引入气象nc文件路径,定义输出解析数据的存储文件路径;利用扫描目录节点,扫描存储解析数据的存储文件夹,并通过数据项转存节点,将文件按值、经度和纬度分别存储在不同文件夹下。解析值为二维数组形式(1 040×600),需对该值进行按行辟分操作,先后与经纬度合并,存入数据库节点,并将合并的完整数据存入MySQL数据库。
在将整合数据存入数据库前,插入一个初始化时间节点,以便为数据库初始化时间字段赋值,记录数据变更时间。数据专家运行日志窗口(图 4)用来显示运行状态和结果,通过运行日志,可方便快速地查看每个节点的输出状态信息,及时调整工作流程。基于数据专家“写入数据库”节点,将数据存入MySQL数据库。流程将根据过滤条件自动建立数据表及其字段。图 5展示某24小时降水量数据存入MySQL数据库的结果,记录条数为39 936 000,其中:id表示字段名,lon表示经度,lat表示纬度,prcp表示降水量,datatime表示采集时间,init_date表示初始化时间。
![]() |
图 4 数据专家的入库运行报告 Fig.4 Operation report of the Datist |
![]() |
图 5 降水量数据存入MySQL数据库 Fig.5 Precipitation data are deposited in the MySQL database |
为构建多信息、多数据融合的地震分析预报会商技术系统,采用Python技术解析气象数据文件,并将其集成到数据专家节点中,利用Datist节点流程方法,将数据存储(张秀萍等,2020)到MySQL数据库,实现海量气象数据的处理与整合。该方法具有高效、快捷、灵活等特点。使用数据专家节点流程方法,不仅能够将数据写入多种数据库(如MySQL、Access、Oracle),还可写入.docx、.csv、.xlsx等格式文件。此外,其支持数据可视化应用,方便高效,可为地震会商研判提供丰富的数据资源和数据支持,对推进地震会商技术系统建设具有重要的研究意义与应用价值。
丁晶, 李丽, 高也, 等. FDSN服务鉴权的设计与实现[J]. 地震地磁观测与研究, 2024, 45(3): 161-167. DOI:10.3969/j.issn.1003-3246.2024.03.021 |
顾洪, 李昀英. NC格式气象数据无损压缩研究[J]. 计算机工程与应用, 2012, 48(9): 90-91. |
李见, 李庆, 吴谋, 等. 2024年云南巍山MS 4.2地震前下关温泉水温变化特征分析[J]. 高原地震, 2024, 36(2): 7-11. |
李丽, 赵国峰, 庞丽娜, 等. 国家地震科学数据中心特色数据(集)出版与共享[J]. 地震地磁观测与研究, 2021, 42(4): 170-172. DOI:10.3969/j.issn.1003-3246.2021.04.022 |
李谊瑞, 徐京华. 我国地震监视与震情分析会商系统建设工作概述[J]. 国际地震动态, 1989(8): 1-5. |
刘培宁, 韩笑, 杨福兴. 基于R语言的NetCDF文件分析和可视化应用[J]. 气象科技, 2014, 42(4): 629-634. |
马红云, 李丽平. GrADS软件基础教程[M]. 北京: 气象出版社, 2011.
|
马华锋, 李黎, 王永哲, 等. 地震前后地表温度和水汽异常变化分析[J/OL]. 地球物理学进展, (2024-09-05)[2024-12-31]. http://kns.cnki.net/kcms/detail/11.2982.P.20240905.1453.014.html.
|
王若曈, 黄向东, 张博, 等. 海量气象数据实时解析与存储系统的设计与实现[J]. 计算机工程与科学, 2015, 37(11): 2 045-2 054. |
王长利. 基于C#的气象原始观测数据的分析与处理[J]. 贵州气象, 2016, 40(1): 45-49. |
肖勇, 郭金慧. 区域自动气象站质量控制技术的研究及应用[J]. 气象水文海洋仪器, 2016, 33(1): 98-101. |
徐锡统. 地震扰动下地球多圈层异常分析及其演化模式研究[D]. 长春: 吉林大学, 2024.
|
于平, 李汉彬, 段海花, 等. 市级自动气象站数据库显示系统的设计与实现[J]. 广东气象, 2008, 30(6): 57-58. |
张秀萍, 李君, 袁林, 等. 基于Datist的地震目录资料自动下载与数据存储[J]. 防灾减灾学报, 2020, 36(1): 87-91. |
周辉, 王文青, 赵峰, 等. 基于Android的跨断层测距记簿程序的开发[J]. 现代电子技术, 2017, 40(1): 17-19. |
祝晓红. 浅析南阳地震与气象要素变化的关系[J]. 安徽农业科学, 2015, 43(26): 245-246. |