2. 中国山西 030025 太原大陆裂谷动力学国家野外科学观测研究站
2. National Continental Rift Valley Dynamics Observatory of Taiyuan, Shanxi Province 030025, China
JOPENS是专为“十五”中国数字地震观测网络项目开发的测震软件,JOPENS-UCS为JOPENS系统新开发的全国统一编目系统,JOPENS-UCS的国家台站版于2016年10月在国家地震台试运行与并行运行。该系统实现了单台系统服务端上移统一集中部署,分布运行和协同工作(吴永权等,2010;广东省地震局,2016)。国家地震台站本地不再存储连续波形,但在网络数据传输中断时,远程服务器的数据接收系统不能自动从数据采集器(以下简称数采)补充中断的数据,导致本台数据在远程服务器的数据库中有断记。本台值班人员每日需进行数据中断统计、数采波形数据文件下载和上传波形数据文件至远程服务器等一系列操作实现补数。对补数进行的繁琐的手工操作流程,可通过编程方式实现自动化处理。文中介绍了一款补数自动处理程序,在微软VS2015开发环境下,使用C#语言,编程实现数据中断统计、数采波形数据文件下载和上传波形数据文件至远程服务器的自动处理。
1 补数自动处理程序设计国家地震台站值班人员每日需通过浏览器访问页面查看本台数据在远程服务器中的断记统计信息(图 1),如有断记,以港震机电有限公司的数据采集器(以下简称港震数采)为例,使用FTP客户端软件从本台数采下载相应小时的波形数据文件,通过SSH客户端上传至远程服务器相应目录下,远程服务器上的程序自动对数据波形文件进行转换并填充到数据库,30 min后可再次查看断记统计信息,以确认补数是否成功。在微软VS2015开发环境下,使用C#语言编写补数自动处理程序,实现以上补数流程的自动处理。程序的主要操作流程见图 2。
除采用图 1所示交互式查询断记统计,也可在浏览器的地址栏中输入包含查询参数的网址获得,格式如下:http://xxx.xxx.xxx.xxx:xxxx/jopens-ws/app/aws/gidx;chan=GD.SHT.00.HHZ;year=2016;jday=275;nday=10;type=gapstat,此方式更易于编程实现。其中:chan=GD.SHT.00.HHZ,表示需要查询的台站信息;year=2016,表示起始时间的年份;jday=275,表示起始时间中日期的儒勒日表示,275表示2016年10月1日;nday=10,表示需要查询统计的天数,10表示10天;type=gapstat,表示查询的类型(广东省地震局,2016)。
查询类型中gaps以断记块为目标,gapstat是以小时统计为目标,图 1为type=gapstat时的查询结果,需注意,查询断记时间为UTC时间。由于一个台站的几个通道断记信息可能不一致,需分别对各通道进行统计后汇总。
在C#中,按上述规则构造包含查询参数的网址到remoteUri变量,使用System.Net.WebClient. DownloadData()方法,以Byte数组形式通过指定的URI下载资源,从Byte数组得到断记统计查询结果的字符串download,经简单解析,可得到断记的小时列表,用于下一步从数采下载相应小时的波形数据文件,部分代码如下
System.Net.WebClient myWebClient = new System.Net.WebClient();
Byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);
String download = Encoding.ASCII.GetString(myDataBuffer);
2.2 数采波形数据文件下载目前各类数采均提供用户下载本地存储数据的接口,根据数采型号的不同,采用相应下载工具将波形数据文件下载到本地(黄金刚等,2017)。如:港震数采提供FTP,用户可以使用FTP工具下载波形数据;英国Guralp数采提供Web网页方式,用户登录数采网页下载波形数据。
以港震数采为例,波形数据文件保存在其内部存储区(buffer),有空间管理程序自动维护。如有外部存储器,数据采集器每日13时定时备份记录buffer目录区前一天连续波形数据等文件到外部存储区。当buffer区数据记录超过存储空间的90%时,程序自动删除记录最早的波形文件,以保留空间记录新数据(北京港震机电技术有限公司,2000)。
港震数采提供FTP方式获取波形数据文件。采用Win32 API编程方式,调用wininet.dll的资源进行FTP编程。使用wininet.dll前须对其各函数进行声明,如下载文件函数的声明如下
Public Declare Function FtpGetFile Lib “wininet.dll” Alias “FtpGetFileA” _
(ByVal hFtpSession As Integer, _
ByVal lpszRemoteFile As String, _
ByVal lpszNewFile As String, _
ByVal fFailIfExists As Boolean, _
ByVal dwLocalFlagsAndAttributes As Integer, _
ByVal dwInternetFlags As Integer, _
ByVal dwContext As Integer) As Boolean
声明后即可在代码中使用FtpGetFile()函数进行文件下载。一个完整的FTP下载过程包含打开链接、打开FTP服务、下载文件、关闭FTP服务、关闭链接5个步骤(刘晓萍等,2016)。
2.3 波形文件上传到远程服务器SSH是目前较可靠、专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。从客户端来看,SSH提供2种级别的安全验证:①基于口令的安全验证;②基于密匙的安全验证。SSH主要由传输层协议SSH-TRANS、用户认证协议SSH-USERAUTH和连接协议SSH-CONNECT3部分组成(百度百科)。采用github上的开源项目RenciSshNet类库实现SSH协议下的SFTP操作,将从数采下载的波形文件上传到远程服务器本台的补数目录。部分代码如下
using (var sFtp = new SftpClient(host, port, username, password))
{
sFtp.Connect();
Stream input = File.OpenRead(winFilePath);
sFtp.UploadFile(input, linuxFilePath, true);
input.Close();
input.Dispose();
sFtp.Disconnect();
sFtp.Dispose();
}
3 程序运行补数自动处理程序可在Windows平台下,.NET Framework4.0环境运行。运行前需对远程服务器的IP、SSH端口和账号、本台数据采集器的IP和FTP端口及账号等信息参数进行设置。由于程序有远程登录操作,若安全软件提示病毒,需忽略并设为白名单。
程序启动,依次点击相应按钮实现“断记统计”、“FTP下载”和“SSH上传”,也可点击“自动完成”(图 3),程序将自动完成以上操作,并在设定时间后再次进行断记统计,以查看补数是否成功。程序在文本框中显示执行的详细信息,见图 3。
建议每日上午运行一次补数程序,否则对于港震数采,在有外部存储器情况下,还需操作数采的“打开外部存储器”,以下载更早的连续波形文件。
4 结束语国家地震台补数流程的自动处理程序减少了人工操作步骤,可节省大量人力、物力。自2018年在部分地震台使用以来,运行良好,数据完整率、连续率得到保障,工作效率明显提升。目前该程序仅支持港震数采的FTP方式下载波形数据文件,今后将编程实现支持其他常见数采的波形数据文件下载。补数自动处理程序可在其他国家地震台进行推广使用,介绍的编程方法对有类似需求的人员有一定参考和借鉴价值。
北京港震机电技术有限公司.地震数据采集器EDAS-24IP用户指南[S].北京: 北京港震机电技术有限公司, 2000. | |
广东省地震局.全国统一编目系统JOPENS6.0-UCS国家台用户手册[S].广州: 广东省地震局, 2016. | |
黄金刚, 张仰辉, 郭林旺. 测震台网数据传输补数技术[J]. 地震地磁观测与研究, 2017, 38(3): 209-213. DOI:10.3969/j.issn.1003-3246.2017.03.036 | |
刘晓萍, 杨世英, 孟彩菊, 等. 电磁波数据台站日常处理程序的应用[J]. 山西地震, 2016(2): 14-17. DOI:10.3969/j.issn.1000-6265.2016.02.004 | |
吴永权, 黄文辉. 数据处理系统软件JOPENS的架构设计与实现[J]. 地震地磁观测与研究, 2010, 31(6): 59-63. DOI:10.3969/j.issn.1003-3246.2010.06.011 |