现在的位置: 首页 > 综合 > 正文

嵌入式GIS引擎加速地图显示的优化方法

2012年04月22日 ⁄ 综合 ⁄ 共 2385字 ⁄ 字号 评论关闭

      由于嵌入式系统与普通PC系统,在运算速度、内存容量、存储空间等方面存在很大的差异,如何在嵌入式设备上GIS引擎取得较好的运行速度,需要从以下几个方面进行优化:

1)数据组织方面

 

1. 地图数据压缩(曲线抽稀)

      线、面数据上通常存在大量的顶点vertex,由于vertex过密,导致绘制时消耗的时间过大,所以对地图数据要预处理,减化路径复杂度来加速绘制速度。需要使用压缩精度比较高的算法,比如道格拉斯—普克(Douglas2Poiker)法,光栏法等。这种算法对矢量数据进行抽稀,既可以保持矢量线条的形状特性,又可以根据实际制图需求确定抽稀容差,从而在保证拟合精度的同时最大限度的压缩数据,大大减少图形缩小时计算和绘制的时间。在采用这些算法进行压缩的过程中,人为给定的压缩域值不能太大。因为只是为了删除共线或近似共线的结点,从而尽可能的保持线、面的几何形态。否则失真过大会导致数据精度丢失。好像geos库有路径简化的实现,或者使用clib,slib处理。

2. 坐标精度压缩

      地理坐标一般使用float型或double型进行表示,占用存储空间较大。将矢量数据的数据存储类型用short型代替double或float型可以减少存储空间已达到压缩的目的。double型在计算机中一般情况下是占8个字节,float型也占4个字节,而short型只占2个字节。这样,就可以将数据压缩4倍或2倍。比如:在车辆导航系统所用的地图数据是1:2.5万的地图数据。图幅分幅内的原点,用图幅左下角的经纬度坐标,而图内坐标用1/24秒为单位的经纬度的相对坐标,这样就把由float型的地理坐标转换为short型的相对坐标,以达到数据压缩的目的。

3. 数据分级

      空间数据的组织是通过对数据进行垂直方向上的分级处理和水平方向上的分块处理而实现的。

      由于嵌入式设备显示屏分辨率不高,显示的内容不会很多,而CPU的速度相对比较慢,通过空间数据分级,可以加快地图的显示和分析的速度,每个级别或每个图层是否显示要根据设置的可视范围来判别,没有达到指定的显示范围,层对象就是隐藏。比较简单的办法是根据各要素内容的多少和重要程度预先定义它的级别,再考虑到地物的几何大小等因素共同将地图要素划分成多个等级,实际显示时确定哪些等级的要素显示,哪些不显示,从而保持屏幕图形的清晰可读,更主要的是,不够等级的要素不显示,从而在缩放时可以大大加快速度。多级显示的优势在于可以最大程度的减少地图显示过程中参与显示的数据量。

4. 数据分块

       还可以对数据进一步进行分块,使每次调入内存中的数据尽可能的少,以加快显示和分析的速度。实际应用中将原图幅分为一定的逻辑块,利用双缓存技术实时调用。将整个图幅分为 N X N块,按照每一个几何对象的坐标确定其所在的块,记入索引文件,索引文件需另外生成。由于某些元素可能跨越一个或几个子图,为了保证各个子图的完整性,这些元素所跨越的所有子图都必须包含该元素的矢量信息,也就是说,一个矢量元素可能会出现在矢量数据文件的若干个数据块中。

2)屏幕显示方面

1. 传统方法

      从数字地图数据库中提取出显示范围内的地图要素,将描述这些地理要素的坐标转换成屏幕坐标,用显示窗口对这些数据进行剪裁,将剪裁后的地理要素直接绘制在屏幕窗口内。优点是算法简单,实现方便。缺点是预处理数据量大,预处理包括对地理要素的读取、坐标的转换以及裁剪,因此预处理活动占用系统时间长,用户等待时间过长。

2.  双缓存技术

      双缓存实现地图漫游的方法是:将显示缓存划分为两个和虚拟屏幕显示范围相同的缓存空间,称之为缓存A,和缓存B。定义预处理边界为范围小于虚拟屏幕范围的一个内边界。当显示屏幕的图像移动到预处理边界时,如果仍然接受到同一方向的连续移动命令,则开始在虚拟屏幕组织移动方向上的新图像,并拷贝该图像到缓存B;同时,在缓存A上,屏幕指针移动的过程仍在进行,当显示屏幕移动到缓存A的实际边界时,缓存B上已经准备好了显示方向上的新地图,此时将屏幕指针跳到缓存B相应位置的地址,就可以保证地图移动动作的连续性。

3.  数据预取
     指将w 向外拓展得到矩形R, R 即为预取区域, 所有落在区域R 内的空间数据对象被装载入一个内存中开辟的缓冲区. 缓冲区中的数据对象很可能在下一次地图操作后参与屏幕显示. 地图数据预取的目标是, 参与屏幕显示的地图数据使用时都已在缓冲区中, 无需再追加新的地图数据.

4. 符号库设计

    符号库的存储、管理机制影响符号调用的效率,符号库的数据结构影响符号绘制的复杂程度。一般来说,地图符号库是将常用的符号经分类整理后以数据库的形式存储到计算机中,其数据结构一般分为点状、线状、面状3 类数据结构。考虑到电子地图主要是以屏幕输出方式为主,在设计符号时,可以设计一些便于计算机使用的符号,也就是说,计算机不需要经过外部的运算,可以直接绘制图形。

3)空间索引方面

      高效的空间索引是提高数据访问效率的关键技术之一。目前普遍采用的技术主要有简单的多级网络索引技术和多级四叉树或R 树索引技术。

      对于海量数据的查询统计,最重要的也是最简单的是首先进行数据分区。对地图数据进行分区,是以一定大小的矩形网格与地图要素进行相交或包含判断,凡是在网格中的地图要素,则记录下它的的文件地址或在数据库中的关键字段,最后形成数据的分区索引文件。分区索引一般很小,在系统运行时,为了提高响应效率,可以部分或一次性地将索引文件读入内存。在图形绘制时,根据屏幕的分辨率及图形的缩放率,可以计算出映射到地图数据中的区域大小,这个区域一般包含或相交一个或几个分区网格,数据检索时只搜索这部分网格中的数据,从而大大提高了查询统计速度。

      暂时想到这么多,后续在实际中再不断继续完善。

 

抱歉!评论已关闭.