嵌入式Linux下基于MiniGUI的GIS实现
示。为此,系统将数据分为若干个数据卷,每个数据卷又包含多个数据集,-个数据集就是某个比例尺的地图数据。一个数据集又分成若干个图幅,一个图幅又按矩形分块方式划分成若干个逻辑数据块。在实际应用中,按照每一点的坐标确定其所在的块。读取数据时,只读该点所在的数据块,从而缩小了读取的数据量,加快了显示和分析的速度。
此外,系统采用了一些数据压缩方法。对数据的压缩方法通常可分为对坐标点有损压缩和坐标点无损压缩。由于嵌入式设备的存储器容量有限,而GIS系统数据量很大,为提高系统性能,通常这两种压缩方法都采用。次序是先进行有损压缩删除不必要的点,然后再进行无损压缩,将空间数据变为相对坐标,以减少单个坐标点的存储空间。具体采用的方法如下。
1)删除在一条笔直的道路上的中间结点,只保留首尾两点。
2)将双精度型或浮点型的坐标映射为整型坐标,数据量可以减少一半。
3)每一条弧段(包括区域边界和线状地物)只记录其起点坐标(x,y),其后续点坐标用相邻两点间的x、y的偏移量代替,即弧段除起始点以外的其它后续点只需用短整型记录,这样就可以将数据量压缩到原来的1/4左右。
4.2 显示速度
为提高地图显示和刷新速度,采用了以下处理技术。
1)引入一个内存DC,首先利用内存DC绘制地图。当需要显示地图时,利用BitBlt函数将内存DC中的地图复制到显示DC上。
2)系统引入变量m_pCSections和IDS。变量m_pCSections是一个链表,该链表中每个元素代表上次显示时读取的图块头信息。IDS也是一个链表,其中每个元素为m_pCSections中与当前视窗有交集的图块的ID号。具体处理步骤如下:
(1) 对m_pCSections中每一个元素,判断它与当前视窗是否有交集,若没有交集,则从m_pCSections中删除该元素。
(2) 对m_pCSections中的每个元素,将它的ID号添加到链表IDS中。
(3) 对数据集中的每个图块,循环执行以下操作:
判断该图块的ID号是否在IDS中,若在,则从IDS中将该ID号删除,继续处理下一图块。
若不在,则从数据文件中读取该图块的图块头信息,根据它的图块头信息判断该图块与当前视窗是否有交集。若交集不为空,则从数据文件中读取该图块的具体图层信息;若交集为空,则释放为该图块头信息分配的存储空间。
3)数据文件中存放每一条线段和面的最小外扩矩形的左上角和右下角信息,这样,就不需在程序中求它的最小外扩矩形,提高了显示速度。
4.3 界面设计
由于嵌入式设备的显示屏幕通常很小,分辨率也不高,而显示一幅较满意的地图又需要一定的屏幕空间,这就需要尽量减少其它元素占用的空间以将尽可能多的区域留给地图显示。为此,在嵌入式系统中通常将界面元素设计为按需显示。为此,系统中将菜单设计为弹出式菜单,仅当用户需要时才弹出以使用户执行所需的功能。
5 结束语
系统利用MiniGUI在Linux上实现了一个嵌入式GIS,该系统能完成电子地图的显示、放大、缩小、漫游等基本功能。但如何实现GPS导航、信息查询、GSM/GPRS通信等功能还需进一步研究。
本文创新点:本文提供了一种面向手持设备的GIS的实现方案—采用MiniGUI在嵌入式Linux上实现GIS,并提供了一种提高地图显示和漫游速度的处理方法。
参考文献
[1] 汪亚雷, 余春暄. 基于嵌入式Linux的MapInfo格式地图显示[J]. 微计算机信息, 2006,10-2:184-186.
[2] 周立功. ARM嵌入式MiniGUI初步与应用开发范例[M]. 北京:北京航空航天大学出版社,2006, 7-144.
[3] 北京飞漫软件技术有限公司. MiniGUI编程指南, 2004.
[4] 北京飞漫软件技术有限公司. MiniGUI用户手册, 2004.
嵌入式Linux MiniGUI S3C2410 GIS 相关文章:
- 嵌入式Linux技术在工业控制网络中的应用(10-30)
- 基于嵌入式Linux的组态软件实时数据库的设计(02-01)
- 基于ARM+DSP的嵌入式Linux数控系统设计(11-18)
- 基于嵌入式Linux的细胞特征提取算法设计(11-19)
- 基于S3C2410的嵌入式Linux系统构建(03-02)
- 嵌入式Linux网络编程之:网络基础编程(08-13)