移动平台下电子海图矢量数据访问优化方法

1引言

近年来,中小型航海用户对电子海图系统(ECS)的便携性、移动性提出了更高的需求。随着信息技术的发展,以Android、IOS为系统的智能手机、平板电脑等小型移动平台发展迅速,以其作为搭载电子海图的硬件平台,不仅能满足用户对电子海图移动便携的要求,更为重要的是其简易的操作模式和软件维护降低了电子海图的使用门槛和成本。因此开发适用于小型移动平台的电子海图系统有广阔的应用价值。

空间数据是电子海图系统的显示基础。小型移动平台的载体体积小,内存容量小,对数据处理的速度有一定的限制。空间数据中栅格数据的结构简单、操作比较容易、输出快速简便;而矢量数据的结构、算法、操作复杂、显示输出成本较高,但便于空间分析。考虑到两种数据及小型移动平台的特点,系统采用背景层以栅格数据为表现手段,并叠加以矢量数据为表现手段的功能扩展层。栅格数据通过构建瓦片金字塔模型,并发布瓦片数据实现调显的方法手段相对比较成熟,本文不做赘述。矢量数据作为系统功能扩展层的数据源,通过后台对数据的访问并调至前台,在以一定的符号化方法进行显示。受制于小型移动平台的硬件现对弱点,若不对数据访问过程进行一定的优化处理,矢量数据在前台显示将产生卡顿现象,影响用户使用。为此本文重点对矢量数据访问的优化方法进行研究。

2矢量数据访问优化方法

针对移动平台的硬件特点,矢量数据后台访问的优化方法包括基于Spatialite嵌入式数据库对矢量数据进行存储、管理、访问;通过建立RTree空间索引、矢量要素裁剪对原始数据进行两次筛选,达到快速定位并访问满足屏幕显示范围的数据的目的,以此提高矢量数据显示效率。整个矢量数据调显流程见图1。


2.1矢量数据存储与管理

SQLite是一款开源的、遵守ACID的轻量级关系型数据库,它具有零配置、可移植性、结构紧凑、灵活可靠和自由授权等特点,在嵌入式系统中有着广泛的应用。Spatialite数据库是对嵌入式SQLite在空间数据支持性的扩展,按照OGC制定的空间数据组织规范,以WKT(文本形式)描述空间点、线、面数据类,并以数据库表文件管理空间数据,系统采用嵌入式数据库Spatialite对本地的矢量数据进行存储与管理见图2。通过SQL语句可以快速地存储、管理、访问矢量数据并利用其进行显示、信息查询等功能。


2.2RTree空间索引建立

矢量数据进行前台显示时,由于小型移动平台的屏幕范围有限,不能加载显示过多数据,另外过载的数据会增加系统硬件数据处理负担,造成系统资源的浪费。因此为了优化显示效率,需要对矢量数据构建RTree空间索引。RTree空间索引主要用来解决空间数据检索问题,该索引是一种类似于B树的动态平衡树,基于面区域分割,属于B树在k维上的自然扩展。RTree的每个非叶节点记录了包含所有子节点的最小外接矩形(MBR)及子节点ID号。所有的叶节点位于树的同一层且叶节点存储空间对象的MBR和指向对应对象的ID号。当进行矢量数据显示时,首先获得屏幕范围的最小外接矩形,记为MbrView,每个非叶节点的最小外接矩形,记为Mbr(i),每个空间对象的最小外接矩形,记为Mbr(j)。采用自根节点到非叶子节点递归搜索,判断MbrView与Mbr(i)是否交叠,如果交叠,则以该非叶节点作为根节点继续上述搜索过程,直到向下找到叶节点位置。判断叶节点中空间对象的Mbr(j)与MbrView是否交叠,如果交叠,则将叶节点指向的该空间对象加载至内存,以备显示使用。通过RTree空间索引的建立,实现数据访问时的一次筛选,减少加载至内存的数据量。

2.3矢量要素裁剪

由于RTree索引机制是判断屏幕范围MBR与矢量对象MBR相互交叠情况。当二者相交时,虽然数据通过检索,整体加载至内存,但是屏幕外的对象在显示前仍可通过要素裁剪进行数据访问时的二次筛选,进一步减少调入前台的数据量,以达到优化显示效率的目的。

(1)点状要素裁剪

点状要素裁剪,主要判断点坐标(x,y)与屏幕坐标(Xmin,Ymin)、(Xmax,Ymax)的关系。当Xmin≤x≤Xmax且Ymin≤y≤Ymax时,加载到内存的点才被执行前台渲染显示。

(2)线状要素裁剪

线状要素中复杂曲线是通过若干条折线段来近似实现。因此对于线状要素的裁剪,可以归化为直线段的裁剪问题。本系统通过直线求交算法进行线状要素的裁剪。通过线段端点的坐标与屏幕范围框的坐标进行位置比对,判断线段与屏幕范围框的相交情况,再利用屏幕范围框坐标求得线段与范围框相交的交点坐标,最后通过交点坐标和线段两点坐标得到裁剪后的线段。

(3)面状要素裁剪

面状要素裁剪需要解决利用屏幕边界封闭所切多边形,以及当被裁剪成几个小多边形时,确定小多边形的边界,这里不考虑带内环的多边形。算法的基本思想是每次用屏幕窗口的一条边裁剪多边形,生成新的顶点集,并作为下一条窗口边裁剪的初始化顶点集,循环每条边依次执行,直到窗口最后一条边裁剪形成最终的顶点集,再利用窗口边界封闭顶点,形成最终的裁剪多边形。由于算法从构建裁剪顶点集的角度出发,因此需要判断屏幕窗口边与多边形各边顶点的位置关系,以生成新的顶点集。窗口边及延长线将多边形分成两部分,包含屏幕矩形一侧为内侧,反之为外侧。具体来说多边形各边顶点连接的线段与窗口边的位置关系以及输出结果有以下4种情况


3系统验证

系统采用硬件平台为某国产智能手机,系统内存1GB,处理器频率1843MHz,屏幕尺寸为4.5英寸854像素×480像素,操作系统为Android4.3。实验数据选择大连港海图系列矢量、栅格数据:11381(比例尺1∶45000)、11382(比例尺1∶12500。11383、(比例尺1∶6000),瓦片金字塔层级设定从最底层到最高层依次为比例尺1∶2500,1∶5000,1∶10000,1∶20000,1∶40000,1∶80000。系统通过嵌入式数据库Spatialite叠加了水深层、居民地层、岸线层、交通层、地形层矢量数据功能图层,矢量数据后台访问利用上文所述的优化方法。由于本文所涉及的矢量图层符号简单,可用Android系统下的符号库渲染可视化表示,显示效果见图4、5,可以验证上述优化方法在移动平台端矢量数据调显过程中具有一定的可行性,可以满足移动平台使用。对矢量数据进行访问优化方法与非优化方法显示时间比对实验,实验结果见表1,实验结果表明对矢量数据的后台访问进行优化,可以较大幅度提高其前台的显示效率。


4结束语

随着对海洋的探索开发,海上活动日益频繁、范围逐渐扩大,海上的一切行动都离不开海洋地理信息空间信息的保障。电子海图作为一种保障模式,通过与小型移动平台结合,使得保障方式更加灵活、便捷。但目前该领域研究以及相关成熟产品都相对较少。本文重点对系统功能扩展层中矢量数据的后台访问优化方法进行研究,通过显示时间比对实验及系统实现验证上述方法的可行性,其对弥补移动平台硬件弱点,提高矢量数据调显速率有一定的改进作用。当然在对复杂区域空间索引建立、特殊多边形裁剪等方面仍需要进一步改进和提高。