禁核试北京国家数据中心(NDC)是我国履行全面禁止核试验条约(CTBT)的专门机构,主要开展核查监测数据的汇集、处理、分析等工作。在数据处理系统自动处理阶段,由于近实时接入数据的台站数量有限,NDC需要依据事件的初步信息(时间、位置等),收集实时台站外的其他台站数据作为辅助性地震监测数据,以开展下一阶段工作并改善处理结果。美国地震学研究联合会(IRIS)是我国NDC重要辅助性地震监测数据来源之一。目前辅助性地震监测数据的台站筛选、数据申请与导入主要依赖人工手动完成,无法实现自动化,主要困难体现在:对于不同事件,NDC可能需要申请不同台站的监测数据,而IRIS提供历史监测数据和近实时监测数据的台站众多,可达几千个;符合NDC筛选条件的台站在待申请数据时段内可能没有监测数据产出,或者IRIS并不提供监测数据;在长期运行中,IRIS台站数量一直在变化,且大量台站历经位置变迁、设备变更或标定,在台站的生命周期内,台站元数据并非一成不变,NDC在处理历史数据时,现有台站元数据与监测数据可能需要重新匹配。因此,为实现辅助性地震监测数据的台站筛选、数据申请与导入过程的自动化,基于网页提取与分析技术,开发IRIS台站元数据抓取程序,设计并建立NDC的IRIS台站元数据库,实现IRIS台站元数据从IRIS向NDC的定期自动同步。
1 台站元数据库设计与建立IRIS提供监测数据的台站分为固定台站和临时台站2大类,前者连续长期实时运行。在NDC建立台站元数据库的目的是,在本地存储IRIS固定台和临时台的基本信息、位置信息、仪器信息、仪器响应信息、监测数据可用性信息和辅助信息。其中:台站的基本信息与位置信息主要包括台站类型、启/停用时间、经纬度、高程、位置码、通道代码、通道启/停用时间、采样率等数据;仪器信息包括仪器类型、灵敏度等数据;仪器响应信息以RESP文件和SACPZ文件给出;监测数据可用性信息包括是否提供准实时数据、归档数据以及相应的数据服务时间窗;辅助信息用于区分IRIS台站和全面禁止核试验条约组织(CTBTO)国际监测系统(IMS)的台站。IRIS台站元数据库结构见图 1,包含8张台站元数据库表,各表的名称及用途见表 1。
IRIS通过多种方式提供台站元数据查询与获取服务,主要有直接下载、网络服务和元数据池3种形式。
(1)直接下载。用户通过邮件申请或者工具下载某个或某些台站的元数据,且元数据以Dataless SEED(FDSN et al,2012)或者StationXML(FDSN)的标准格式提供。这种方式需要在完成台站筛选后进行。
(2)网络服务。使用工具或浏览器,调用IRIS预先设置的数据库查询条件语句。网络服务方式的缺点是有限定条件,不够灵活。
(3)元数据池。元数据池是IRIS所有台站元数据的汇集地。IRIS通过多级网页供用户浏览,大规模查询时,人工浏览页面较为复杂。
根据上述3种方式的响应速度、可行性、灵活性及NDC的实际需求,选择第3种方式,即从IRIS元数据汇集池的网页完成内容提取与分析。
网站爬取的本质是下载感兴趣数据的网页,常见爬取方法(Lawson,2016)有:爬取网站地图、遍历每个网页的数据库ID、跟踪网页链接。本研究不需要爬取IRIS网站的所有内容,可直接从IRIS元数据汇集池的根网页http://ds.iris.edu/mda/#vnetlist开始,分析并提取基本信息,跟踪网络链接,重复上述分析、提取、跟踪的过程,直至提取所需要台站元数据。
2.2 台站元数据的抓取策略由于台站数量较大,为尽可能避免因频繁访问导致服务端重置或连接封锁时的数据抓取失败,且在某些场景下,只需更新待申请数据台站的元数据或当前变更时间段的元数据,拟采用分级抓取形式(谢克武,2017),抓取台网信息、台站信息、通道信息及详细信息。
按照IRIS网页的链接嵌套深度,将台站元数据的更新分为4级:台网信息、台站信息、通道信息和详细信息,其中:台网信息包括台网类型、区域、启用与停用年度、所包括的台站数量、准实时数据的开始与结束时间、归档数据的开始与结束时间、限制访问类型;台站信息包括台站类型、所在台网、区域、经纬度、高程、台站启用与停用日期、准实时数据的开始与结束时间、归档数据的开始与结束时间;通道信息包括台站位置码、通道名称、启用与停用时间、采样率、信息发布日期,目前只保存采样率在20—100 Hz范围内的通道;详细信息包括通道启用与停用时间、采样率、仪器类型、灵敏度、仪器响应等信息。
可只更新本级信息或更新本级及后续信息,非连续数据台站信息更新流见图 2。待更新的源可为全部台网或特定台网、特定台站,既可为增量更新,也可为全部内容更新。按照更新策略可单独更新台网、台站、通道、详细信息,也可只更新部分信息,图 2中每个数字代表一种策略,标识了该策略下待同步台网或台站、待同步信息及更新步骤与结束路径。
以Python开发台站元数据库自动同步程序库ndcIRISproc,通过BeautifulSoup包(Richardson,2017)实现IRIS网站关于台网、台站、通道、详细信息等网页的内容提取与分析,主要通过cx_Oracle包操作数据库,完成台站信息存储与更新,开发irismeta,实现图 2所示不同同步策略的调度。为了增强数据同步的可靠性,避免意外原因,如链路中断、IRIS服务端重置连接等导致的同步失败,以Python开发irismetatool工具。该工具能够分析irismeta的执行日志,提取上次未同步成功的台站信息。每次定期启动irismeta执行数据同步前,根据irismetatool的分析结果,优先同步上次未能同步的台站。
目前NDC从IRIS共获取台网信息600个(固定台网412个,临时台网188个),台站信息37 441个(固定台站12 547个,临时台站24 894个)。按照NDC所需采样率条件的通道进行筛选,获取详细信息和仪器响应信息的通道89 859个,归属于22 754个台站(固定台站9 244个,临时台站13 510个)。NDC台站元数据库中已获取的IRIS台站地理分布见图 3,图中绿色圆为固定台站,红色圆为临时台站。
经过实际测试与应用,设计并建立的NDC非连续台站元数据库和同步程序行之有效。在后续工作中,NDC为提高系统效率和响应速度,在自动处理阶段需要实现辅助性地震监测台站选择、数据申请的完全自动化,本数据库和程序可为该工作提供基础数据支撑,奠定前提。
谢克武. 大数据环境下基于Python的网络爬虫技术[J]. 软件开发, 2017(9): 44-45. | |
FDSN, IRIS, USGS. Standard for the Exchange of Earthquake Data (SEED) Reference Manual version 2.4[S]. 2012. | |
FDSN: FDSN StationXML Schema[EB/OL].[2018-06-01]http://www.fdsn.org/xml/station. | |
Lawson R.用Python写网络爬虫[M].李斌, 译.北京: 人民邮电出版社, 2016: 9-17. | |
Richardson L. Beautiful soup documentation[EB/OL]. (2017-08-11)[2018-06-01]. http://www.crummy.com/software/BeautifulSoup/bs4/doc. |