基于Python 的气象数据文件自动传输系统设计
2023-12-04赖晓菲姜陈威
赖晓菲,姜陈威
(福建省漳州市气象局 福建 漳州 363000)
0 引言
近年来,自动气象观测站作为气象要素自动监测、存储、处理及传输的工具,为气象灾害监测和气象服务提供及时、准确的基本气象观测资料。 因此,准确可靠的气象信息和数据,是开展天气预报预警、气象预测评估以及科学研究的基础[1-2]。 自动气象站数据的备份和保存对气象业务的正常运行以及科学研究显得尤为重要[3]。 由于漳州市自动化气象站会实时传输每天的气象数据文件,需要人工对大量且实时数据进行备份,不仅比较烦琐,而且容易出现数据备份纰漏,因此有必要设计一套气象数据备份软件辅助业务人员备份数据,不仅能够提高数据备份时效性还能提高工作效率。 目前,Python 具有丰富而成熟的库和模块可供调用和开发,为软件开发提供了便利性[4-5]。 为此本研究基于Python 设计开发一套对采集到的气象站数据自动上传的软件,作为漳州自动气象站数据保存和备份的辅助工具。
1 设计内容与目标
通过分析漳州市气象数据文件的更新特点,本文设计开发出一套关于漳州市的气象数据文件自动传输系统,该软件应当实现的具体功能如下:
(1)实现可获取客户端的文件夹路径,可选择要上传的目标路径。
(2)实现局域网内的客户端都能访问并连接目标服务器。
(3)实现可选择获取目标服务器的IP 和可用传输端口。
(4)实现可选择服务器端的最终传输地址。
(5)实现自动识别最新日期的气象数据文件,并且每隔1 min 传输一次文件进行即时备份。
(6)对大量数据具有良好的缓存和传输功能。
(7)创建当日更新数据进行有效备份的传输日志,以便于业务人员监测并查看当日气象数据是否进行有效备份。
(8)实现局域网内的客户端和服务端能够快速建立传输连接响应,具有安全的存取模式。
2 设计原则
根据以上对系统功能需求的分析,该系统在满足基本功能外,还应满足系统当前和未来业务持续发展的需求。因此,本系统应具有以下特点:
(1)可靠性。 采用适合的系统框架能够长期稳定运行,能够及时传输实时更新的数据文件。
(2)可扩展性。 该软件应当在结构上和技术实现上,均具有较灵活的可扩展性,能够根据业务的发展扩展多样性的功能。
(3)便携性。 该软件为应用程序,无需安装。 点击打开即可直接使用,且软件体积较小,不会占用太多的磁盘空间。
3 技术路线
该系统基于Python 语言进行设计与开发。 采用灵活性较强的C/S 模式的系统框架,借助主流的开源技术,通过调用uvicorn、requsts 等第三方库实现与局域网内目标服务器的连接,并且通过QT 构建快速响应且简洁的客户端可视化图形界面[6-7],便于业务人员进行操作。 该应用程序适用于Windows 操作系统下运行。 如图1 所示,本系统分为客户端和服务端两部分,由于气象数据大且备份及时性的重要,因而进行数据备份也应当及时有效。 故而选择C/S 结构进行开发应用程序[8],基于C/S 结构的应用程序使得客户端与服务端能够直接相连,具有连接响应速度快速、交互性强并且还可以对大量数据进行缓存处理的特点[9],所以此结构开发的系统能够及时上传和备份当天数据。 如图1 所示,在客户端请求连接目标服务端,服务端响应请求后即表示两者已经连接,系统内已设置好发送的时间为每隔1 min 就检索客户端目标路径下最新日期的文件进行发送,客户端每次接收都会输出反馈信息和日志信息。
图1 系统框架示意图
(1)客户端部分。 调用QT 设计简易的可视化界面,可访问客户端文件路径,可填写服务端地址IP 和可用端口信息以及服务端存放的目标路径。 然后调用time、requests 等函数自动识别待上传的最新日期文件,并每隔1 min 上传一次文件。 以下为部分核心代码:
①界面设计部分
(2)服务端部分。 通过调用uvicorn、FastAPI 等函数获取当前服务端地址和端口号,等待客户端发出连接指令并建立连接,然后调用logging 函数去建立每日日志信息并写入。 以下为部分核心代码:
4 功能展示
基于Python 设计的气象数据文件自动传输系统软件可以访问客户端任意文件下的数据文件,如图2 所示为客户端传输系统可视化界面。 客户端可根据选择局域网内的服务端填写的其IP 和端口号进行连接,接着软件自动从客户端文件中提取相关信息,进行数据文件编码发送。用户选定目标服务器和保存路径后,点击开始后,数据文件将会自动每隔1 min 传输一次。 如图3 所示为服务端的传输界面,运行服务端后,Application startup complete 表示服务端的应用程序启动完成,Uvicon running on http 后面将显示自动获取可连接的服务端IP 和端口号。 就可以通过服务端的自动获取功能来填写客户端的信息,保证了客户端输入的准确性,为客户端和服务端的建立连接提供支持。
图2 客户端传输系统可视化界面
图3 服务端传输界面
整个系统在运行之前,应该首先将服务器端的应用程序在服务器端运行,服务端应用程序将自动获取服务器IP 以及可用端口号。 然后运行客户端程序选择地址选择文件夹,填写服务端地址后,点击设置服务器地址,此时服务端将响应连接,如图4 所示,输出set_path HTTP 表示建立http 连接,最后在客户端的可视化界面点击开始就会自动识别最新日期文件进行对应服务端地址传输,并且自动反馈更新传输的数据报文时间。 而且每次传输都将生成传输记录,如图5 所示,为2023 年5 月22 日的传输日志,第一条传输记录表示已接收2023 年5 月22 日的气象数据文件20:01 的数据,依次类推记录每天每分钟上传的数据记录,并且所有日志都存放在单独的日志文件夹中可供查询。 一旦点击开始传输文件,开始按钮将会跳转为结束按钮,如图6 所示,点击结束即终止传输。
图4 服务端连接状态
图5 传输日志
图6 客户端界面
5 结语
综上所述,该气象数据文件自动传输系统是基于Python 语言进行开发和设计的,通过PyQt5 设计客户端简易界面,遵循HTTP 协议能够比较快速与服务端建立连接,并且实现实时识别指定文件路径中最新日期的txt 文件,并定时完成文件传输,保障了气象数据文件的日常备份。 而且自动新建每日文件的传输日志以供业务人员进行数据备份的查看和监测,便于业务人员数据备份。 本系统遵循C/S 结构框架进行开发,单层的交互性为数据备份的传输提供了快速响应支撑,且有利于对大量气象数据进行缓存和传输。 本系统主要针对txt 的气象数据文件进行自动远程传输,可以适当增加传输的数据文件类型,便于扩展该系统的传输性能以及应用范围。 而且该系统主要是上传文件的功能,可以添加下载功能丰富系统应用。