曾文敬,徐长文,肖建华,范卫星,赵璇,曾先进,陈建龙
(江西省地震局,江西南昌 330095)
自2012年以来,全球进入大数据时代,各行各业都将可视化技术作为大数据分析、数据挖掘的重要手段,让数据说话,让数据看得见。可视化技术作为解释大数据最有效的手段而率先被科学与工程计算领域采用,科学可视化把数据转换成多维度、多尺度的时空动态图形图像,给予人们深刻与意想不到的洞察力,帮助公众理解事物间的深度内涵、潜在关联和运行规律,极大地提高了人脑分析解释这些数据的能力,已在很多领域使科学家的研究方式发生了根本性变化。
近年来,地震大数据可视化研究和应用问题引起了地震行业有关专家的极大关注和思考。张晁军等(2015)认为大数据的核心是积累数据、分析数据和应用数据,大数据有助于提高人们的特殊技能和洞察力,大数据分析具有预测事物发展趋势、改变传统观念和发现新事物的功能,并有助于人们从信息中挖掘有价值信息,大数据改变着人类探索世界的传统观念和方法,尤其是通过了解模型的优点和局限性,使数据产生知识。王志秋(2018)认为,就目前地震业务领域来看,地震大数据产出可视化研究和应用至少可以包括:测震学科产出可视化,如震源破裂过程可视化;形变学科产出可视化,包括重力、倾斜、短水准、洞体形变、应力应变、航空观测、GPS等可视化;电磁学科产出可视化,包括地电阻率、地磁、电磁波等可视化;流体学科产出可视化,包括水位、水温、水氡、水汞、溶解气、土壤气等可视化;以及其他学科和新技术产出可视化,如地震地质构造、构造运动、地球动力学、地震活动性、卫星、遥感、红外观测等可视化。地震行业利用可视化技术逐步开展了一些探索和应用研究,并取得了可喜的结果,如:杨应召(2020)为研究在地震速报等基于测震数据的业务场景中,对于地震事件检测等中间处理结果的可视化问题,设计并实现了一套基于实时测震数据的可视化系统,并得到了实际应用,吴珍云等(2020)基于开源GIS技术研发的江苏省地震应急信息可视化平台具有良好的性能体验,并在地震应急工作中起到了较强的辅助决策作用;马士振等(2015)、罗勇等(2020)、李晨曦等(2021)研发的基于地震目录数据的可视化服务系统为地震数据服务提供了一种新模式,提升了地震信息服务的深度和广度。此外,很多专业人员(姚会琴等,2014;潘怀文等,2015;张文蕾等,2018;韩滨等,2021)将地震监测信息、监控信息通过可视化技术进行加工处理后,大大提升了地震信息服务的能力和水平。目前,可视化工具有多种选择,其中国内的可视化库主要以Echarts为代表,被很多工程师采用(王子毅等,2016;崔蓬,2019;徐欣威,2019)。Echarts可视化库是完全开源免费的,是由百度公司开发的开源数据图表可视化技术,是由纯JavaScript脚本语言编写的可视化类库,兼容目前多种浏览器,底层采用ZRender渲染技术,达到美观、生动的显示效果,提供丰富的、灵活的数据可视化图表集成接口。
地震目录是地震行业产出的最为基础的地震科学研究资料。为了进一步挖掘地震数据信息,让地震目录数据的空间、时间信息更好地被人们特别是非专业人员快速有效的理解,本文根据江西地震台的地震目录数据,自行设计了一套前后端分离,并采用Django、Echarts开源框架自主开发的江西地震目录数据可视化系统,旨在帮助非专业人员能够通过对地震目录数据的挖掘及时空动态分析并以可视化的简易图表形式,快速了解江西省地震活动时间和空间分布的基本概况。
Django框架是基于Python语言的开源框架。Django框架的设计模式借鉴了MVC框架的思想,也是分成模型(Model)、视图(View)和控制器(Controller)三部分,来降低各个部分之间的耦合性。Django框架不同于MVC之处在于它拆分的三部分(见图1):Model(模型)、Template(模板)和View(视图),也就是MTV框架。Django框架通过分层设计,将各层次之间的逻辑结构化,将系统的各个功能模块进行分离,系统内部不同功能模块之间的访问通过相互调用接口实现,用一种业务逻辑、数据、界面显示分离的方法组织代码,从而大大降低了系统内部功能的复杂性,实现简便、快速地开发数据库驱动的网站(吴俊锋,2016)。
图1 Django框架的MTV模型
江西地震目录数据可视化系统以Django框架为基础,在实现过程中用了Echarts和百度地图API等多种技术组合,实现了一站式的地震目录可视化服务。为了快速完成系统开发,笔者在Windows10操作系统环境下,选用Python3.6开发语言及其Web框架Django3.0、MySQL5.6数据库、Echarts和百度地图API等工具进行全栈式开发。系统前端页面模板文件利用HTML+Div+Css进行渲染,并使用Js+Jquery+Ajax技术动态实现与后台应用接口的交互,后台Python应用程序负责业务逻辑处理,并提取MySQL数据,返回给模板文件,模板文件加载了第三方库Echarts和百度地图API,并将后台返回的数据转化为可视化图表。系统响应处理流程图见图2。在测试运行阶段,笔者使用Windows Server 2016+Apache mod_wsgi+Django的方式进行系统部署和运行。
图2 系统响应处理流程图
江西地震目录数据可视化系统的主体功能分为三大模块:实时地震模块、基于缓冲区的历史地震模块和全省历史地震统计模块(见图3)。其中,实时地震模块包括最新地震参数、全省近期地震目录和震中分布图3个子模块;基于缓冲区的历史地震模块包括震中距100 km内的震级分组统计、震中距100 km内的震级-距离分布图和震中距100 km内的地震序列类型分布图3个子模块;全省历史地震模块包括全省历史地震的震级分组随时间变化统计图和全省历史地震的震级随时间变化图2个子模块。这些模块均通过在模板文件中加载Echarts图表库,实现了图表化的可视化效果,系统展示效果见图4。
图3 江西地震目录数据可视化系统功能图
图4 江西地震目录数据可视化系统界面
(1)通过EQIM 协议实时监听江西地震台EQIM 服务端的实时速报地震信息,当获取到符合要求的江西省内M≥2.0地震时,即向后台数据库写入该地震目录。同时更新页面最新地震三要素参数,以文本的形式展现在网页上,满足了用户快速获取地震三要素信息的需求。(2)从数据库中获取最新的目录进行滚动列表播放,满足了用户快速了解近期省内地震目录基本参数信息的需求。(3)通过在模板文件中加载GeoJson地图接口,从数据库中获取最新的地震目录,将地震经纬度数据以地理地图的形式在网页中间位置进行展示,突显了可视化震情地图效果,该模块满足了用户将数字形式的震中位置转换为地图形式的震中位置的需求,帮助用户快速高效了解江西地震空间分布特征。此外,当鼠标滑过震中图标时,系统会给出该地震的有关提示信息。同时借助Echarts地理地图库提供的工具,实现了地图缩放和平移功能等。
(1)根据距离最新地震100 km范围内的历史地震目录,按震级M2、M3、M4、M5和M6进行分组统计,并以柱状图的形式显示在页面,满足了用户快速了解最新地震震中距100 km 范围内的历史地震震级总体分布情况。(2)根据距离最新地震100 km 范围内的历史地震目录,计算各地震距离最新地震的距离,并以震级为纵轴、发震时间为横轴作震级随时间变化的散点图显示在页面,满足了用户快速了解最新地震震中距100 km内的最大历史地震和最近历史地震的距离和时间分布情况。(3)根据距离最新地震100 km 范围内的地震序列类型数据,分别统计“主余型”“震群型”“孤立型”“前主余型”等序列类型分布情况,满足了用户根据震中周围历史序列类型统计结果,快速判别最新地震可能序列类型。
(1)根据全省范围内最近3年M≥2.0的历史地震目录,先按年度作为一级分组统计后,再按震级档M2、M3、M4、M5和M6进行二次分组统计,并以柱状图形式显示在页面,满足用户了解全省历史地震的震级随时间变化的情况。(2)根据全省范围内1970年以来M≥2.0的历史地震目录,以震级为纵轴、发震时间为横轴作震级随时间变化的散点图显示在页面,满足用户快速了解全省历史地震随时间分布情况。
借助Django框架前后端分层分离的机制实现B/S架构,笔者在较短周期内完成了江西地震目录数据可视化系统开发。系统的主要特色与优点为:(1)系统通过地理空间数据可视化方法和关系数据可视化方法,利用Echarts可视化库和web前端技术,将江西地震活动情况以多图单页的方式实时动态展示出来,达到了使用感知代替认知、减少人的记忆负担和增强吸引力的效果,帮助用户快速、高效地了解江西地震活动的主要时、空、强特征;(2)系统能够实时动态展示最新地震震中距100 km 内的历史地震情况,如最大历史地震的震中距和发震时间,最近显著地震的震中距和发震时间,以及震中距100 km 内地震序列类型情况等。
系统自2020年试运行以来,多次服务于江西地震台向系统外领导来台调研考察活动,帮助非专业人士快速了解江西震情特点。系统另一个可应用的情景为地震应急响应提供震中距100 km 内的震情信息。在试运行过程中,我们也发现系统还存在一些不足,如:(1)由于页面加载了一些国外较新的开源js,用户端浏览器局限于使用基于chrome内核的浏览器或Firefox浏览器;(2)系统功能较为单一,仅仅利用地震目录数据可视化,下一步可增加地震监控、监测信息方面的内容,以扩大应用范围以及服务对象。