APP下载

基于安卓移动端的三维GIS服务

2022-06-10毕京学高愿濡王一凡

导航定位学报 2022年3期
关键词:矢量安卓客户端

李 涛,毕京学,高愿濡,王一凡

(1.山东省地质测绘院,济南 250000;2.山东建筑大学,济南 250101)

0 引言

三维(3-dimension, 3D)地理信息数据主要由数字高程模型、卫星影像、普通3D模型格式的实体模型和矢量数据组成,3D数据具有数据量大、客户端渲染资源消耗多和结构组成复杂等特点,是3D地理信息系统应用的基础。现有的3D地理信息系统应用客户端存在缓存更新复杂、数据传输慢和渲染消耗资源大等问题。3D模型的完全渲染需要等待全部接收整个模型实体数据后加载,无法做到类似切片数据的“走哪看哪”。传统的3D数据服务发布一般采用X86架构服务器进行发布,需要专业人员借助阿尔克地理信息系统服务器(ArcGIS Server)发布中间件、地理服务器(geography server, GeoServer)地图服务发布中间件或恩吉克斯(Nginx)数据中间件进行发布。如果外网使用,还需要申请公网互联网协议(internet protocol, IP)地址,并制定互联网数据传输安全方案,给数据使用带来了极大不便。

倾斜摄影数据、建筑信息模型、新型地面模型数据、3D矢量模型数据和点云数据作为新型3D数据载体,在细节丰富度和数据采集效率等方面都具有较大优势。最近几年,3D倾斜数据被大范围地应用到了生产实践中,比如,房地一体化项目。然而,随着3D数据应用场景的增加、应用环境更加复杂,3D数据服务技术已成为阻碍3D地理信息系统大范围应用的瓶颈。如何在兼顾效率的情况下,使用移动端发布高性能 3D地理信息系统服务,是一个巨大的挑战。因而,本文提出了一种基于安卓移动端发布 3D地理信息系统服务的方法,以期适用于多类、可移动的复杂3D应用场景,满足日益增长的高性能3D地理信息系统服务需求。

1 三维瓦片

3D瓦片(3DTiles)是借鉴传统二维地理信息系统(geographic information system, GIS)的网络地图瓦片服务(web map tile service, WMTS)规范,开发的大规模3D数据分发标准,定义了分层数据结构和可交付内容的图块格式,用于流式传输和大型3D地理空间内容渲染,例如,倾斜摄影模型、建筑信息模型和点云等。3DTiles数据格式由glTF格式模型数据发展而来,glTF格式模型数据主要为了解决3D模型的快速渲染问题,它不使用面向对象的思维存储3D模型和贴图纹理,而按照方便显卡数据处理方式存储模型数据,进而让渲染的效率更高,glTF的结构如图1所示。

图1 gltf结构

严格来讲,3DTiles是一种规范,资源文件可以是散列的文件目录,也可以是以二进制存储的数据库文件。目前,3DTiles官方只发布了基于散列文件实现,但是国内已经出现了基于斯克莱特(SQLite)数据库和蒙戈德布(MongoDB)数据库的实现。

3DTiles数据标准不记录单个模型数据,只记录各级瓦片的逻辑关系,以及瓦片自身的属性信息。模型数据指的是 3D模型的顶点、贴图材质、法线和颜色等信息。逻辑关系是指各级瓦片是在空间中如何保持连续的和多层次细节(levels of detail, LOD)是如何组织的。

1.1 普通模型向3DTiles格式模型的转换方法

普通的3D模型大部分是从易于编辑的角度对内容进行组织的,例如obj格式3D模型,其内部组织形式依靠文本编辑器就可查看,判读也非常简单,找到三角面信息后,根据组织信息即可大致分析其内部构成情况。但是对于3D渲染引擎而言,obj格式的3D文件是不利于渲染的,3D引擎需要先读取obj 3D信息,然后进行转义后才能在计算机中进行渲染展示,这就大大加重了3D引擎的渲染负担,所以将普通3D模型转换为3DTiles标准模型是3D模型使用的必要步骤。

将普通3D模型转换到3DTiles格式模型有许多工具,国内比较成熟的转换工具有北京西部世界公司的凯西乌姆·拉布(CesiumLab)转换工具和北京超图软件股份有限公司的超图(SuperMap)GIS10i软件。模型转换的基本原理为普通模型文件转换成二进制 glTF,作为文件体的一部分,与文件头、特征表和批次表共同组成瓦片数据批量3D模型(batched 3D model, b3dm)文件,然后利用特定组织文件组织b3dm相关资源,构成一个散列的3DTiles文件。

1.2 3DTiles数据的发布方法

3DTiles数据的发布比较简单,只需把3DTiles散列文件放入Nginx的发布目录,然后根据客户端设置Nginx的相关跨域配置即可。以Cesium.js 3D框架的3D模型服务使用为例,所有客户端的资源请求都由客户端发起,用户引入 3D引擎基础资源后请求 3DTiles的贾瓦·斯克里普特根节点对象简谱(JavaScript object notation, Json)文件即可。

2 安卓服务器及3D地理信息系统服务

安卓服务器(Android server, AndServer)是基于安卓操作系统的网络资源发布中间件,能够提供静态资源发布服务和动态接口服务,可以满足 3D GIS服务发布需要,目前已经在吉特·哈伯(GitHub)平台上实现了开源。越来越强大的安卓移动设备数据存储和处理能力使得AndServer作为一款 3D地理信息系统服务发布中间件来使用。基于 AndServer的 3D地理信息系统数据发布服务框架如图2所示,AndServer提供数据服务和应用资源,并使用负载均衡中间件对AndServer的服务能力进行增强扩充。

图2 基于AndServer数据分发框架

2.1 AndServer发布3DTiles资源和3D地理信息系统应用服务

AndServer可以发布3D模型资源,也可以发布3D地理信息系统应用服务,特别是单页应用程序(single-page application, SPA)应用,不但可以方便安卓操作系统上的万维网(world wide web,Web)应用调试,而且可以减少服务端逻辑运行负载。如图3所示,手机可以作为3D模型资源服务器和3D地理信息系统应用服务器,使用者把编译好的单页应用程序部署文件和3D模型切片散列文件放到AndServer发布目录内即可。

图3 三维模型和应用服务

2.2 AndServer发布3D地理信息系统分析服务

开源GIS工具包(GeoTools)是一个开源的用于提供空间分析的贾瓦(Java)程序库。基于AndServer的动态服务接口,在完成3D模型数据发布和 3D地理信息系统应用服务发布的基础上,使用 GeoTools可以实现基于AndServer的数据分析,此功能类似于 ArcGIS的地理数据处理服务。AndServer的相关配置完全采用标准包管理工具和标准的注解规范,所以在GeoTools引入和使用上也非常方便,GeoTools的处理结果可以通过伊森(Json)格式数据传输到客户端,以保证数据在服务端和客户端的标准传输。如图4所示,在3D地理信息系统客户端,借助客户端的空间地理数据处理能力对读取的矢量数据再次进行相应分析处理工作,并把修改或分析过的地理信息数据传回到AndServer服务器的动态接口,完成存储或进行进一步的分析工作,从而在业务逻辑上形成一个闭环。

图4 GIS分析服务

2.3 AndServer的矢量服务发布能力

传统的矢量服务通常依赖于服务端的数据库处理能力,虽然在大数据量的使用上存在优势,但同时也带来了服务端臃肿和服务条件苛刻等问题。现在使用最多的开放地理信息空间联盟(Open Geospatial Consortium, OGC)的网络要素服务(web feature service, WFS),采用的是可拓展标记语言(extensible markup language, XML)格式的数据传输方案,在网络传输上存在一定的数据冗余。基于3D地理信息系统应用的客户端处理能力,可以在服务端借助 AndServer部署一个静态矢量数据资源服务,发布静态的矢量数据,利用客户端的矢量数据管理能力来加载静态矢量数据。客户端可以在读取矢量数据后,把相应矢量信息加载到3D场景中,而且可以在加载的过程中设置矢量数据的符号样式等属性。

2.4 AndServer的分布式服务网络

对于大体积和高并发的资源请求,多个AndServer可以组成一个分布式服务网络,从资源拆分和负载均衡的角度来优化资源服务。结合AndServer的动态服务接口,可以使用心跳机制来监测服务节点的健康状况,让宕机的服务节点退出服务网络,并实时更新服务节点列表。通过 AndServer的负载均衡能力,可以大大缩减AndServer的服务响应时间。移动端负载均衡服务可以使用安卓应用程序特穆克斯(Termux)来代替 X86环境下的 Nginx中间件,结构如图5所示。

图5 负载均衡网络

2.4 AndServer发布优势

基于AndServer的3D资源发布方法的最显著优势就是其发布的灵活性和便捷性,不需要配置专业地理信息系统服务器,只需要一台手机即可进行相应3D地理信息系统资源发布,而且发布简单,不需要特殊配置。在外业工作中,可以一站式解决网络信号差和局域网数据分享问题。AndServer提供了丰富的地理信息系统服务发布场景,可以有效地发布3D模型资源、矢量资源、客户端应用程序和影像资源等多种服务,而且可以满足多节点、多场景应用需求,满足绝大部分3D地理信息系统应用服务发布场景和需求。基于AndServer的移动端3DGIS服务效果如图6所示。

图6 基于AndServer的移动端3D GIS服务

3 AndServer与Nginx效率对比

AndServer与Nginx的测试环境数据如表1所示。使用的测试数据分别为3D Tiles数据,包括6个b3dm文件(1号至6号)和3个Json文件(1号至3号),共4.88 MB;以及Json数据,包括1个Json面文件(1号),共 6.53 MB。测试结果如图7至图9所示。

图7 3D Tiles b3dm数据的响应时间对比

图9 GeoJson数据的响应时间对比

表1 AndServer与Nginx测试环境

通过以上数据统计结果发现,AndServer服务一般会有一个服务“预热期”,特别是小体积文件,前期请求的数据文件一般会有一个延迟效应。AndServer的响应时间在3DTiles这种切片散列文件上性能是 Nginx的 30%左右,单个大文件的性能是 Nginx性能的 50%以上,文本文件的服务效率上好要好于二进制文件。从响应时间上来看,AndServer的响应时间普遍要小于500 ms,满足3D地理信息系统客户端使用要求,从性能硬件上对比发现AndServer要好于Nginx。考虑到AndServer的低功耗架构限制,AndServer可以说是一款非常优秀的服务器组件。

图8 3D Tiles Json数据的响应时间对比

4 结束语

移动端作为 GIS服务器是一个非常新的研究领域,国内外研究资料都比较匮乏,AndServer的出现恰逢其时,基本满足3D地理信息系统应用的需要,架构上适合移动端设备安装,使用上简单灵活,使用场景多样,非常适合在复杂环境和网络环境不好的工作场景中作为地理信息系统数据发布中间件使用,而且可以组成分布式网络来增强服务性能,进而弥补单个移动设备性能上的不足和降低服务响应时间。本文仅从服务发布效率上进行测试,移动端3D GIS服务还应该进行更摄入的测试,如多个AndServer服务器和多个终端访问的测试,不同手机硬件配置的AndServer服务器性能测试,稳定性测试。

AndServer不但可以安装在手机上,从架构上来讲可以安装在所有安卓设备上,移动互联网时代,安卓操作系统作为装机量最大的操作系统,未来移动设备即服务(mobile as a server, MAAS)的时代正在到来,每个人的移动设备和智能硬件就是一个地理信息服务发布设备,真正做到让地理信息服务无处不在。此外,伴随着安卓设备性能的不断提升,AndServer的服务性能也将会显著提高。相比于Nginx这类静态服务组件而言,AndServer具备动静服务一体化能力和灵活的移动化部署能力,得益于此,AndServer将会大大降低地理信息系统服务的架设复杂度,并助力地理信息服务发布技术的快速发展。

猜你喜欢

矢量安卓客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
iPhone不卡的秘密曝光:安卓也能享受
矢量三角形法的应用
让iPhone变安卓,这是真的野
文物表情包
力的矢量性的一个例子
虚拟专用网络访问保护机制研究
三角形法则在动态平衡问题中的应用
新华社推出新版客户端 打造移动互联新闻旗舰
安卓机器人