面向智能终端地图渲染的空间数据在离线管理和调用方法
技术领域
本发明涉及到地图数据处理技术领域,具体地说,是一种面向智能终端地图渲染的空间数据在离线管理和调用方法。
背景技术
目前面向移动智能终端的地图渲染包括矢量瓦片和栅格瓦片两种方式。其中栅格瓦片是一种比较传统的方式,将矢量数据渲染成一定规则大小的图片,并在移动端进行排列显示。矢量瓦片是将矢量数据以json等格式分块传输到移动端,然后利用相应的技术按照排列规则实现在移动端的绘制和展示。
目前智能终端的空间数据管理与调用主要包括三种:一是离线方式,该方式主要是根据瓦片金字塔模型对数据按照层级和行列进行组织与编码,最终形成一个数据包。然后拷贝至移动端。移动端根据当前的地图范围,计算出需要展示的瓦片编号,并进行渲染。后期,ArcGIS等公司基于该方式进行了优化,形成一种新数据格式-.tpk,把离散化的瓦片进行了压缩,形成了按照层级进行管理的文件,这样大大减小了离线瓦片拷贝时的存储时间。二是在线方式,该方式是将瓦片数据以上面的方式存放在服务端,然后以服务的方式将该数据发布出来,客户端通过当前显示的空间范围计算出所需的瓦片,然后通过接口调用相应的瓦片进行渲染和展示。三是在离线一体化,目前类似百度、高德等互联网地图以及ArcGIS等均可采用先下载,后调用的方式,即,先在线下载相应的离线包,然后调用。数据更新由用户自己进行操作。
以上方式在一定条件下都有相应的弊端,比如在线方式移动数据流量消耗大,离线方式的数据难以做到即时更新,在离线一体化的方式,需要用户经常主动的去触发数据更新操作,地图浏览不稳定等。
发明内容
针对现有技术的不足,本发明的目的是提供一种面向智能终端地图渲染的空间数据在离线管理和调用方法,通过对当前网络环境的判断,实现在线模式下的数据自动更新,并确保离线模式下能够尽可能的调用最新数据。
为达到上述目的,本发明采用的技术方案如下:
一种面向智能终端地图渲染的空间数据在离线管理和调用方法,其关键在于按照以下步骤进行:
步骤1:基于瓦片地图金字塔模型,设计一套用于空间数据存储的服务信息表结构,并采用智能终端开源数据库进行数据存储和加密;
步骤2:离线数据包初始化;
步骤3:数据更新与调用,具体步骤为:
步骤3-1:根据当前范围计算需要在智能终端渲染的网格编号;
步骤3-2:根据网格编号从本地离线数据库中获取瓦片数据的文件更新时间、文件更新标识与文件预过期时间;
步骤3-3:将本地时间与文件更新时间的差值与文件预过期时间进行比较,若小于文件预过期时间则判定为数据无更新,直接调用瓦片数据,否则进入3-4;
步骤3-4:智能终端判断当前网络环境,若有网络则将网格编号和文件更新标识发送至服务器请求瓦片数据,若无网络则使用本地瓦片数据并结束操作;
步骤3-5:服务器对比智能终端发送的文件更新标识与当前服务器的文件更新标识,若相同则服务器发送未更新状态代码至智能终端,否则服务器发送瓦片数据并附带瓦片的文件更新时间、文件更新标识与文件预过期时间至智能终端;
步骤3-6:智能终端对接收的数据进行解析,若接收的数据为未更新状态代码则立即展示瓦片数据并对本地数据不进行修改,若接收的数据为瓦片数据则将瓦片的文件更新时间、文件更新标识与文件预过期时间更新到本地离线数据库对应的网格编号后展示瓦片数据。
进一步的,所述金字塔结构模型包括服务图层基本信息和数据信息两部分。
更进一步的,所述服务图层信息包括服务图层地址URL、服务图层范围、坐标系以及初始位置;所述数据信息包括网格所在层级、所在行和所在列、数据的更新时间以及网格数据内容。
进一步的,所述离线数据包的初始化步骤为:
步骤2-1:通过服务地址加载地图服务信息;
步骤2-2:根据服务地址进行唯一编码,形成本地离线数据库,并在服务信息表中写入相应的信息;
步骤2-3:计算当前需要展示的网格编号;
步骤2-4:根据网格编号通过服务接口调用相应网格的数据内容,然后在智能终端进行渲染,并写入本地离线数据库的数据表中。
再进一步的,步骤2-1中所述地图服务信息包括地图初始化范围、原点位置、坐标系与分辨率。
进一步的,步骤1中所述开源数据库为SQLCipher数据库。
本发明的显著效果是:
1、在线、离线两种状态下,可以完全自动的进行无缝切换,实现了地图在不同网络环境下稳定流畅的浏览和使用,大大降低了用户的移动数据流量费用,减少了用户对状态切换的操作;
2、通过对当前网络环境的判断,实现了在线模式下的数据自动更新,并确保离线模式下能够尽可能的调用最新数据,降低了用户对数据本身是否需要更新的关注度,提高了软件的易用性;
3、基于瓦片金字塔模型,设计了一套用于空间数据存储的表结构,并采用开源的SQLCipher数据库进行数据存储。既保证了数据存储结构的通用性,能够适应一切基于金字塔模型渲染的地图数据源管理,同时也保证了数据的安全性,提高了数据包的传输效率。
附图说明
图1是本发明的方法流程图;
图2是本发明中离线数据包初始化的方法流程图;
图3是本发明中所述数据更新与调用方法的流程图。
具体实施方式
下面结合附图对本发明的具体实施方式以及工作原理作进一步详细说明。
如图1所示,一种面向智能终端地图渲染的空间数据在离线管理和调用方法,按照以下步骤进行:
步骤1:基于瓦片地图金字塔模型,设计一套用于空间数据存储的服务信息表结构,如表1所示,并采用智能终端开源数据库进行数据存储和加密;
本例中,在数据存储方面采用目前移动端通用的开源数据库SQLCipher,进行数据存储和加密。数据按照金字塔结构建立索引,包括服务图层基本信息和数据信息两部分:服务图层信息包括服务图层地址URL、服务图层范围、坐标系、以及初始位置等;数据信息部分包括网格所在层级、所在行和所在列、数据的更新时间以及网格数据内容等。此方式为本技术领域常规手段,在此不做赘述。
表1、服务信息数据表结构设计
数据表中:
Id为地图服务编号;
MAP_TYPE为地图类型(取值为0和1,其中0表示传统瓦片地图,1表示矢量瓦片地图);
MAP_URL为地图服务地址;
MAP_ENVELOPE_XMIN为地图范围经度最小值;
MAP_ENVELOPE_YMIN为地图范围维度最小值;
MAP_ENVELOPE_XMAX为地图范围经度最大值;
MAP_ENVELOPE_YMAX为地图范围维度最大值;
MAP_TILE_WKTID为地图坐标参考系统编号;
MAP_TILE_WKT为地图坐标参考系统;
MAP_DPI为地图分辨率;
MAP_ORIGINX为地图初始化范围中心点经度;
MAP_ORIGINY地图初始化范围中心点维度;
SPATIAL_REFERENCE空间参考系;
GRID_INFO为地图瓦片信息;
GRID_LEVEL为地图瓦片层级;
GRID_COLUMN为地图瓦片所在列号;
GRID_ROW为为地图瓦片所在行号;
GRID_DATA为地图瓦片数据内容;
UPDATE_TIME为地图瓦片更新时间。
步骤2:离线数据包初始化(默认本地没有离线数据,因此初始化需要在在线环境下完成),如图2所示,数据初始化的步骤为:
步骤2-1:通过服务地址加载地图服务信息,包括地图初始化范围、原点位置、坐标系、分辨率dpi;
步骤2-2:根据服务地址进行唯一编码,形成本地离线数据库,并在服务信息表中写入相应的信息;
步骤2-3:计算当前需要展示的网格编号;
步骤2-4:根据网格编号通过服务接口调用相应网格的数据内容,然后在智能终端进行渲染,并写入本地离线数据库的数据表中。
步骤3:数据更新与调用,具体步骤参见附图3:
步骤3-1:根据当前范围计算需要在智能终端渲染的网格编号;
步骤3-2:根据网格编号从本地离线数据库中获取瓦片数据的文件更新时间Last-Modified、文件更新标识ETag与文件预过期时间Expire;
步骤3-3:将本地时间NowTime减去文件更新时间Last-Modified的差值与文件预过期时间Expire进行比较,若小于文件预过期时间Expire,则判定获取的瓦片数据在过期时间内即数据无需更新,可直接调用瓦片数据,若差值大于文件预过期时间Expire则判定为获取的瓦片数据过期,则进入3-4;
步骤3-4:智能终端判断当前网络环境,若有网络则将网格编号和文件更新标识ETag发送至服务器请求瓦片数据,若无网络则查找本地网格数据是否存在,若存在则加载本地瓦片数据并展示瓦片数据,并结束操作,若不存在则向服务器请求瓦片数据;
步骤3-5:服务器对比智能终端发送的文件更新标识ETag与当前服务器的文件更新标识ETag,若相同则服务器发送未更新状态代码(状态编码为304)至智能终端,否则服务器发送瓦片数据(状态编码为200)并附带瓦片的文件更新时间Last-Modified、文件更新标识ETag与文件预过期时间Expire至智能终端;
步骤3-6:智能终端对接收的数据进行解析,若接收的数据为未更新状态代码(状态编码为304)则立即展示瓦片数据并对本地数据不进行修改,若接收的数据为瓦片数据(状态编码为200)则将瓦片的文件更新时间Last-Modified、文件更新标识ETag与文件预过期时间Expire更新到本地离线数据库对应的网格编号后展示瓦片数据。
本方案在线、离线两种状态下可以完全自动的进行无缝切换,实现了地图在不同网络环境下稳定流畅的浏览和使用,大大降低了用户的移动数据流量费用,减少了用户对状态切换的操作;并通过对当前网络环境的判断,实现了在线模式下的数据自动更新,并确保离线模式下能够尽可能的调用最新数据。降低了用户对数据本身是否需要更新的关注度,提高了软件的易用性;同时,基于金字塔模型,设计了一套用于空间数据存储的表结构,并采用开源SQLCipher数据库进行数据存储。既保证了数据存储结构的通用性,能够适应一切基于金字塔模型渲染的地图数据源(包括ArcGIS、Google Map、OpenStreetMap等)管理,同时也保证了数据的安全性,提高了数据包的传输效率。