嵌入式GIS地图快速显示方法的应用
摘 要: 为提高嵌入式GIS 环境下矢量地图的显示速度, 设计了一种适用于嵌入式环境基于LOD 的地图数据组织模型。 针对嵌入式设备硬件条件限制, 从减少非显示区域的冗余地图数据的读取和提高外存检索矢量数据的效率两方面入手, 对矢量地图数据进行了分层、分块和建立索引等处理。 通过实验表明, 该方法能很好地提高矢量地图的显示速度, 可以满足嵌入式环境下地图快速显示的要求。
1 引言
地理信息系统(Geographic InformaTION System, 简称GIS)产品被广泛应用于交通、测绘、环境、国防、航空航天等与国民经济乃至国家命脉相关的重要领域,带来了显著的经济和社会效益。近年来随着嵌入式技术的迅猛发展, GIS 技术也逐步应用于以手机、掌上电脑为代表的移动终端, 使得嵌入式GIS 成为当今GIS 研究领域的一个重要趋势。 当前地图数据量巨大,要求地图刷新频率高、实时性强, 普通桌面系统的地图显示方法很难适用于存储器容量小、处理器性能低的嵌入式系统, 提高地图的显示效率成为嵌入式GIS产品研发的首要问题。 矢量地图拥有数据结构紧凑,冗余度低; 图形显示质量好, 精度高, 不失真等优点,目前已被广泛应用与嵌入式移动终端。 本文针对矢量电子地图研究了地图显示数学模型, 设计了基于LOD的逐层分块的地图数据组织结构, 并以此为基础建立网格索引, 通过实验证明该方法可有效提高地图显示速度。
2 矢量地图显示数学模型
地图的数据组织结构是影响地图显示速度的核心因素。 因此, 要对矢量地图显示数学模型分析研究,合理组织地图数据, 才能有效提高地图显示速度。
由于电子地图的数据量较大, 嵌入式设备的地图数据一般会存放在外存储器中, 系统显示地图时需要先将地图数据读入内存, 再由地图绘制程序解析内存中的数据, 将地图显示在屏幕上。 假设某矢量地图数据占用物理存储空间为D, 数据读入内存速度为V1,显示速度为V2, 数据读取准备时间为f (n) , 用户可等待时间为T, 嵌入式设备内存容量为R, 则有以下公式成立:
嵌入式设备内存容量一定, 若V1, V2, T 为常数,则必须减少D 和f (n)才能满足数据显示和处理的要求,提高地图的显示速度。
通过对地图显示数学模型的分析可以发现, 要使地图的显示速度达到最快, 需要解决两个问题: 一是尽量减少地图非屏幕显示区域的数据量, 即根据显示范围限制读入的数据量; 二是要能以最快的速度从庞大的地图数据中找到当前显示范围所涉及的相关数据。
针对问题一, 本文采用逐层分块策略组织地图数据, 减少非屏幕区域的数据读入; 对于问题二, 则对图块建立索引, 以降低外存调度当前显示数据的时间。
3 矢量地图快速显示策略
3.1 数据组织模型设计
作者引入多细节层次LOD(Levels of Detail)技术思想,该技术最初是一种运用于控制三维场景复杂程度的技术, 其基本思想是: 在建立地表模型时, 应充分考虑人的视觉特点, 对处于视觉不同区域的模型采用不同的分辨率表示, 这样整个地表模型就表现为以块为单位的具有多分辨率的细节层次模型, 当从近处观察物体时, 采用精细模型, 当从远处观察物体时采用较为粗糙的模型[5]. 这一思想不仅限用于三维场景, 对于矢量地图的快速显示同样适用。
系统对每个地图分别制作多个比例尺的地图数据,同时参考地图地理要素的规范, 根据要素的重要程度将不同比例尺地图中的图层划分为不同的显示层次,这样电子地图在缩放显示过程中, 可根据当前显示比例尺, 确定需要显示的地理要素。 同时考虑到嵌入式设备显示屏幕较小, 显示覆盖范围相对有限, 需根据显示屏幕尺寸对矢量地图数据进行分块处理, 以减少地图显示时读入内存的冗余数据。 通过上述对矢量地图的分层分块组织, 便形成了基于LOD 的逐层分块地图数据组织模型, 如图1所示。
地图显示时, 在不同显示层次上需要读入相应的数据集合, 并实现根据设备显示范围读入相应图块数据, 从而大大减少地图数据读取和显示数据量, 提高了地图显示的效率。
图1 基于LOD 的逐层分块地图数据组织模型
3.2 矢量地图数据分层处理
在地图的显示过程中, 地图缩小时屏幕覆盖地图的范围增大, 只需显示主要地理要素对象, 相对次要的地理要素可隐藏而不显示; 地图放大显示时屏幕覆盖范围减小, 在当前已显示的地理要素基础上, 相对次要的地理要素也需显示出来。 基于这一特性, 可将地图数据所描述的地理要素依据其重要性特征分为多个数据层次, 即对所需显示的地图按照图层的重要程度设置一个显示参数, 该参数代表地图放大
- 基于FPGA的DSP设计方法(08-26)
- 专家指导:Linux操作系统密码恢复方法(05-16)
- 基于多核DSP Bootload代码加载方法研究(01-16)
- 基于DSP 的大容量无线传输技术中高性能的启动方法(03-16)
- 多核调试新方法探讨(10-22)
- 有备无患Linux操作系统备份方法介绍(06-06)
- 妤傛ḿ楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閸忋劍鏌熸担宥咁劅娑旂姴鐨犳0鎴滅瑩娑撴氨鐓$拠鍡礉閹绘劕宕岄惍鏂垮絺瀹搞儰缍旈懗钘夊閿涘苯濮幃銊ユ彥闁喐鍨氶梹澶歌礋娴兼ḿ顫呴惃鍕殸妫版垵浼愮粙瀣瑎...
- 娑擃厾楠囩亸鍕暥瀹搞儳鈻肩敮鍫濆悋閹存劕鐓跨拋顓熸殌缁嬪顨滅憗锟�
缁箖鈧拷30婢舵岸妫亸鍕暥閸╃顔勭拠鍓р柤閿涘奔绗撶€硅埖宸跨拠鎾呯礉閸斺晛顒熼崨妯烘彥闁喕鎻崚棰佺娑擃亜鎮庨弽鐓庣殸妫版垵浼愮粙瀣瑎閻ㄥ嫯顩﹀Ч锟�...
- Agilent ADS 閺佹瑥顒熼崺纭咁唲鐠囧墽鈻兼總妤勵棅
娑撴挸顔嶉幒鍫n嚦閿涘苯鍙忛棃銏n唹鐟欘枃DS閸氬嫮顫掗崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱遍崝鈺傚亶閻€劍娓堕惌顓犳畱閺冨爼妫跨€涳缚绱癆DS...
- HFSS鐎涳缚绡勯崺纭咁唲鐠囧墽鈻兼總妤勵棅
鐠у嫭绻佹稉鎾愁啀閹哄牐顕抽敍灞藉弿闂堛垼顔夐幒鍦欶SS閻ㄥ嫬濮涢懗钘夋嫲鎼存梻鏁ら敍灞藉簻閸斺晜鍋嶉崗銊╂桨缁崵绮洪崷鏉款劅娑旂姵甯夐幓顡嶧SS...
- CST瀵邦喗灏濆銉ょ稊鐎广倕鐓跨拋顓熸殌缁嬪顨滅憗锟�
閺夊孩妲戝ú瀣╁瘜鐠佽绱濋崗銊╂桨鐠佸弶宸緾ST閸氬嫰銆嶉崝鐔诲厴閸滃苯浼愮粙瀣安閻㈩煉绱濋崝鈺傚亶韫囶偊鈧喕鍤滅€涳附甯夐幓顡塖T鐠佹崘顓告惔鏃傛暏...
- 鐏忓嫰顣堕崺铏诡攨閸╃顔勭拠鍓р柤
娑撳洣绗€妤傛ɑ銈奸獮鍐叉勾鐠у嚖绱濇潻娆庣昂鐠囧墽鈻兼稉杞扮稑閸︺劌鐨犳0鎴炲Η閺堫垶顣崺鐔枫亣鐏炴洘瀚甸懘姘剧礉閹垫挷绗呴崸姘杽閻ㄥ嫪绗撴稉姘唨绾偓...
- 瀵邦喗灏濈亸鍕暥濞村鍣洪幙宥勭稊閸╃顔勭拠鍓р柤閸氬牓娉�
鐠愵厺鎷遍崥鍫ユ肠閺囨潙鐤勯幆鐙呯礉缂冩垵鍨庨妴渚€顣剁拫鍙樺崕閵嗕胶銇氬▔銏犳珤閵嗕椒淇婇崣閿嬬爱閿涘本鍨滅憰浣圭壉閺嶉绨块柅锟�...