基于Shiny框架的海洋浮标大数据处理实验平台

2018-09-29 03:07王廷伟ChristosGrecos
实验室研究与探索 2018年8期
关键词:浮标监测数据数据处理

任 鹏, 王廷伟, Christos Grecos

(1. 中国石油大学(华东) 信息与控制工程学院, 山东 青岛 266580; 2. 中央华盛顿大学 计算机科学系,华盛顿州, WA 98926; 3. 青岛市海洋灾害预防检测信息国际联合研究中心, 山东 青岛 266580)

0 引 言

美国国家大气与海洋管理局[1](NOAA)是全球最大的、开放的海洋数据管理平台,其海洋浮标数据中心[2](NDBC)免费提供全球范围内的风向、风速、温度、盐度等海洋浮标监测数据。这些数据覆盖范围广、更新速度快、记录时间长、监测种类多,具有显著的大数据特征。R语言[3-4]是数据挖掘和大数据处理方面优秀的编程语言,可以实现对数据规律的充分挖掘。同时Shiny具有强大的地图操作功能和可视化能力,能够更加直观地展现数据处理结果。

R是针对R语言开发的一个自由、免费、源代码完全开放的软件和操作环境,它是应用于统计、计算和制图的优秀工具,是一套完整的数据分析、处理和可视化软件系统。因为源码开放,R允许用户开发属于自己的程序包并将其托管到GitHub或者CRAN上。目前CRAN官方网站上已收录5 000余个工具包,内容涵盖基础统计学、社会学、经济学、生态学、空间分析、生物信息学等诸多方面。通过调用这些工具包,能够方便地进行数据挖掘相关工作,对海洋浮标大数据进行有效分析和处理。

Shiny是Rstudio团队针对R语言开发的网页应用开发框架,允许用户使用纯R语言开发界面简洁、功能强大、可发布的网页应用,实现网页应用与数据处理的无缝衔接。Shiny具有以下特性:① 具有丰富的控件,如文本框、日期输入、按钮、复选按钮等,方便搭建内容丰富、界面精美的网页;② 地图操作方便,可以调用开放的地图API,方便开发类似于谷歌地图式的交互性强、界面简洁、功能强大的地图应用,将美国国家大气与海洋管理局海洋浮标位置信息显示在地图上,更加直观高效;③ 允许使用纯R语言进行编程,即使没有掌握HTML、CSS、JavaScript等相关知识也可以开发页面精美、功能强大的网页应用。

除此之外,Shiny提供了两种网页发布途径:① Shiny开发团队提供了官方服务器,部署简单方便,但是不能进行自行配置,无法访问本地文件。② 官方提供私有服务器配置方法,用户可以在本地部署、发布,灵活性强。Shiny具有出色的数据可视化能力,地图操作功能强,使用方便灵活,适合用于数据可视化操作和网页平台的搭建。

本文所设计的实验平台将R语言、Oracle数据库[5]和Shiny网页框架结合起来,能够实现海洋浮标监测大数据的可视化和数据内在关系的挖掘。该实验平台有助于学生深入了解数据获取、存储、可视化和数据分析与挖掘领域的问题分析方法和解决方案,锻炼学生分析问题和解决问题的能力,并且能够培养和提升他们的创新能力和工程实践能力,使他们能够更快地适应将来的工作和学习。

1 实验平台设计

本文所设计的海洋浮标监测数据处理实验平台主要包括数据获取、数据存储、数据处理和可视化显示四部分。其中数据分析和可视化平台的搭建是系统设计过程中考察学生分析问题和解决问题的关键环节和核心单元,实验平台总体结构如图1所示。

图1 海洋浮标监测数据处理实验平台结构示意图

1.1 数据获取

实验平台的搭建首先需要海量的数据,但是从网络上手动获取海洋浮标的监测数据是一件繁琐而枯燥的任务。CRAN收录的RCurl[6]、RVEST等网络爬虫工具包,允许用户自动从网络上获取想要的数据和资源。

NOAA海洋浮标数据中心提供了风力、风速、温度、气压、海浪等监测数据供下载和使用,并且这些数据以表格形式呈现。因此指定好网址*http://www.ndbc.noaa.gov/data/realtime2/32ST0.txt之后利用R语言中表格读取函数read.table()能够直接从网页上将数据抓取到本地。获取的数据以字符格式存储,对于后续处理带来不利影响,因此需要利用as.numeric()函数将字符格式的数据转换为数字格式,利用name()函数为数据的每一列指定对应名称,最后使用write.csv()函数将数据存为CSV文件,方便后续将数据导入到Oracle数据库中。

数据获取和预处理工作是数据分析的前提和基础,通过网络爬虫程序能够从网络上获取海量的数据,锻炼学生数据获取和预处理的能力,培养其主动获取资源的意识。

1.2 数据库构建

NOAA海洋浮标数据中心提供的浮标监测数据更新速度快、数据量大。如果从网络获取的数据直接进行处理和显示,不仅占用内存大,时间上也不存在连贯性,不利于数据挖掘和后续的处理。数据库能够对数据进行有效组织和管理,方便数据进行高效存取和查询,因此可以通过构建数据库对数据进行存储。数据库结构设计框图如图2所示。

R与Oracle数据库之间能够通过数据接口进行连接。通过调用接口程序,R可以嵌入标准的SQL数据库管理语言,从而实现数据写入、查询、删除等功能。ROracle是Denis Mukhin等开发的R与Oracle之间的接口工具包,允许R与ORACLE数据库之间建立联系。建立联系之前首先需要使用dbDriver()函数加载驱动程序,加载驱动程序完成之后使用dbConnect()建立R与Oracle数据库之间的联系。dbConnect()函数主要有四个参数:drv为加载的驱动;username是数据库的登录用户名;password是登录密码;dbname为目标数据库的名称。目标数据库名称由数据库IP、端口号、数据库名称组成,一般形式为IP:端口号/数据库名称。

图2 数据库结构设计框图

利用ROracle工具包建立R与Oracle数据库之间的联系,通过在R语言中嵌入标准的SQL数据库操作语言,实现数据的高效存取、查询工作,方便数据的管理和使用。

1.3 海洋浮标监测数据处理

海洋浮标监测数据的处理工作全部在Shiny网页应用框架下Server处理部分进行,Shiny网页应用框架将在2.4进行详细阐述。从网络上自动获取海洋浮标监测数据导入数据库中后,使用ROracle[7]工具包建立R与Oracle之间的联系。通过在R语言中嵌入标准SQL语言实现数据的查询、删写等功能,保证数据处理和可视化工作的正常进行。

以数据查询为例,建立与数据库的联系之后通过dbSendQuery()函数将SQL语言嵌入到R语言中。dbSendQuery()函数有连接名和SQL语言两个参数,连接名即为2.2节中描述的dbConnect连接指定的连接名,SQL语言指定需要进行的操作。Oracle数据库接收到请求之后将结果返回,R中利用fetch函数进行解译,最终完成数据查询操作。

从数据库获取数据之后需要进行相关数据处理工作,常用的数据分析方法有相关性分析、卡方差分析等。SFA算法[8]作为一种新的无监督学习算法能够从快速变化的输入信号中找到缓慢变化的特征即驱动力。慢特征分析算法最初应用于视神经学领域[9],现已经被广泛应用于盲源信号分离[10]、人类行为识别[11]、手写数字识别[12]和大型发电厂或者化工厂的故障监测和诊断[13]等领域。

RSFA工具包是基于R语言针对SFA算法开发的工具包,使用sfa函数能够对海洋数据进行分析,从快速变化的信号中获取缓慢变化的特征,并且使用图形的形式对结果进行展示。通过将分析结果与海洋环境变化情况的对比,探究影响海洋环境变化的影响因素。通过对海洋浮标监测数据的分析,学生不仅能够掌握相关性分析、卡方差分析等传统数据分析方法,并且能够将慢特征分析等机器学习方法应用到数据分析和挖掘上面去,拓展学生视野,提升能力。

1.4 数据可视化

数据分析可视化[14]对于实验教学来说是一个重要的环节。Shiny网页应用框架提供了便捷、丰富的数据可视化手段和方法,通过调用LeafLet包[15]可以方便地对地图进行操作,以图形或者表格的形式将数据分析结果直观展示出来。网页应用设计框图如图3所示。

图3 可视化网页应用设计框架

一个Shiny网页应用程序主要包括UI和Server两大部分,UI部分为网页前端,主要涉及网页布局,时间框、文本框等控件添加和ID的指定,以及处理结果的显示。Server为应用的后端,主要进行UI控件变量值的接收,数据挖掘和可视化处理。通过UI和Server的配合,能够搭建界面简洁,功能强大的网页应用。

1.4.1UI界面设计

海洋浮标监测数据在线处理平台用户界面主要包括海洋浮标分布图、监测数据历史趋势图、原始观测数据表和数据处理结果图。

tabPanel功能能够定义多个子窗口,将用户界面不同的部分在不同的界面显示。每个界面中主要包括时间选择控件、文本框控件、输入选择控件等,Shiny提供了相关函数供用户调用,方便快捷。mainPanel用于显示Server后端处理的结果和可视化操作结果。

1.4.2Server处理功能设计

海洋浮标位置的标记需要对地图进行加载和操作,LeafLet[16]是一个JavaScript的包,通过LeafLet能够加载开源世界地图,并且能够对地图进行地点标记、缩放、交互式信息框等操作。通过调用leaflet()函数能够自动加载世界地图,地图自带缩放功能。加载地图之后需要对海洋浮标的位置进行标记和显示,addCircles()函数能够在地图上对指定经纬度的点进行标记,利用SQL语言从数据库中获取海洋浮标的经纬度之后利用addCircles()函数可以将海洋浮标的位置在地图上标记。Setview()函数可以设定地图的中心位置和缩放比例。

showZipcodePopup()是LeafLet工具包另一个强大功能,能够在鼠标单击指定位置时显示指定信息。当点击海洋浮标标记点时,系统能够自动从数据库中获取当前浮标最新监测数据,并且以对话框的形式显示在地图上,高效方便。

历史观测数据变化趋势能够显示当前海洋浮标的监测数据历史变化趋势,通过使用时间选择控件、输入选择控件指定显示时间、浮标编号、显示内容等信息之后以折线图的形式将浮标监测数据的变化趋势进行展示,便于发现监测海域海况变化情况。

海洋浮标原始监测数据对于数据进一步分析和发掘具有重要意义。DT::datatable()函数能够实现对数据的高效管理和显示,DT:datatable生成的数据表格能够进行数据排序、查询等操作,方便对数据进行对比。同时利用downloadHandler()函数能够实现数据表格的下载功能。

通过数据获取、存储、处理和可视化操作,结合大数据处理方法和网页应用开发手段,最终完成海洋浮标大数据处理实验平台,整体效果图如图4所示。

图4 海洋浮标大数据处理实验平台

学生可以通过指定数据库名称、用户名、密码、IP地址来对数据库的连接进行配置,掌握数据库连接和配置的基本步骤。通过指定监测日期、浮标编号、监测数据类型来观察某一观测数据在1 d当中的变化规律。通过指定地图的中心位置和放大倍数,将海洋浮标以点的形式在地图上进行标记,能够直观地了解海洋浮标在全球的分布情况。

通过数据获取、数据存储、数据挖掘和可视化等四个方面,学生全面掌握了数据分析领域的流程和方法,形成一种全局意识和全局观念,对于培养学生的分析能力和解决问题的能力有非常重要的意义。

2 结 语

本文以海洋环境监测基础,以数据处理和可视化为出发点,设计了一个基于R语言的Shiny框架下海洋浮标数据实验平台。该实验平台能够获取海洋浮标监测数据并对其进行处理,整个实验内容涵盖了海洋浮标监测数据自动获取、监测数据存储和数据库搭建,多源海洋数据处理和数据可视化四大领域。该实验平台有助于学生深入了解数据处理的重要方法和流程,有助于培养和提高其创新能力和工程实践能力,使他们将来能够更好地胜任在数据分析和研究领域的相关工作。

猜你喜欢
浮标监测数据数据处理
浅谈浮标灵敏度的判断
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
浅谈浮标的吃铅比数值
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
一种浮标位置修正算法*
提问:冬钓轻口鱼如何选择浮标?
GSM-R接口监测数据精确地理化方法及应用
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用
GPS异常监测数据的关联负选择分步识别算法
基于小波函数对GNSS监测数据降噪的应用研究