Cesium 电力工程三维巡检可视化系统设计与实现
摘要:Cesium是一款面向三维地球和地图的,世界级的JavaScript开源产品。本文根据实际项目需求,将地理信息数据可视化技术引入到平台中,把三维空间数据以丰富的形式直观、形象地表现出来,提供更多样式的表现方式。文章介绍了可视化模块各功能模块的设计思路以及实现方法,模块具备建立输电线路本体及周围环境的真三维模型,进行高精度三维空间量测、模拟分析及通道可视化管理。
关键词:Cesium;输电线路;巡检;三维;可视化
Abstract: Cesium is a world-class JavaScript open source product for 3D Earth and map. According to the actual project requirements, this paper introduces the geographic information data visualization technology into the platform, intuitively and vividly displays the three-dimensional spatial data in rich forms, and provides more styles of expression. This paper introduces the design idea and implementation method of each functional module of the visualization module. The module can establish the true three-dimensional model of the transmission line body and its surrounding environment, and carry out high-precision three-di
mensional space measurement, simulation analysis and channel visualization management.
Keywords:Cesium; Transmission line; On-Site Inspection; Three dimensional; Visualization
Cesium是一款面向三维地球和地图的,世界级的JavaScript开源产品。Cesium的体系架构,主要包括了核心层、渲染器层、场景层和动态场景层四部分。各个模块之间有着紧密的联系,每个模块分工不同,各模块协同工作共同构成了Cesium的渲染体系。
数据可视化大屏设计本章阐述了巡检可视化模块的架构设计、功能需求分析、Cesium可视化模块设计与实现等。
1 模块架构设计
客户端采用Vue和Cesium集成的方式,采用数据驱动视图的方式进行高效的视图层操作,减少了繁琐地DOM操作且简洁易用、轻量高效,将更多精力放在数据和业务逻辑上。客户端整体架构如图1所示。
图1模块架构
2 模块可视化需求分析
本文根据实际项目需求,此 WebGIS可视化模块主要的功能需求有:
(1)图层管理:支持多种地图的显示功能,支持地形的显示功能,包括天地图、谷歌地图、百度地图以及全球地形等功能,包括在线的各种专题地图或者制作的离线地图等,支持各种地图之间的切换功能,,能够进行三维场景的旋转、平移、缩放等功能。
(2)模型加载:支持航测模型、点云数据的加载显示。
(3)测量标绘工具:支持空间距离、水平面积、空间角度、高度以及单点坐标的量测;支持点、线、面的标绘。
(4)GIS分析:支持缓冲分析、淹没分析、剖面分析以及通视分析功能。
(5)常用工具:支持按照关键字进行位置搜索,支持经纬度坐标定位、卷帘对比、双屏对比、定位区域以及生成轨迹进行路径漫游;清除工具可以实现对不对操作对象的清除。
(6)线路创建模拟功能:支持铁塔的创建,含直线塔和转角塔的添加,可以对铁塔进行编辑功能;支持导线、地线的创建功能;支持导线弧垂模拟功能。
3 模块主要功能模块设计与实现
3.1 图层管理
平台的地图影像服务模块,一方面可以通过在线服务的方式请求加载服务器端的多种数据源,包括:天地图、谷歌、高德等不同数据源的卫星影像及街景地图;另一方面,还可以加载离线环境发布的不同等级的离线瓦片数据格式的影像,以此实现二维矢量数据与三维场景一体化展示查询的可视化表达。
地形服务可以加载全球地形服务和离线环境下使用GeoServer发布的本地地形服务。
3.2 模型加载
模块可以加载不同类型数据源,包括倾斜摄影模型、激光点云模型、离线地形DEM功能等。
Cesium提供了Cesium3DTileset类来管理,主要负责Tile的调度。在Cesium中,3DTiles就相当于一个Primitive的位置。
在获取JSON对象后,首先创建rootTile根节点,然后在while循环中,以广度优先的方式遍历这个树,每个节点都有一个parentTile属性绑定父节点(根节点除外),同时有一个children数组,保存该节点对应的所有子节点。
通过cesiumLab工具将osgb格式转成3Dtiles文件,加载航测模型、点云模型。
图2 加载航测模型
图3 加载点云模型
3.3 测量标绘
模块具备测量与标绘功能,测量功能包含贴地距离量测、水平面积量测、空间角度量测、高度量测、点位坐标的量测 以及空间距离的量测;标绘包含点、线、面的标绘。
距离测量就是先获取两个点坐标,比较两个点高度值,确认两点向上或向下绘制,用线段绘制,额外添加两个label作为信息展示。基于提供的接口,将常用功能进行了进一步的封装。
绘制多边形,需要借助turf.js这个框架,使用turf.distance计算某两点的距离,通过图形分割
到达计算多边形面积的功能。为了方便使用,将绘制基本图形的代码全部进行了封装:
绘制点、线、面比较简单,创建Entity实例,传入对应的坐标就可以绘制出来。
3.4 GIS分析
模块提供了基于三维场景下的缓冲分析功能,通过绘制线路中心线,并设置缓冲半径,来实现缓冲区域的可视化分析。
淹没分析功能可结合地形DEM数据,设置参数,模拟区域淹没过程。
主要使用到的是Cesium库中polygon的extrudedHeight属性。通过定时器对绘制的polygon进行高度增加同时将polygon的颜设置成淡蓝,从而实现淹没效果的展示