APP下载

一种Zedgraph的改进方法在大数据变形信息可视化中的应用

2022-07-23罗保林

现代测绘 2022年3期
关键词:坐标轴绘图监测点

罗保林,张 拯,金 飞

(1.成都市勘察测绘研究院,四川 成都 610031;2.成都天佑智云科技发展有限公司,四川 成都 610031)

0 引 言

现代变形监测以多元性、融合性、实时性、大数据为特点。然而对于大体量监测数据的展示,当前仍然以传统的纯文本形式输出,很难让用户及时、快速地了解被监测对象的运营状况,因此在现代变形监测数据管理系统中,将大量监测数据和分析结果以图形代替文本形式输出是必不可少的。当前,常用的图形展绘图表类库有TeeChart、水晶报表、FusionCharts、Amcharts等,该类图表类库功能强大,但作为付费非开源控件,其绘图数据不能根据需求自定义,且在大数据变形监测展示中存在一定的壁垒,应用相对较少。与商业图表类库相比,在变形监测信息管理系统中,免费开源图表类库(如Zedgraph、Open-Flash-Chart以及MsChat)以其小巧、二次开发便捷、可根据实际需求定制化修改等特点得到越来越多的应用。

Zedgraph是基于.Net框架,采集主流C#语言开发的开源图表显绘类库,可根据任意数据集快速创建2D线状图、条状图、饼状图,支持Windows Form窗体应用程序和ASP.NET Web网页程序,并支持多语言开发[1]。与其他统计类图表控件相比,Zedgraph具有高度的灵活性,使用与扩展方便,且作为动态图表类库,具有一定的人机交互性。但在用于具有大体量、多维度等特点的现代变形监测信息展示中,Zedgraph仍存在数据格式不匹配,多类型数据同时显绘难以区分,图形操作交互性差,不能显绘三维变形图形等不足。部分国内外学者对Zedraph在变形信息可视化中的应用也进行了探讨,但均停留在简单的应用,对其存在的不足未进行分析[2-4]。因此,本文基于Microsoft Visual Studio 2010平台,采用C#语言对Zedgraph源代码进行二次开发,剖析了其系统结构,实现了与多维数据库表的关联匹配,增强了该图表类库的交互操作功能,并进一步通过集成常规Kalman滤波、方差补偿自适应Kalman滤波两种变形信息处理模型,有效提高了该类库在现代大数据变形监测可视化表达中的实用性。

1 Zedgraph系统构架

根据Zedgraph图表类库的功能、结构和显示方式,大致可分为控制面板层(MasterPane)、绘图面板层(GraphPane)和图形显绘层(Chart)。整体的从属关系构架呈树状结构如图1所示,Zedgraph图表类库的一个图形窗口只能有一个控制面板,但控制面板作为所有图形的载体,可以包含多个绘图面板及其他附属绘图功能,一个绘图面板可包含多张绘图纸以显示最终的效果图。

图1 Zedgraph图表类库系统框架结构

Zedgraph的控件界面继承于.Net的UserControl接口,该接口允许用户将该图表控件添加到VS平台的工具箱中,进行拖拽式新建,方便开发者的使用。

MasterPane继承于.Net的PaneBase类,作为Zedgraph图形界面的最底层框架,它可以操控一个或多个GraphPane绘图板,并可对GraphPane进行布局、排列和优化显示效果等。若只需要绘制一张图表时MasterPane将被GraphPane完全覆盖,因此无需对其进行设置,采用默认值提高开发效率。

GraphPane作为最主要的图形实现模块,几乎所有用户需要的图形效果都在其中实现,且具有高度的灵活性,几乎所有的图形属性都拥有默认值,用户只需要根据需求修改特定属性值即可快速达到想实现的效果。其中最常用的包括坐标轴、数据组、标题、背景、注释等。坐标轴(Axis)类又包含坐标格网、坐标轴注释、刻度等属性。数据组(CurveItem)类是实现图形界面的关键,它包含了所绘图形的全部坐标数据PointPairList,以及线型、颜色、尺寸、是线状图、柱状图还是饼状图等对图形进行详细表达的属性信息。

Chart作为所绘图形的显示界面,在该界面中可对图形进行拖动、放大缩小等一些基本操作。

文本注释类(TextObj)、箭头类(ArrowObj)等作为图形修饰类,可放置在Zedgraph图表类库中的任意位置,使图形更加美观易读。

2 面向变形信息的Zedgraph二次开发技术

2.1 与现代变形信息数据库表的关联匹配

变形监测成果包括:数据报表成果、图形分析成果、项目资料等。其中,多维大体量数据信息可视化表达作为变形监测成果数据的重要组成部分,其通过直观、立体、简洁、有效的组合提炼,可将用户所关注的信息一览无余地呈现在眼前,用户可以快速、方便地获得信息和知识,以实现对监测对象高效管理。传统小体量变形监测数据库大多采用单表的方式进行存储[5](表1),Zedgaph中提供了DataSourcePointList类以支持该类型的一维数据表[6]。但对于现代多维度大数据变形监测,基本采用多维表的方式进行存储[7](表2),该存储方式减少了点名字段的数据冗余,将单表的负荷进行分散,提高了数据入库及查询的效率,降低了单个数据表损坏对其他点数据的影响。

表1 传统小体量变形监测数据表

表2 现代大数据变形监测数据表(a)点名为1的表

(b)点名为2的表

为了适配该类型数据表,本文在DataSourcePoint-List数据类和GraphPane.AddCurve()方法的基础上新增AddCurves(DataTable dt,int Xcol,int Ycol,string Title,string Ylable=“值”)方法,该方法根据指定dt中的Xcol列为X轴数据,多个Ycol列为Y轴数据,可同时绘制多维图形。

使用时可将表2以时间为主键组合为一个表:Table(时间,1号监测值,1号滤波值,2号监测值,2号滤波值),将该表直接传入函数方法即可实现快速高效的变形信息显绘。

2.2 交互式操作的定制化

Zedgraph在显示固定格式和维度的数据上具有较好的效果,但对于现代变形监测数据库中大体量、多维度、多类型的监测信息展示则存在明显不足。以线状图形为例,从数据库中读取绘图数据到DataTable数据表中,再将其传入2.1节中的AddCurves方法,实现变形曲线图的绘制。但根据不同的数据显示需求,从数据库中读取的变形曲线条数和数据量也不相同,因此,在曲线量不定的情况下调用AddCurves方法,循环绘制各条曲线时只能为每一条赋值一个随机的颜色来进行区分。在需要绘制大量变形曲线时,会出现不同曲线颜色相近而不能区分、曲线太多堆叠混乱、坐标轴刻度间隔和显示范围不合适等问题。为了方便用户对数据的查看,本文在Zedgraph原有功能的基础上,新增了可对绘图界面进行个性化设置的人机交互窗口,如图2所示。

图2 Zedgraph绘图界面格式化设置窗口

图形设置(图2a)可实现对线状、柱状、饼状图的基本属性修改。对线状图可修改图例显示文字,可选择图形显示方式、节点形状、大小、线宽和颜色等。对柱状图可修改图例显示文字,可选择填充颜色和颜色渐变方式。对饼状图可修改图例显示文字,可选择每块饼的颜色及文字显示内容。当图形中存在多组数据时,可取消对不需要查看的数据的勾选,使图形界面更简洁,可读性更强。除了对各类型图形的基本属性进行设置以外,此处还可以在不改变数据的条件下实现折线图、柱状图、曲线图、散点图之间的快速切换。

坐标轴相关设置(图2b)可实现对坐标轴Lable注释文字的内容、颜色、边框、字体的修改,对坐标轴刻度步进大小、刻度文字方向、坐标轴显示范围及坐标轴格网显示与否等属性的设置。

图表标题设置可实现对当前绘图面板标题文字的内容、颜色、边框、字体等的修改。

注释信息设置(图2c)可根据需要简单、快捷的在图形界面的任意位置绘制文本注释信息和箭头指向,而不需要修改后台源代码,并可设置注释内容的颜色、边框、字体、透明度和旋转角等。注释信息的位置分为相对于框架和相对于坐标系两种类型。相对于坐标系的注释主要用于对图形中某个点或特征变化位置的说明,在图形放大缩小或拖动时,注释也会跟随图形一起移动。相对于框架的注释,不随图形的变化而变化。

限差设置,主要为显示变形数据的限差范围而设计。限差线不同于数据曲线,它不是两坐标点间的连线,它是一条只有Y值的无边界直线。Zedgraph不具备显绘该类型线的功能。通过对其显示性质的分析,发现其显示效果与坐标轴和坐标格网的效果相似,均为无边界直线且不随数据曲线的变化而变化。因此,本文在绘制坐标轴的Scale类中根据坐标轴的绘制方法新增限差线的绘制方法DrawErr(),将该方法添加到GraphPane类中绘制边框、坐标轴、坐标格网的方法Draw()中进行实现。

2.3 多元异构变形监测算法的集成与可视化

Kalman滤波因其所用的信息都是时域内的量,除了可以对一维平稳的随机过程进行滤波估计外,还可以对多维的、非平稳的随机过程进行估计[8]。因此,Kalman滤波在变形监测数据处理中得到了广泛的应用,本文也将其作为常用的处理分析函数集成到Zedraph类库中方便后续的开发和用户使用。

滤波曲线的可视化。本文在Zedgraph的GraphPane类中新增了ShowFilterData属性,并将KalmanFilter滤波类在GraphPane的原有绘图方法AddCurve( string label,double x,double y,Color color,SymbolType symbolType)中实例化,从而实现根据ShowFilterData属性的变化决定是否绘制滤波曲线,而无需改变对原有绘图方法的调用,减少了后续开发及应用难度。

3 应用及性能测试

改进的Zedraph图表类库已在多个项目中得到了有效的应用。本文以某城市边坡的安全自动化监测系统为例进行测试分析,该系统利用天宝GNSS三星双频接收机进行组网,采用单基站CORS原理实现监测站的高精度定位[10]。系统中监测站均匀布设于滑坡体的各个特征位置,基准站建立在检测区外视野开阔且相对稳定的地方。理论上所有设备安装完成后将不再拆除,以避免重复安装带来的误差。监测数据采用4G网络进行远程传输,实现了边坡变形的实时自动化监测。

本文以高程数据进行应用测试分析。系统采样间隔默认为5 s。为了测试图形显示性能,分别按1 d、3 d和7 d进行图形显绘,测试结果如表3所示。

表3 Zedgraph改进前后的绘图效率对比

由表3可知,在改进前后绘图的效率基本相同,原因是本文仅对Zedraph的数据结构进行了扩充以适应现代大数据变形监测数据库表的结构,而对AddCurve()显绘方法未做修改。但从用户体验角度,本文将绘图前的数据编组设计到了后台线程执行,在显绘类似7 d数据这样的耗时操作时避免了主线程界面出现假死的现象。

通过与现代大数据变形监测数据库表的关联,可实现一行代码添加表中所有需要显示的数据到Zedraph图形界面,极大的降低了编程难度。图3为读取并显绘的1-3号断面监测点一天的实测数据和滤波数据。

图3 1-3号断面监测点观测值及滤波值图形

由图3可知,多条曲线的同时绘制会降低图形的可读性,这也是所有图表控件共同存在的弊端。一般情况下都是采用重复调用法解决,即根据不同的数据选择组合(此例为6类数据共有63种选择组合)来重复调用AddCurve()方法进行数据重整理并重绘变形曲线。该方法在大数据量的情况下效率极为低下,表3中已予证明。改进后的Zedgraph拥有人机交互操作界面,可直接在图形界面中右键打开设置窗口,在图2(a)图形设置窗口中直接对各数据类型进行勾选以快速实现变形曲线显示或隐藏。该方法未对数据进行任何的变动,因此不需要调用AddCurve()方法进行数据整理和图形重绘,整体效率极高。

根据上述方法,分别对各监测点的变形曲线进行查看,如图4所示。

图4 各监测点变形曲线图

由图4可知,监测点的原始观测数据波动较大,1号监测点观测值波动范围为7 cm,2号监测点观测值波动范围为11 cm,3号监测点观测值波动范围为12 cm。符合RTK测量的厘米级精度的特点。滤波后的数据相对平滑,实现了预期的去噪效果,数据质量有了显著提高,满足本系统边坡沉降监测的需求。且滤波后的数据均在33.37 m的最低高程限差范围内,该边坡目前相对稳定。

4 结 语

本文分析了Zedgraph图表类库在现代大数据变形监测可视化表达中的不足,并对其系统组成和构架进行了分析研究,运用C#语言对源码进行改进和功能拓展,实现了其与多维数据表的关联匹配,设计了可对图表进行个性化定制的人机交互界面,加入了常用的变形分析算法模型。经多个项目应用验证,改进后的Zedgraph图表类库在多维度变形数据分类查询及图表显示界面的自定义等方面具有较高的实用价值,且通过方法集成与嵌套,有效降低了该类库调用的空间复杂度,实现了对多维大数据变形信息可视化表达进行改进的预期目标。但目前变形分析算法仅集成了标准Kalman滤波和方差补偿自适应Kalman,在后续研究中可基于此进行拓展与完善。另外,随着现代变形监测信息化、可视化的不断发展,对构建三维图表进行变形分析表达可作为下一步研究方向。

猜你喜欢

坐标轴绘图监测点
保定市满城区人大常委会为优化营商环境固定监测点授牌
来自河流的你
“禾下乘凉图”绘图人
天津南港LNG接收站沉降监测点位布设
全站仪极坐标法监测点稳定性分析方法研究
时空坐标轴里的弘一大师
——《李叔同——弘一大师行踪图典》评介
垂涎三尺
济南市细颗粒物(PM2.5)的时空分布特征分析研究
巧用仿射变换妙解高考解析几何题
数学问答