[发明专利]一种基于"云计算"的出版物平台的海量数据读取方法无效
申请号: | 201210041289.2 | 申请日: | 2012-02-23 |
公开(公告)号: | CN103294452A | 公开(公告)日: | 2013-09-11 |
发明(设计)人: | 杨际荣 | 申请(专利权)人: | 镇江华扬信息科技有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 212009 江苏省镇江市镇江新*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 计算 出版物 平台 海量 数据 读取 方法 | ||
本发明涉及一种基于云计算的出版物平台的海量数据读取方法,特别涉及的是基于云计算技术的图片读取技术。
背景技术
随着信息技术和传感器技术的飞速发展 ,现代遥感数据源不断丰富 ,使得遥感影像图的数据量从以前的几兆、几十兆增长到现在的几百兆 ,甚至是几 GB、几十 GB。在这种情况下 ,如果对图像文件的处理仍采用传统的方法 ,显然是不行的。一方面,计算机硬件环境的发展已经远远不能满足图像处理的需要;另一方面 ,传统的利用文件指针方式来读取图像文件的方法,只能正确读取文件前面 231 -1(约 2GB)字节 ,所以不能满足大于 2GB以上的影像文件的读取。本文是在笔者开发的中国海岸带及近海卫星遥感综合应用系统 (Max_Deskpro)过程中,结合对海量遥感影像进行处理的要求 ,根据实际提出的一种快速读取海量图像的方法。实现该方法的主要技术包括内存映射文件技术、动态构建影像金字塔、缓存技术、图像分块技术。
发明内容
一种基于云计算的出版物平台的海量数据读取方法;本方法是利用内存映射文件,利用计算机的内存进行大量映射文件。内存映射文件在对文件进行读写操作的时候 , Win32 API和 MFC都提供了支持这些操作的函数和类 ,如 Win32 API的 WriteFile( ) , ReadFile( )和 MFC提供的 CFile类。这些函数在文件的数据量小于 ( 231 -1)字节的时候 ,在大多数场合是可以满足用户的需求。但是当文件的数据量大于 ( 231 -1)字节 (约 2GB)时候 ,就不能正确地使用 Seek( )函数定位到要读取数据的位置 ,这是因为 Seek( LONG Loff, UINT nFrom)函数提供的 Loff参数是 LONG型的 ,它最多支持 ( 231 -1)字节的偏移量。假如图像文件的数据量大于 2GB的话 ,就不能定位到 2GB以后的部分来读取数据。由于内存映射文件技术的主要函数都提供了两个 DWORD型参数来分别表示文件大小或偏移量的低 32Bits和高 32Bits,这两个参数加起来共 64Bits,因此它所支持的最大文件长度为 16EB( 264 -1字节 ),几乎可以满足对任何海量数据文件的处理。
下面对两个关键函数进行具体说明 :
HANDLE CreateFileMapping( HANDLE hFile,
LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
LPCTSTR lpName);
该函数创建一个文件内存映射对象 ,以告知系统文件映射对象需要多大的物理存储器。由于内存映射文件的物理存储器实际上是本地硬盘上的一个文件,而不是从系统的页文件中分配的内存 ,所以 CreateFileMapping( )函数不分配进程的地址空间 ,不占用内存空间 ,因此在实际应用中通常是一次性把整个文件创建为内存映射对象。如果要把文件中的数据映射到进程的地址空间中 ,则需要调用 MapViewofFile( )函数。该函数的具体定义如下 :
LPVOID MapViewofFile(
HANDLE hFileMappingObject,
DWORD dwDesiredAccess,
DWORD dwFileoffsetHigh,
DWORD dwFileoffsetLow,
DWORD dwNumberofBytesToMap );
调用该函数后 ,访问文件中的数据 ,就如同它位于内存中一样 ,这样就省去了对文件执行I/O操作的时间 ,所以它比用 CFile类和 Win32API的 WriteFile( ) , ReadFile( )速度上要快得多。在使用该函数的时候 ,由于它的返回值 LPVOID是一个 32Bits的指针类型 ,所以在处理海量数据文件的时候 ,还要进行分块映射 ,并且一次映射到进程地址空间的数据量要小于 231 -1字节数。文件内存映射的开始位置 (即文件的偏移地址)还必须满足是操作系统分配粒度的整数倍 (通常操作系统的分配粒度是 64K)。
使用内存映射文件的一般步骤:
(1)首先利用函数CreateFile( )打开一个文件内核对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于镇江华扬信息科技有限公司,未经镇江华扬信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210041289.2/2.html,转载请声明来源钻瓜专利网。