| 一种实现协同的三维态势符号标绘方法 |
2. 浙江省地理信息中心,浙江 杭州,310012
2. Geomatics Center of Zhejiang, Hangzhou 310012, China
态势符号作为GIS中重要的地图符号,具有动态描述地理事物发展、演变趋势的特点。态势符号标绘是地理信息数据动态处理和态势信息自主可视化的方式之一,在作战指挥、行动部署等领域发挥着重要作用[1]。随着可视化技术的不断发展,态势符号的载体不再局限于传统的二维地图或是实体沙盘,而是朝着电子化、信息化、动态化、直观化、三维化的方向发展[2]。三维可视化技术具有更方便、更高效、更直接、更深刻地表达地理信息的特点[3, 4],已成为GIS可视化分析、系统决策等方面不可缺少的重要技术手段[5]。三维态势符号的表现方式具有多视角、多方位、多姿态的特点,更接近人在真实世界中对地理现象的感知体验。然而,在三维场景中,地理要素并不是按照单一比例尺展示的,而是根据视点的变化通过多比例尺调整和LoD(levels of detail)技术呈现的,因而三维场景中的态势符号表达方式并不完全等同于其在二维场景中的情形[6];并且由于表现维度的增加,态势符号在三维场景中的绘制方法也更为复杂。
目前,态势符号标绘方法的研究大多着眼于态势符号标绘应用,多集中于态势符号建模算法的优化与系统实用性的改进[7-11],三维场景下态势符号表达方式的研究较少,且多着眼于基于单用户的态势符号标绘方法,没有考虑到多用户进行信息互换和交互感知的现实需求。因此,如何结合三维态势符号的可视化表达方式,实现多用户交互标绘,进而高效化、及时化、成本最小化、应急指挥一体化地辅助事件处理与指挥决策[12],是目前面临的难题。
本文研究了三维态势符号的表达方式,结合协同消息传递机制,提出了一种实现协同的三维态势符号标绘方法。基于此方法,设计了一个轻量级的协同标绘原型系统,使Web环境下基于三维场景的协同指挥、决策成为可能。
1 三维态势符号的构成与表达态势符号多具有可填充的特性,且多以面域大小、颜色等视觉变量示意等级次序或数量多寡,具有面状特性;常用来示意箭头前进方向,又具有线状特性[13]。态势符号在三维场景中展现时,要考虑到这两种特性。在三维可视化场景中,符号的展现方式主要有附着、凸起和悬浮[14]3种。
三维场景中符号的空间定位都是基于真实的空间定位,不再局限于传统二维平面的四方向或者八方向[15],而是六自由度的。本文的态势符号展现方式采用悬浮式,这种展现方式灵活、多变、清晰,可满足态势信息流动性、多样性的特点。
视觉变量作为图形符号设计的理论基础,在符号设计中起重要作用[16]。对三维符号的视觉变量,文献[17]提出三维视觉变量包括静态变量、动态变量、操作变量;根据语音切分理论[18],将三维符号视觉变量进一步细分为图形元素和特征变量。
借鉴以上视觉变量的研究成果,本文将三维态势符号的构成要素分为指向要素、控制要素、样式要素3类。其中指向要素代表态势符号类型,可以分为单箭头、多箭头、无指向性面域;控制要素规定态势符号的形状自由度,包括固定控制点和不固定控制点;样式要素代表符号的光谱特征,包括形状、尺寸、颜色、亮度、空间姿态。
样式要素中的空间姿态元素是由符号在空间中的高程值决定的,明显区别于符号在二维平面中的情形。样式要素中的元素任意组合,形成样式变体,再与方向要素与控制要素中任一元素组合,形成视觉变量变体,指导三维态势符号物理结构。
2 三维态势符号的协同绘制本文提出的三维态势符号标绘方法包括事件驱动的标绘视图更新、协同消息传递、态势符号绘制算法和态势符号同步机制4部分。
2.1 事件驱动的标绘视图更新在协同标绘系统中,标绘数据需要同时被多个视图访问,且一个视图中的标绘数据更改需要同步刷新到多个视图,达到态势符号协同绘制、编辑的目的。因此,本文将数据中的变化事件封装进数据模型中,并通过函数回调机制来通知视图。以此为基础,实现标绘视图的及时更新。封装后的标绘数据模型中不仅包含属性数据(唯一标识、符号参数等)、应用功能(初始化、修改节点等)和操作接口(符号参数设置等),还包括各种事件。用户可以利用数据模型进行创建、修改和销毁操作,以及将使用数据模型建立的标绘数据保存至服务器。任何时候控制器对数据模型进行操作,改变了数据模型内部的属性,都会触发相应事件,并调用模型上绑定的回调函数,进而通知包含该数据模型的各个展示视图,进行视图重新渲染。本文将事件封装进数据模型,实现了因数据改变而进行的多视图及时更新。
2.2 协同消息传递在协同标绘系统运行的过程中,系统不仅要通过用户操作检测模块识别当前用户的交互操作,以进行下一步的操作;还要识别来自协同服务器的其他用户的标绘数据消息。考虑到系统的信息对称性,必须进行并发性控制。首先,每一位用户都会分配一个唯一的ID值,以区分不同的用户;用户在视图中触发交互事件时,系统控制器都会根据当前事件产生一个事件标签,用来标识当前操作事件,来确定事件发生次序;当用户完成符号标绘时,会提示是否将标绘内容广播至其他用户,如果不需要发送,则本地显示;如果需要发送,则将标绘内容或更改信息以消息广播的形式更新到其他用户。
本文利用Node.JS运行时组件构建了协同服务器,并引入socket.io类库实现了基于WebSocket协议的客户端与协同服务器端双向通信,进而达到了协同消息传递的目的。
2.3 态势符号绘制算法基于对三维态势符号构成元素的研究,本文设计了10种态势符号,如表 1所示。
| 表 1 态势符号类型 Tab.1 Situational Symbol Types |
![]() |
本文设计的态势符号以多控制点不规则符号为主。多控制点不规则符号是指几何形状不规则而无法用一个点来定位的符号。如弓形由固定的4个控制点生成;而进攻箭头的控制点数目不固定,控制点数目可以连续增加,符号也可以不断在空间上蜿蜒延展。
多控制点不规则符号需要用户输入主要控制点,进而根据特别设计的建模算法进行拟合。如图 1所示,以进攻箭头为例,来阐述符号建模算法。
![]() |
| 图 1 进攻箭头符号模型 Fig.1 Attacking Arrow Symbol Model |
1) 根据左右箭身起点控制点J、I生成其中点A,连同B、C作为符号中轴线节点。
2) 将中轴线节点A、B、C拟合为贝塞尔曲线。
3) 根据节点C和箭头内角∠1、箭头外角∠2和箭头长度CD 3个参数计算箭头节点DEF的坐标,用直线连接构建箭头部分。
4) 在DE和EF上,通过预设的比例参数,得到G和H点,作为左右箭身的终点。
5) 通过A、B、C和左右箭身的起终点,使用贝塞尔算法拟合左右箭身曲线。
6) 将左右箭身曲线的终点I和J相连,形成箭尾部分。
7) 计算J点与阴影控制点K的距离,并克隆拟合好的二维符号往K控制点方向移动,连接各顶点成完整符号。
2.4 态势符号同步态势符号更新包括态势符号的创建、编辑、销毁。由于协同标绘系统是多用户系统,系统不仅需要处理来自当前客户端的更新请求,还需要处理来自协同服务器的更新请求。
本文态势符号在3D场景中的更新主要是依靠事件-响应机制驱动的。在客户端用户发出交互消息,触发绘制事件;然后态势符号建模算法库对客户端发出的事件消息给予回应,完成态势符号的绘制。具体来说,态势符号更新主要由以下3个过程构成:
1) 用户操作交互(更新事件的触发)。用户在客户端发出事件消息,事件消息中包含操作用户、操作类型(创建、更改或删除)、符号类型等信息。
2) 用户操作检测(更新事件的监听)。以绘制事件为例,客户端根据用户操作交互模块发出的消息获取标绘对象的绘制方法,如控制点个数、颜色等信息。接着触发对用户操作行为的监听,如用户在标绘区域的屏幕点击操作。当用户点击屏幕的次数达到符号控制点个数要求时,停止对用户操作的监听,并利用函数回调完成对态势符号控制点屏幕坐标数据的封装,将数据发送至符号标绘模块。
3) 更新操作实施(更新事件的实施)。以绘制事件为例,态势符号绘制模块接收到态势符号屏幕坐标数据,进行地理坐标转换,完成屏幕坐标系与地理坐标系的转换;接着调用态势符号建模算法库,根据控制点坐标计算符号关键节点坐标,创建标绘数据模型;然后调用底层WebGL算法,完成图形的生成,并作为一个图层添加到3D场景中,完成符号的绘制。
3 原型验证本文采用Node.JS开发协同服务器,基于socket.io与Express框架进行协同消息传输,利用Cesium.JS构建三维场景,在Web浏览器客户端实现了态势符号三维协同标绘系统,实现了态势符号在三维场中的绘制、编辑、多用户标绘协同等功能。其中绘制模块实现了聚集地、夹击、进攻箭头、扇形、曲线面等10种态势符号的绘制;编辑模块实现了符号的样式编辑、节点编辑、删除等功能;多用户标绘协同实现了多用户之间的协同绘制、编辑。系统效果如图 2所示,其中图 2(c)由用户1、用户2双方协同绘制。
![]() |
| 图 2 系统效果展示 Fig.2 System Results |
4 结束语
针对当前态势标绘系统多是单用户系统,无法进行多用户实时交互的局限,本文从三维态势符号的表达方式、构成要素出发,结合多用户协同机制,实现了态势符号三维协同标绘系统。3D WebGIS为应急标绘提供了更为真实灵活的应用场景,多用户协同机制为群体实时交互提供了技术基础。态势符号三维协同标绘系统是协作指挥的重要技术工具,系统功能可靠,操作界面友好,一定程度上消除了指挥决策者受到的时间和空间束缚,为多用户群体协作提供了可能。
| [1] |
游雄, 万刚. 战场可视化与数字地图[J]. 地理信息世界, 2004, 2(3): 19-24. DOI:10.3969/j.issn.1672-1586.2004.03.005 |
| [2] |
于美娇, 张永生, 戴晨光. 实现复杂态势符号在三维场景中的绘制[J]. 测绘信息与工程, 2008, 33(4): 40-42. DOI:10.3969/j.issn.1007-3817.2008.04.018 |
| [3] |
白玉龙, 靖常峰, 杜明义, 等. 基于OSM Buildings生成WebGIS三维建筑日照阴影模型[J]. 地理信息世界, 2014, 21(5): 66-70. DOI:10.3969/j.issn.1672-1586.2014.05.013 |
| [4] |
应申, 郭仁忠, 李霖. 应用3DGIS实现三维地籍:实践与挑战[J]. 测绘地理信息, 2018, 43(2): 1-6. |
| [5] |
曹冰, 张爱武, 李惠敏, 等. 基于Skyline的无人机影像三维场景搭建及功能实现[J]. 测绘地理信息, 2019, 44(3): 65-67. |
| [6] |
Liu B, Dong W H, Meng L Q. Using Eye Tracking to Explore the Guidance and Constancy of Visual Variables in 3D Visualization[J]. ISPRS International Journal of Geo-Information, 2017, 6(9): 274. DOI:10.3390/ijgi6090274 |
| [7] |
朱文娟, 路文娟, 李英, 等. 基于SVG在线应急标绘符号的设计与实现[J]. 测绘地理信息, 2018, 43(5): 96-99. |
| [8] |
李剑萍, 章玲玲, 李昊, 等. 基于Flex与ArcGIS Server的Web军事态势标绘系统设计与实现[J]. 测绘地理信息, 2014, 39(3): 59-61. |
| [9] |
李鹏飞, 周杨, 许继伟, 等. 双模三维环境下的态势标绘技术研究[J]. 测绘科学技术学报, 2016, 33(2): 169-174. |
| [10] |
于佳, 仇建伟. 基于浏览器的二三维一体标图技术研究与实现[J]. 软件, 2017, 38(2): 130-135. DOI:10.3969/j.issn.1003-6970.2017.02.027 |
| [11] |
刘俊楠.二三维一体化军工GIS关键技术研究[D].郑州: 郑州大学, 2017 http://www.cnki.com.cn/Article/CJFDTotal-DZZN201905001.htm
|
| [12] |
朱杰, 游雄, 夏青, 等. 基于任务驱动的战场环境分析数据映射模型设计与实现[J]. 地理信息世界, 2017, 24(4): 80-85. DOI:10.3969/j.issn.1672-1586.2017.04.017 |
| [13] |
王艳东, 邬皛頔, 龚健雅. GIS中态势符号的建模与应用[J]. 测绘信息与工程, 2006, 31(2): 4-6. DOI:10.3969/j.issn.1007-3817.2006.02.002 |
| [14] |
丁昊, 张亚军, 张晓楠. 三维态势图符号以及表达的研究[J]. 测绘工程, 2012, 21(4): 45-48. DOI:10.3969/j.issn.1006-7949.2012.04.012 |
| [15] |
高玉荣, 朱庆, 应申, 等. GIS中三维模型的视觉变量[J]. 测绘科学, 2005, 30(3): 41-43. DOI:10.3771/j.issn.1009-2307.2005.03.011 |
| [16] |
陈毓芬. 地图符号的视觉变量[J]. 测绘学院学报, 1995, 12(2): 145-148. |
| [17] |
徐智勇, 艾廷华, 危拥军, 等. 三维地图符号视觉参量研究[J]. 武汉大学学报·信息科学版, 2006, 31(6): 557-560. |
| [18] |
田江鹏, 贾奋励, 夏青. 依托语言学方法论的三维符号设计[J]. 测绘学报, 2013, 42(1): 131-137. |
2020, Vol. 45




