面向可视分析的用户标注共享与互操作*
2014-04-14曹一冰赵军喜李帅鑫刘鹏飞
曹一冰,赵军喜,李帅鑫,刘鹏飞
(1.信息工程大学 地理空间信息学院,河南 郑州 450052;2.中南大学 地球科学与信息物理学院,湖南 长沙410083;3.93116 部队,辽宁 沈阳 110141)
0 引言
随着互联网技术的快速发展,网络已经成为人们获取信息、发布信息、共享信息的一个重要渠道,基于互联网的地理信息服务特别是网络电子地图服务已经成为人们共享信息的重要平台[1]。这些新兴的电子地图网站提供了一种地理信息共享与互操作的主要形式——位置标注[2]。运营商或用户将每天产生的大量与地理位置相关的信息,通过点、线、面标注的形式添加到地图上,然后经过审核添加到服务器中对外提供查询与定位服务,这样当其他用户搜索空间对象时,地图就能快速定位到用户的兴趣点。然而,这种标注的添加与发布形式更新速度较慢、不能可视化的表现用户之间的关联关系以及给人们提供形象立体,图文并茂,多样化的信息,同时大部分标注都是宾馆、超市、银行等商业点状标注。
可视分析是一种新兴的以交互可视界面为驱动的分析推理学[3]。人们通过使用可视分析的工具和技术从大量、不确定、动态的数据中整合信息,获取更深层次的理解[4]。可视分析提供了先进的可视化表达能力和交互技术,允许人与信息之间的交流,进而在此基础上进行二次分析与决策。
本文在分析常见网络电子地图服务平台的基础上,考虑到系统的特殊要求,采用Google Maps 的标注模块接口,利用可视分析技术实现了地理标注的用户自定义添加、多用户间标注信息的共享与互操作。系统引入GIS 地图图层的概念,每个用户的标注信息组织为一个标注图层,所有的标注信息存储在SQL Server 数据库中。用户可以增加、删除、修改自定义的标注,当用户需要查看、浏览其他用户的标注信息时,就添加他们的关注(类似微博),这样其他用户的标注图层就会显示在图层列表中,用户不仅可以控制某一图层的显示状态,还可以控制某一标注的显示状态。同时,为了实现不同系统间数据的共享,系统可以直接导入KML 文件,将文件中的标注信息存入用户的标注数据表中,并在地图上按照其样式绘制显示;系统还可以将用户的标注信息导出为KML 文件,供其它系统使用,最终用户可以可视化、动态化的共享地理标注信息。
1 相关技术背景
1.1 地理标注
地理标注就是把与位置相关的信息搜集起来,并根据地理坐标按照其表现形式(点标注、线标注、面标注)标注在地图上[5]。目前,Google 服务器端存储的地理标注主要是与商业用户相关的点状标注,包含了标注点的简单信息描述;本系统中的地理标注主要是用户根据要素的表现形式通过鼠标交互的方式添加到地图上的,标注的坐标、类型、样式、标题、描述和详细信息存储在本地数据库中。
1.2 KML
KML 即Keyhole Markup Language,是基于XML 语法标准的一种标记语言,采用标记结构,含有嵌套的元素和属性。由Google 旗下的Keyhole 公司发展并维护,用来表达地理标注。根据KML 语言编写的文件则为KML 文件,格式同样采用XML 文件格式,应用于Google 地球相关软件中(Google Earth,Google Map 等),用于显示地理数据(包括点、线、面、多边形、多面体以及模型)。现在很多GIS 相关企业也追随Google 开始采用此种格式进行地理数据的交换[6]。
1.3 Google Maps API
Google Map 是Google 公司向全球提供的地图服务,包括地标、线条、形状等信息,提供矢量地图、卫星照片、地形图等3 种视图,于2005 年在谷歌博客上首次公布,并逐渐将覆盖范围扩大至全球[7],它是一款基于浏览器的免费在线地图工具,其广泛使用对互联网及GIS 领域产生了重大影响。Google Maps API是谷歌地图的二次开发接口,目前更新至V3 版本,开发者可以方便的将谷歌地图数据嵌入到自己的网站中实现个性化应用,添加地标、线条、形状目标或者响应用户的单击事件弹出信息窗口。它提供了两种不同形式的API:Google Maps JavaScript API和Google Maps API for Flash,本文使用的是Google Maps JavaScript API V2。
根据其特性可以将Google Maps API 分为两个部分:显示特性,包含的对象有GMap2,GPoint,GIcon 和GLatLng;其它特性,包括GControl,GMapPane,GMapType 和GOverlay。开发者可以使用它们创建自己的控件、标注和地图类型。以下是Google Maps API 中常见的对象[8]:
1)GMap2:核心类,主要用来创建地图控件和控制地图的基本行为,包含许多方法,如setCenter(),setMapType()等。
2)GControl:它由一组对象组成,包括GLargeMapControl,GSmallMapControl,GMapTypeControl 等。
3)GMaker:主要用来指示位置和显示信息。
4)GInfoWindow:使用文本或html 显示弹出信息。
5)GPolyline,GPolygon:分别用来在地图上标注线条和形状目标,他们的属性和方法非常类似。
2 系统体系结构设计
系统采用B/S 体系结构,主要包括用户标注模块和标注共享与互操作模块两个部分(见图1)。各模块结构设计如下:
图1 面向可视分析的用户标注共享与互操作系统体系结构图Fig.1 Architecture of users'plotting sharing and interoperability system for oriented visual analytics
1)用户标注模块:用户登录系统后首先选择点、线、面标注工具,然后通过鼠标交互的方式添加标注(这样标注点就被添加在地图影像上,具有地理位置信息),在弹出的信息框中选择标注的样式、输入标注的标题、描述等属性信息,添加与标注关联的详细信息,最后通过SQL 语句发送Ajax 请求连同标注的坐标点信息一起存储到SQL Server 数据库中。
2)标注共享与互操作模块:主要包括用户间标注的共享和系统间标注的共享。用户间标注的共享指用户发送添加标注请求,在弹出的用户列表中勾选需要关注的用户,然后系统从数据库中取出这些用户的标注信息,按照KML 格式组织标注图层数据,通过Ajax 发送给可视分析工具,最后可视化的展现用户关注的标注信息,实现用户间标注的共享与互操作;系统间标注的共享指用户可以直接导入KML 文件添加自己的标注点信息,还可以将自己的标注信息以KML 文件的形式导出,提供给其它系统使用,实现系统间标注信息共享。
3 系统功能设计与实现
3.1 数据库中表结构的组织与管理
系统采用SQL Server 数据库,主要用来存储用户数据和标注数据。当用户添加标注时,标注的样式、坐标、标题、描述、类型信息存储在tb_plots 表中,用户的基本信息与关注信息存储在tb_users 表中,tb_plots 和tb_users 通过“AuthorName”字段相关联。其表结构分别如表1、表2 所示。
表1 tb_plots 表结构Tab.1 Structure of tb_plots table
表2 tb_users 表结构Tab.2 Structure of tb_users table
3.2 主要功能模块的设计与实现
系统按其功能主要分为:用户标注模块和标注共享与互操作模块。每一模块都包含若干功能。系统功能结构,如图2所示。
图2 面向可视分析的用户标注共享与互操作系统功能结构图Fig.2 Function structure of user's plotting sharing and interoperability system for oriented visual analytics
3.2.1 用户标注功能模块
用户标注按照其类型主要分为:点、线、面状标注,下面以面状要素的标注(见图3)为例进行说明(点标注、线标注类似)。
用户点击 工具按钮,在地图上单击一系列点,最后双击即可在地图上添加面标注,然后在弹出的信息框中输入标注的标题、描述信息,在图形样式框中设置标注的线条颜色、线条宽度、线条不透明度、填充颜色、填充不透明度等样式信息,点击确定,完成面状要素标注的添加。标注的相关信息添加到tb_plots数据表对应的字段中。
3.2.2 标注共享与互操作模块
标注的共享与互操作主要包括:用户间标注的共享和系统间标注的共享,系统间标注的共享主要利用系统提供的导入和导出功能,以KML 文件的形式实现不同系统间共享地理标注信息,这里不再详述。下面主要对用户间标注的共享与互操作进行详细介绍。
图3 面标注及样式Fig.3 Area plotting and style
用户登录系统后,只有自己的标注信息显示在“好友列表”中和地图上,如果用户想要查看其他用户的标注信息,点击“添加关注”按钮,如图4 所示,系统将会处于锁定状态并弹出“用户列表”,勾选“西藏外办”,“马航”用户,点击确定,这两个用户的标注信息就会以标注图层的形式添加在好友列表中,如图5所示,系统提供良好的可视化交互手段,用户不仅可以控制某一标注层的显示状态,还可以控制图层下每一标注的显示状态,当用户单击某一标注图层时,地图就会缩放到该标注层;当在列表中单击某一标注时,该标注的属性信息就会通过弹出框的形式显示在地图中,并且该标注点会居中显示,在地图上单击某一标注也会有同样的效果并且列表会自动打开;当用户操作地图时,超出当前地图显示范围的标注将会在列表中变灰,同时系统会通过tip 的形式显示当前地图可视范围内标注点的个数。
4 结束语
面对用户产生的大量标注数据,人们通过其本身获取的信息已经非常有限,采用多样化的可视化表达形式以及在此基础上进行的二次分析,对于人们发现和挖掘隐藏在大量标注数据背后的规律和知识,进而做出及时和正确的判断和决策更加具有意义。
本文设计的面向可视分析的用户标注共享与互操作系统以标注图层组织用户标注数据,进而实现基于图层的用户标注共享与可视化交互,方便各用户形象、直观、动态地了解用户之间的关系以及地理标注背后隐藏的知识和规律,具有一定的实际应用价值。
图4 添加关注用户Fig.4 Add attention users
图5 用户间标注共享与互操作Fig.5 Plotting sharing and interoperability among users
[1] 赵一.大规模互联网地理标注快速聚类方法研究[D]. 阜新:辽宁工程技术大学,2011.
[2] 段克敏,李宏利,邰晓峰.基于互联网的地图标注系统设计与实现[J].地理信息世界,2011(4):51 -55.
[3] 华一新,曹亚妮,李响.地理空间可视分析及其研究方向综述[J].测绘科学技术学报,2012,29(4):235 -239.
[4] 北京大学机器感知与智能教育部重点实验室.可视化与可视分析研究[EB/OL]. http://wenku. baidu. com/view/f2ce5a0076c66137ee061949.html,2010-04.
[5] 陈海燕,刘珍.基于Google Maps 的地理信息标注系统的设计与实现[J].湖南科技大学学报:自然科学版,2009,24(3):87 -90.
[6] 维 基 百 科. KML[EB/OL]. http://zh. wikipedia. org/wiki/KML,2013 -07 -26.
[7] Maurizio Gibin,Alex Singleton,Richard Milton,Pablo Mateos,Paul Longley.Collaborative Mapping of London Using Google Maps[J].The London Profiler,UCL WORKING PAPERS SERIES,2008(24):132-135.
[8] 苏娟.基于Google Map API 地震信息发布系统的研究与实现[D].北京:首都师范大学,2009.