移动终端电力三维GIS平台设计与实现

2015-03-20 01:29任培祥范光甫刁富阳
电力勘测设计 2015年2期
关键词:瓦片矢量调度

任培祥,范光甫,刁富阳,王 刚

(北京洛斯达数字遥感技术有限公司,北京 100120)

1 概述

随着移动互联网技术的发展,手机、平板电脑等智能设备的应用越来越广泛,各种应用层出不穷且如微信、手机淘宝等,移动智能终端已经深入到我们生活的各个方面。由于3G/4G无线网络技术的发展,移动智能终端在专业领域以及企业级方面的应用也越发凸显,移动终端市场也必将成为这些领域的必争之地。百度、腾讯、Google Earth、ESRI等互联网及地理信息专业领域的企业在移动终端方面也都进行了重点研究并开发了相关的产品。但是在专业领域方面移动互联网产品还不能满足企业级应用需求,缺乏有针对性的、实用性的产品。

本文通过研究移动设备的软硬件、开发环境、三维图形库、GIS、触控、语音识别等相关技术,研发了一套适用于移动终端的三维渲染引擎,该引擎提供二次开发包,支持Andriod和IOS操作系统。利用该引擎搭建了移动终端电力三维GIS基础平台,可实现海量基础地理数据发布、电网三维模型快速调度与渲染、矢量及地名数据渐进式加载以及电网业务实用性功能。

2 整体设计

2.1 框架设计

系统采用典型的三层结构设计:数据层、服务层、表现层。数据层主要是存储影像、地形、矢量、电网三维模型、地名等基础数据;服务层主要是提供基础数据的快速检索及发布;表现层主要是通过无线网络与服务层进行连接并接收发布的数据,最终在客户端展现。系统结构见图1。

图1 系统架构

2.2 流程设计

系统采用网络数据发布及本地加载两种方式实现基础数据的展现,基础影像、数字高程模型(Digital Elevation Model,DEM)以及电网三维模型作为本系统最基本的数据,可分别通过上述两种方式实现加载并展现。图2中蓝色代表基础影像、DEM加载的流程,红色代表电网三维模型加载的流程。整个流程的设计考虑到了移动终端硬件设备以及内存的承载力,在数据加载的过程中系统做了相应的调度以及内存控制,同时为了保证系统运行的效率,采用了多线程设计模式。

图2 系统数据加载流程

2.3 关键接口设计

系统核心的功能包括两个:(1)海量基础地理数据的加载、调度;(2)电网三维模型的调度与快速渲染。

海量基础地理数据加载通常采用WMTS(Web Map Tile Service,地图瓦片服务)实现,WMTS是OGC中规定的Web服务之一,可以通过网络访问的方式能够为用户提供地图瓦片服务。客户端将相关信息通过服务链接的方式发送至服务端,然后由服务端根据参数进行快速搜索并将结果返回给客户端,主要接口包括:瓦片地理范围、层级、服务名、行号、列号等。

电网三维模型采用数据库和文件方式联合存储,数据库存储了电网三维模型的关联信息,文件存储了三维模型实体数据。系统利用数据库的信息以及实体模型数据可构建出电网三维模型的关联关系,能够实现线路杆塔、绝缘子/金具、导线的准确绘制,主要接口包括:模型路径、线路名称、回路数、导线分裂数、挂点、姿态等。

2.4 跨平台设计

跨平台是指系统的开发和实现不依赖于操作系统或者硬件,系统程序代码不需要修改过多就可以在其它操作系统上成功运行。语言方面,C/C++属于源码级跨平台开发语言,可以作为程序语言的首选,Android和IOS操作系统与UI相关的系统函数使用的特定语言分别为JAVA、Objective-C语言,底层核心都支持常见的跨平台语言C/C++语言;图形渲染方面OpenGL ES是OpenGL三维图形API的子集,在Android和IOS操作系统都支持底层C/C++语言的函数接口,用户可以将OpenGL ES代码进行封装,构建底层核心代码。

跨平台设计是移动三维GIS系统能够在安装不同操作系统的移动设备正常运行的基本原则。采用UI与底层核心分离的设计原则,使得UI使用系统特有语言进行与用户操作相关的开发,底层采用C语言封装OpenGL ES的方式构建核心类库与接口,这种跨平台设计方法兼顾了用户体验和系统的高效性与跨平台特性。

3 关键技术研究

3.1 海量基础地理数据发布

3.1.1 数据组织方式

系统采用常规的四叉树组织方式,将原始数据处理成瓦片金字塔,全球范围内第0层为2×1张,第1层为4×2张依次类推,见图3。

图3 瓦片金字塔分块示意图

3.1.2 数据调度及渲染

系统采用了分页机制实现了金字塔瓦片的调度,分页机制的工作方式是按照用户的可视范围,将多个子节点设置为复杂模型的多个细节层次,在视点靠近时呈现较多的物体细节,而在远离时仅仅显示出一个简化的模型,从而降低了运算和绘制的负担。与普通多细节层次(Levels of Detail,LOD)不同的是,它不需要将所有层次的节点一次性加载进内存,而仅仅需要指定各个层次节点的文件名。在程序运行阶段,利用分页数据库功能将这些节点动态加载到场景中,并根据用户当前的可视范围,将那些一段时间内无法被看到的子节点从内存中卸载,以节约系统资源。如果用户的视域改变,被释放的细节层次子节点又重新进入视野,分页数据库线程会重新加载它,见图4。

图4 四叉树结构中使用分页原理

3.1.3 下载缓存

建立缓存的目的主要是提高数据的访问速度,本系统基于移动设备的特点设计了相应的缓存机制,可实现数据下载并缓存。移动端的缓存机制主要包括两个模块:下载和缓存。其中下载模块主要负责下载队列的新建、开启、关闭、管理、删除以及瓦片请求的添加、处理、删除等;缓存模块主要为每一条下载线程存储缓存文件(*.dat)及索引文件(*.idx),在应用程序运行初始时通过读取索引文件读入缓存文件中的瓦片数据。缓存文件中记录了瓦片数据的字节流,索引文件记录了该瓦片对应的行列号,缓存文件和索引文件一并使用。

3.2 电网三维模型调度与渲染

3.2.1 数据组织方式

电网三维模型的数据量相对较大、关联关系较复杂等特点,数据存储采用数据库及文件联合方式。考虑到移动平台软硬件环境的兼容性以及服务端数据发布,本系统采用SQLite数据库存储电网三维模型的线路信息及关联信息,如:模型路径、线路名称、回路数、导线分裂数、挂点、姿态等,可支持多条线路数据;采用文件的方式存储了三维模型实体数据,数据按照线路代码分文件夹存储。

3.2.2 数据调度及渲染

由于电网三维模型数据很大,构建全部模型需要很长时间和占用大量内存,对于移动设备来说无疑会增加很大开销。本文研究了根据视点的位置来加载视野内的线路数据,根据特定淘汰算法卸载那些长时间不在视野内的线路数据,通过这种策略有效减少了系统占用的内存。考虑到杆塔、绝缘子/金具等模型的精细化程度,本文研究了LOD及Impostor技术来提升模型渲染的效率。

3.2.3 网络数据发布

SQLite支持C++程序使用,同时支持PHP、JAVA、.NET连接访问,考虑到线路数据需要进行网络发布,且SQLite不具备远程访问的功能,本文研究了移动端通过Web Service 的方式获取线路数据,服务器端使用Apache+PHP组合实现远程数据查询请求,客户端向服务器发送一条包含SQL查询语句字符串,PHP网页获取并解析,同时连接本地SQLite数据库进行查询,然后将查询结果返回给客户端,最终实现网络数据发布。

3.3 矢量及地名数据分块与渐进式加载

3.3.1 数据组织方式

矢量数据包括点、线、面三种类型,地名属于点状类型。矢量加载分为真矢量及栅格化矢量两种方式,各有优缺点。真矢量优点是显示效果好,查询操作简单,缺点是数据结构复杂;栅格化矢量优点是数据结构简单,缺点是显示效果差、查询操作复杂。结合实际情况本文研究了真矢量的加载及绘制方式。矢量和地名数据本身并没有特殊性,根据移动终端的硬件环境,本文设计了将矢量数据直接存储,将地名数据存储到SQLite数据库中,方便进行数据服务发布。

3.3.2 数据调度及渲染

矢量和地名数据具有连续性强,覆盖范围大,且具有层级分布特性,如矢量数据和地名数据通常情况下按照不同级别进行存储,如省级、地市级、县级、乡镇级。根据数据的特点,系统研究了适用于矢量、地名层级渲染的机制,目标是利用瓦片切片机制实现数据的分块处理及分层加载。基本思想是:将每一层(类)数据根据覆盖范围大小选择合适的块大小进行动态切分,然后根据不同级别数据的特点选择合适的LOD层级进行动态加载及渲染。

3.3.3 数据编码规则

系统根据场景视点的位置对多块数据进行判断,原则是在视野范围之内的加载,不在视野范围之内的剔除,这种机制实现的前提是数据块要有统一的编码规则。

具体公式如下:

式中:lat、lon分别为数据的位置;n为数据层级(不同级别n的值设定的不一样)。

4 系统介绍

4.1 功能特点

系统支持Andriod和IOS,底层采用C++、OpenGL ES等技术,上层根据不同操作系统选择对应的语言,Andriod端采用JAVA,IOS端采用Object-C,通过上层调用底层的接口实现不同的应用。主要功能如下:

(1)海量基础地理数据调度与漫游

系统支持无线网络数据服务发布,支持多分辨率影像和DEM数据加载,能够实现海量基础地理数据的快速调度与漫游。数据可通过配置的方式进行加载,方便用户使用。

(2)电网三维模型快速加载及渲染

系统支持包括线路杆塔、绝缘子/金具、导线等电网三维模型的精确绘制,能够真实还原现场环境,同时支持物体拾取,便于做进一步业务应用开发。

(3)矢量、地名数据加载

系统支持各级行政区划及地名数据的分块渐进式加载,支持数据的属性查询。

(4)全球定位系统(Global Positioning System,GPS)实时定位及轨迹绘制

系统支持GPS实时定位,同时支持用户轨迹的实时绘制,便于用户进行自身的快速定位及目标点的跟踪判断。

(5)地物标绘

系统支持点状、线状、面状地物标绘,如测量控制点、输电线路、交叉跨越河流及房屋等,便于用户进行外业数据采集,如外业调绘。

(6)信息查询

系统支持线路及热点的信息查询,同时支持兴趣点的标注,便于用户及时了解线路整体及敏感点信息。

(7)数据采集与上传

系统支持拍照、文字录入及上传功能,能够进行实地现场拍照并上传至指定服务器,充分利用了移动互联网技术手段,有效保证了数据的及时性、准确性。

除上述功能外,系统还提供了图层管理、坐标定位、飞行漫游、多种对象绘制、空间分析等相关功能,便于用户进行多种应用。

4.2 运行效率

系统以晋东南—南阳—荆门1000 kV特高压交流试验示范工程、部分陕西省内线路工程、哈郑特高压工程陕西段、全国范围内的矢量行政区划、地名注记以及其它附属信息为试验数据,分别在iPad 3和iPad 4上进行了运行测试,iPad 3和iPad 4硬件配置见表1。表2测试结果表明:(1)随着系统加载数据量的增大,系统内存占用越多,运行效率也会变慢;(2)不同的数据采用的调度机制也会对渲染产生一定的影响;(3)在iPad 4上相同数据运行的效率要明显高于iPad 3。

表1 硬件配置

表2 内存占用及渲染帧率

5 结语

本文研究了移动终端软硬件、无线网络、三维可视化、GIS等相关技术,设计并开发了一套适用于移动终端的三维渲染引擎,同时利用该引擎搭建了移动端电力三维GIS基础平台。随着移动互联网技术的发展,移动智能终端的应用在专业领域及企业级方面会更加深入。本文以电力行业的部分业务为研究对象,实现了一些实用性功能,后续还会进行针对性的研究与开发,提高移动终端三维GIS在电力行业中的应用。

[1]周旭.OpenGIS网络地图分块服务实现标准(WMTS)分析[J].地理信息世界,2011,(4).

[2]任培祥,等.三维全景智能电网信息化支撑平台的关键技术研究与应用[J].电力勘测设计.2009,(4).

[3]邓世军,等.数据分页技术的海量三维数据模型动态调度[J].测绘科学,2013,(4).

[4]熊庆文,边馥苓.基于嵌入式数据库系统的移动GIS应用体系结构研究[J].武汉大学学报(信息科学版),2006,(1).

[5]于海龙,等.基于WebServices的GIS与应用模型集成研究[J].测绘学报,2006,(2).

[6]李建勋,等.面向影像金字塔的线性四叉树编码及其特性[J].计算机应用,2011,(4).

[7]白建军,赵学胜,陈军.基于线性四叉树的全球离散格网索引[J].武汉大学学报(信息科学版),2005,(9).

[8]邓世军,等.数据分页技术的海量三维数据模型动态调度[J].测绘科学,2013,(4).

[9]ErikM.BuckOpenGLES应用开发实践指南:IOS卷[M].徐学磊,译.北京:机械工业出版社.2013.

[10]官酩杰.基于OpenGLES的移动平台图形渲染引擎研究与实现[D].北京:北京交通大学,2010.

猜你喜欢
瓦片矢量调度
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
打水漂
一种基于主题时空价值的服务器端瓦片缓存算法
《调度集中系统(CTC)/列车调度指挥系统(TDCS)维护手册》正式出版
基于强化学习的时间触发通信调度方法
一种基于负载均衡的Kubernetes调度改进算法
虚拟机实时迁移调度算法
惯性
基于矢量最优估计的稳健测向方法