首页 > 范文大全 > 正文

内存映射画图在地图浏览中的应用和研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇内存映射画图在地图浏览中的应用和研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:针对地图浏览中的显示速度问题,该文提出了一种新的地图浏览方法,利用内存映射画图的思想设计了一个小型的图形支撑环境,这个支撑环境能够利用内存缓冲区快速的处理数据并实时输出数据,结合API一级的输出函数,能够实现地图的快速显示。这种方法克服了传统地图浏览中的显示速度慢的问题,在不借助图形支撑软件的情况下,达到了很快的显示速度,实现了快速浏览地图的目标。其中,内存映射画图思想的应用是该文的创新点。

关键词:映射;内存;内存映射;地图;地图学

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)24-7060-02

随着现代地图学的发展,电子地图正日益成为一种技术成熟和应用有效的地图产品形式,走入人们的生活,并得到广泛的应用。但目前的地图浏览软件或多或少都存在一定的问题,特别是速度方面的问题,有的在显示速度上还不是很令人满意,有的软件则采用了图形支撑软件来帮助其实现图像的快速显示,速度是达到了用户的要求,但整个软件显得庞大和臃肿。因此,对快速浏览地图的方法研究其意义是显而易见的,本论文的目标也正在于此。

1 概述

论文中详细给出了电子地图中显示速度问题的解决方案,包括小型图形支撑环境的具体设计,内存映射画图思想的基本原理和具体应用,内存中图像数据的存取方案,以及移动、放大缩小等操作的实现。实践证明,这种新的地图浏览方法在速度上达到了不亚于opengl的效果,是一种完全可行的新的地图快速浏览方法。

2 小型图形支撑环境的基本思想

这个小型图形支撑环境负责处理所有的数据和操作,在这个图形支撑环境中,内存映射画图思想是关键。内存映射画图是将各种图元的绘制工作都在内存缓冲区中实现,然后进行输出,其中,内存缓冲区是其中最重要的部分,负责处理整个支撑环境所用到的数据,所有的数据都是围绕它进行的。当系统运行时,首先开辟一个内存缓冲区,在内存缓冲区中进行各种数据的处理,当图元写入时,根据图元的形状,运用扫描转换算法,将图元写入到内存缓冲区中的某一区域,例如一条直线,就可以利用DDA算法或者是中点Bresenham算法将直线写入内存缓冲区中。传统的地图浏览系统的输出方案为:将内存中的图像数据逐行扫描,一个点一个点的输出,在这过程中需要不断的调用输出函数进行输出,是一个系统资源消耗极大的过程,这是其速度较慢的主要原因。因此,本文根据内存缓冲区的应用设计了一种输出方法,当需要对图像进行输出时,首先将该图像在内存缓冲区中进行绘制,当绘制操作完成后,再调用API一级的输出函数,将内存缓冲区中的数据一次性全部输出,使得系统达到一个很高的输出速度,这是采用内存缓冲区来进行数据处理的原因。该输出方法是本文的核心,是能否实现图像快速显示的关键。内存缓冲区中的数据存取如图图1所示。

在具体设计中,为了实现小型图形支撑环境,将这个图形支撑环境所提供的功能封装在一个类中,系统通过这个类来管理各种图像数据,并通过成员函数之间的消息传递来处理各种操作,如几何变换、图元绘制等,这些都在该类申请的内存缓冲区中进行。当用户进行操作时,系统通过其动作对内存缓冲区中的数据进行更新,然后确定输出区域,调用输出函数进行输出。

以上是这个小型图形支撑环境的基本思想,有了这个框架后,就可以进行地图浏览的具体设计了。

3 地图浏览的具体设计

系统运行时,首先读取一个图像文件进内存,然后开辟一个内存缓冲区,将内存中的图像数据写入内存缓冲区,然后选取内存缓冲区中图像左上角大小和屏幕窗口相等的区域进行输出,供用户进行浏览和操作。当用户对窗口中的图像进行操作时,通过消息捕捉函数对其动作进行捕捉,然后系统立刻对内存缓冲区中的图像数据进行更新,并根据用户的操作确定输出区域,然后调用API一级的函数对该区域进行映射输出,该方法能够快速的根据用户的操作在窗口中更新图像,达到不亚于OpenGL等图像支撑软件的速度效果。地图浏览设计原理图如图2所示。

在移动操作中,当用户对图像进行拖动操作时,系统根据消息捕捉函数计算图像的位移量,然后根据图像位移量确定内存缓冲区中的某一输出区域进行映射输出。在此过程中,鼠标一发生动作,系统就能在屏幕窗口中更新图像,达到了移动过程中图像的实时显示的要求。移动操作原理如图3所示。

在放大缩小操作中,系统也是根据消息捕捉函数对用户的操作进行捕捉,并判断是放大操作还是缩小操作,然后调用函数对内存缓冲区中的图像数据进行几何变换,并确定一个新的输出区域,最后调用API一级的输出函数进行输出。放大缩小操作原理如图4所示。

4 总结

该文提出了一种新的地图浏览方法,设计了一个小型图形支撑环境,利用内存映射画图思想,在不借助类似Opengl等图形支撑软件的情况下,达到了不亚于Opengl的速度效果。

总体来说,本文所阐述的新方法在解决地图浏览中的显示速度问题上的效果是很明显的。特别是对一些图像处理要求简单的系统来说,这些系统不需要很负责的图像操作,只需要进行简单的图像的快速显示,移动等操作,那么应用本文所提到的小型图形支撑环境就可以很好的解决其问题。也希望该方法能够对国内外的电子地图学的发展起到一定的帮助作用。