999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于內存映射文件技術快速繪制大場景流域模型

2009-01-01 00:00:00李小根王宗敏黃志全
計算機應用研究 2009年2期

(1.鄭州大學 水利與環境學院,鄭州 450001;2.華北水利水電學院 巖土工程系, 鄭州 450011)

摘 要:應用內存映射文件技術將分割后的大場景流域模型(包括DEM地形、地形影像、地物模型、地物模型影像、元數據)在內存儲器中建立了多進程共享的內存地址空間。在此基礎上首先探討了應用內存映射文件技術所用到的函數及其功能;接著分析了調用、存儲大場景流域模型(大小約4 GB)所應用到的函數及其使用方法原理,并結合相關程序代碼對具體的實現過程進行了詳細的剖析;最后得出結論,應用內存映射文件技術不僅可以讀取大場景流域模型數據文件(大小約4 GB),而且可以充分利用計算機的有效資源加快大場景模型的繪制效率,實現實時交互繪制。

關鍵詞:模型;映射文件;進程;實時繪制

中圖分類號:TP391 文獻標志碼:A

文章編號:10013695(2009)02052702

Based on memory mapping file technique tovisualize large scene watershed model quickly

LI Xiaogen1,2,WANG Zongmin1,HUANG Zhiquan2

(1.School of Environment Water Conservancy, Zhengzhou University,Zhengzhou 450001, China;2.Dept. ofGeotechnical Engineering,North China Institute of Water Conservancy Hydroelectric Power, Zhengzhou 450011, China)

Abstract:Processessharing memory address space was created on the base of divided largescene watershed model (including DEM terrain,terrain image,surface features model, object model image,metadata) by using memory mapping file technolog(MMFT)in the memory.Firstly, this paper discussed the function and its functions that the MMFT would apply.Secondly,analyzed the function and its principles which transferring and storing largescene watershed model(size is about 4 GB),and analyzed achievement courses detailedly concerned with relative procedure codes. Finally, the conclusion is that using MMFT can not only read largescene watershed model data documents(size is about 4 GB),but also make full use of the computer valid resources to quicken the drawing efficiency of largescene model to accomplish the justintime interactive drawing.

Key words:model; mapping file; processing; justintime drawing



0 引言

在對文件進行讀寫操作時,Win32 API和MFC都提供了支持文件操作的函數和類,常用的有Win32 API的CreateFile()、WriteFile()、ReadFile()和MFC提供的CFile類等[1]。一般來說,以上這些函數可以滿足大多數場合的要求,即這些函數文件讀取的數據量不得大于(231-1)Byte,因為在Win 32系統中,232大小約為4 GB,用戶占用約2 GB,中央處理器占用約2 GB。但是對于某些特殊應用領域,如幾百平方公里的大場景流域模型(包括DEM地形數據、遙感影像數據、地物模型數據、地物模型影像數據、元數據)達到幾十、幾百GB,乃至幾TB的海量存儲,如果以上述類和函數的文件處理方法進行文件的處理顯然是不行的,因為目前的計算機硬件配置的性能遠遠低于這種要求。對于這種特殊的操作如果應用內存映射文件技術來進行處理則迎刃而解。

由于內存映射文件技術的主要函數都提供了兩個DWORD型參數來分別表示偏移量的低32 bit和高32 bit,這兩個參數加起來共64 bit,如果應用這種方法來讀取數據文件,數據量可以達到(264-1)Byte,幾乎可以對任何海量數據進行處理[2]。另外,應用內存映射文件技術可以大大提高中央處理器讀取數據文件的速度。內存映射文件與邏輯內存相似,通過內存映射文件可以保留一個地址空間的區域,同時將物理存儲器提交給此區域,只是內存文件映射的物理存儲器來自一個已經存在于磁盤上的文件,而非系統的頁文件,而且在對該文件進行操作之前必須首先對文件進行映射,就如同將整個文件從磁盤加載到內存。

由上述可見,使用內存映射文件處理存儲于磁盤上的文件時,將不必再對文件執行I/O操作。這意味著在對文件進行處理時將不必再為文件申請并分配緩存,所有的文件緩存操作均由系統直接管理。由于取消了將文件數據加載到內存、數據從內存到文件的回寫以及釋放內存塊等步驟,可以大大提高計算機的運行速度[3]。

1 內存映射文件相關函數

HANDLE CreateFile(LPCTSTR IpFileName

/*創建或打開一個文件內核對象,這個對象標志了磁盤上將要用做內存映射文件的文件,并將其句柄返回*/

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES IpSecurityAttributes,

DWORD dwCreationDisposition,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile);

HANDLE CreateFileMapping(HANDLE hFile,

/*創建一個文件映射內核對象,通過參數hFile指定待映射到進程地址空間的文件句柄(該句柄由CreateFile()函數的返回值獲?。?/

LPSECURITY_ATTRIBUTES IpFileMappingAttributes,

DWORD flProtect,DWORD dwMaximumSizeHigh,

/*文件大小的高32 bit

DWORD dwMaximumSizeLow,

/*文件大小的低32 bit和dwMaximumSizeHigh組成64 bit值,表示文件的長度*/

LPCTSTR lpName;

/*文件映射對象的名字

LPVOID MapViewOfFile(HANDLE hFileMappingObject,

/*負責通過系統的管理將文件映射對象的全部或部分映射到進程地址空間,參數hFileMappingObject為CreateFileMapping()返回的文件映像對象句柄*/

DWORD dwDesiredAccess,

/*指定了對文件數據的訪問方式,而且同樣要與CreateFileMapping()函數所設置的保護屬性相匹配*/

DWORD dwFileOffsetHigh,

/*映射開始位置的高32 bit

DWORD dwFileOffsetLow,

/*映射開始位置的低32 bit,和dwFileOffsetHigh組成64 bit,表示文件的偏移地址*/

DWORD dwNumberOfBytesToMap)

/*映射進程的地址空間中分配的字節數[4]

2 內存映射文件技術處理大場景流域模型算法實現

通過具體實例(大場景流域模型大小約4 GB)來詳細分析內存映射文件技術的使用方法。在下列例子中從端口接收數據,并實時將其存放于磁盤。

下面給出此線程處理函數的具體實現過程:

……

// 創建文件內核對象,其句柄保存于hFile

HANDLE hFile = CreateFile(\"shayinghe.zip\",

GENERIC_WRITE | GENERIC_READ,FILE_SHARE_READ, 

NULL,

CREATE_ALWAYS,

FILE_FLAG_SEQUENTIAL_SCAN,

NULL);

// 創建文件映射內核對象,句柄保存于hFileMapping

HANDLE hFileMapping = CreateFileMapping(hFile,NULL,PAGE_READWRITE,0, 0x4000000, NULL);

// 釋放文件內核對象

CloseHandle(hFile);

// 設定大小、偏移量等參數

__int64 qwFileSize = 0x4000000;

__int64 qwFileOffset = 0;

__int64 T = 600 * sinf.dwAllocationGranularity;

DWORD dwBytesInBlock = 1000 * sinf.dwAllocationGranularity;

// 將文件數據映射到進程的地址空間

PBYTE pbFile = (PBYTE)MapViewOfFile(hFileMapping,

FILE_MAP_ALL_ACCESS,

(DWORD)(qwFileOffset>>32),

(DWORD)(qwFileOffset0xFFFFFFFF),

dwBytesInBlock);

while(bLoop) 

{

……

另外,為了加快讀取數據的效率,可以應用緩存技術將調用頻率最高的場景區域數據(主要局部場景及對應的影像、主要地物模型及對應的影像)直接調入到緩存中,充分利用計算機中央處理器的資源,加快大場景流域模型的繪制[5]。

具體算法實現:應用Getdata()函數判斷調用頻率最高的數據文件是否在緩存中,如果沒有則先把該數據調入到緩存中,然后再讀取數據進行繪制[6]。

3 結束語

經過實際運行和測試,在計算機硬件配置CPU為P43.0 GHz,內存為256 MB的PC機上運行打開大小約4 GB(共12幅圖)的大場景流域模型所需要的時間約為25 s。而其他的專業地形和影像處理軟件(ERDAS IMAGE 8.5和ArcGIS 9.0)只能打開模型文件前2 GB的數據文件,2 GB后的數據文件打不開。

圖1為打開模型文件大小約4 GB文件和大小約2 GB文件的界面。其中在ArcGIS 9.0中打開12幅圖中的第7幅圖時會出現死機現象,最多打開6幅圖。

內存映射文件在處理大規模模型文件時表現出了快速讀取文件的優越性能,比使用CFile類、ReadFile()和WriteFile()等函數的文件處理具有明顯的優勢和效率。 參考文獻:

[1]

HAND D,MANNILA H,SMYTH P.數據挖掘原理[M].張銀奎,廖麗,宋俊,譯.北京:機械工業出版社,2003.

[2]LEVOY M,PULLI K,CURLESS B,et al.The digital Michelangelo project:3D scanning of large statues[C]//Proc of the 27th Annual Conference on Computer Graphics and Interactive Techniques.New York:ACM Press,2000:131144.

[3]HAY B,WETS G,VANHOOF K.Clustering navigation patterns on a website using a sequence alignment method[C]//Proc of the 17th International Joint Conference on Artificial Telligent.2001.

[4]呂鳳軍.數字圖像處理編程基礎[M].北京:機械工業出版社,1998.

[5]CHOI K R,KIM K C.T*tree:a main memory database index structure for realtime application[C]//Proc of the 3rd Int’l Workshop on Realtime Computing Systems and Application.1996.

[6]黃敏,何國輝.Visual C++程序開發指南[M].北京:科學出版社,1995.

主站蜘蛛池模板: 香蕉在线视频网站| 人人91人人澡人人妻人人爽| 污网站免费在线观看| 国产视频久久久久| 性喷潮久久久久久久久| 99成人在线观看| 凹凸精品免费精品视频| 国产成人久久777777| 久久免费精品琪琪| 精品一区二区三区自慰喷水| 中文字幕人成人乱码亚洲电影| 国产成人久久综合777777麻豆| 国产91精品调教在线播放| 国产成人精品无码一区二 | 中国美女**毛片录像在线| 99精品欧美一区| 国产成人精品一区二区不卡| av尤物免费在线观看| 精品国产网站| 成人夜夜嗨| 欧美区一区| 日韩毛片免费视频| 国产制服丝袜91在线| 久久香蕉国产线看精品| 国产制服丝袜91在线| 国产成人亚洲毛片| 亚洲色无码专线精品观看| 欧美日韩国产综合视频在线观看| 久久福利网| 91精品综合| 国产高清不卡| 热久久国产| 欧美日韩一区二区在线免费观看| 国产成人1024精品下载| 中国毛片网| 国产系列在线| 91在线精品麻豆欧美在线| 在线看片中文字幕| 国产色伊人| 全午夜免费一级毛片| 人妻精品久久久无码区色视| 久久精品电影| 国产精品部在线观看| 久久精品国产精品一区二区| 亚洲无码高清视频在线观看| 日本国产精品一区久久久| 久久久精品无码一区二区三区| 国产在线精彩视频论坛| 欧美日韩综合网| 国产女人18毛片水真多1| 美女黄网十八禁免费看| 国产手机在线观看| 国产无码高清视频不卡| 99青青青精品视频在线| 97se亚洲综合| 国产在线八区| 国产在线一区二区视频| 九九久久精品国产av片囯产区| 自偷自拍三级全三级视频| 亚洲日韩Av中文字幕无码| 国产91在线免费视频| 成年免费在线观看| 伊人中文网| P尤物久久99国产综合精品| 91亚洲精品国产自在现线| 在线免费观看a视频| 午夜福利亚洲精品| 免费啪啪网址| 亚洲综合久久一本伊一区| 成人在线综合| 找国产毛片看| 91精品国产自产在线老师啪l| 不卡网亚洲无码| 亚洲人网站| 久久亚洲AⅤ无码精品午夜麻豆| 亚洲无码精品在线播放| 国产精品第| 小13箩利洗澡无码视频免费网站| 伊人久久精品无码麻豆精品| 亚洲天堂成人| 亚洲V日韩V无码一区二区| 看你懂的巨臀中文字幕一区二区|