亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        HDF4文件訪問(wèn)中間件的設(shè)計(jì)與實(shí)現(xiàn)

        2015-02-20 08:16:00沈夏炯韓道軍
        計(jì)算機(jī)工程 2015年3期
        關(guān)鍵詞:數(shù)據(jù)類(lèi)型中間件函數(shù)

        沈夏炯,馬 瑞,韓道軍,周 兵,2

        (1.河南大學(xué)a.計(jì)算機(jī)與信息工程學(xué)院;b.數(shù)據(jù)與知識(shí)工程研究所,河南開(kāi)封475004;

        2.圖像處理與模式識(shí)別研究所,河南開(kāi)封475004)

        HDF4文件訪問(wèn)中間件的設(shè)計(jì)與實(shí)現(xiàn)

        沈夏炯1a,1b,馬 瑞1a,韓道軍1a,1b,周 兵1a,2

        (1.河南大學(xué)a.計(jì)算機(jī)與信息工程學(xué)院;b.數(shù)據(jù)與知識(shí)工程研究所,河南開(kāi)封475004;

        2.圖像處理與模式識(shí)別研究所,河南開(kāi)封475004)

        HDF4文件常用于中分辨率成像光譜儀(MODIS)產(chǎn)品數(shù)據(jù)的存儲(chǔ),可存儲(chǔ)多種類(lèi)型的數(shù)據(jù),但是文件數(shù)據(jù)結(jié)構(gòu)復(fù)雜。目前,HDF GROUP開(kāi)發(fā)的操作HDF4文件的函數(shù)庫(kù)只可用于Fortran語(yǔ)言和C語(yǔ)言,其他編程語(yǔ)言缺少比較系統(tǒng)讀寫(xiě)HDF4文件的方法。ArcGIS雖支持大部分柵格數(shù)據(jù)格式,但不支持多數(shù)據(jù)集層次式存儲(chǔ)的HDF數(shù)據(jù)格式。為此,設(shè)計(jì)基于C#語(yǔ)言操作的HDF4文件中間件,解決ArcGIS無(wú)法創(chuàng)建多數(shù)據(jù)集HDF4文件等問(wèn)題,并給出中間件的核心思想和具體應(yīng)用實(shí)例。將該中間件應(yīng)用于環(huán)保部生態(tài)環(huán)境遙感產(chǎn)品生產(chǎn)分系統(tǒng)項(xiàng)目中,結(jié)果表明,在處理MODIS產(chǎn)品數(shù)據(jù)時(shí),解決了C#語(yǔ)言無(wú)法創(chuàng)建多數(shù)據(jù)集HDF4文件等問(wèn)題,驗(yàn)證了該中間件的實(shí)用性。

        分層數(shù)據(jù)格式;科學(xué)數(shù)據(jù)集;中間件;中分辨率成像光譜儀;柵格數(shù)據(jù);C#語(yǔ)言

        1 概述

        分層數(shù)據(jù)格式(Hierarchical Data Format,HDF)是目前遙感衛(wèi)星數(shù)據(jù)普遍采用的數(shù)據(jù)存儲(chǔ)格式,因此利用軟件編程提取包括在HDF文件里的數(shù)據(jù)是應(yīng)用遙感數(shù)據(jù)的前提[1],具有重要的現(xiàn)實(shí)意義。HDF4是HDF文件的一種常用格式,也是中分辨率成像光譜儀(Moderate-resolution Imaging Spectroradiometer,MODIS)產(chǎn)品數(shù)據(jù)的常用存儲(chǔ)格式。MODIS是搭載在地球觀測(cè)系統(tǒng)(Earth Observing

        System,EOS)AM和PM衛(wèi)星上的關(guān)鍵設(shè)備,每?jī)商炀涂梢蕴峁目梢?jiàn)光到紅外波段的地球陸地、海洋和大氣全面的全球觀測(cè)數(shù)據(jù)[2]。隨著MODIS數(shù)據(jù)在國(guó)內(nèi)遙感研究領(lǐng)域的大量應(yīng)用,HDF格式逐漸廣為人知[3],眾多學(xué)者也開(kāi)展了一系列相關(guān)研究,為遙感信息產(chǎn)品的廣泛使用進(jìn)行積極的探索。

        HDF4可以存儲(chǔ)多種類(lèi)型的數(shù)據(jù),但是文件數(shù)據(jù)結(jié)構(gòu)復(fù)雜。目前,HDF Group開(kāi)發(fā)出HDF函數(shù)庫(kù)來(lái)實(shí)現(xiàn)對(duì)HDF文件的讀寫(xiě),但HDF庫(kù)函數(shù)只支持C和FORTRAN語(yǔ)言[1],導(dǎo)致其他常見(jiàn)開(kāi)發(fā)語(yǔ)言無(wú)法直接讀寫(xiě)HDF4文件,為遙感產(chǎn)品的廣泛應(yīng)用帶來(lái)不便。在環(huán)保部生態(tài)環(huán)境遙感產(chǎn)品生產(chǎn)分系統(tǒng)項(xiàng)目中,需要對(duì)一系列MODIS產(chǎn)品進(jìn)行處理,而C#語(yǔ)言沒(méi)有系統(tǒng)地操作HDF4文件的方法,在操作多數(shù)據(jù)集的HDF4文件時(shí)遇到了問(wèn)題。目前流行的GIS桌面操作軟件ArcGIS Desktop盡管支持訪問(wèn)各種矢量格式及大部分的柵格數(shù)據(jù)格式,但不支持多數(shù)據(jù)集層次式存儲(chǔ)的HDF數(shù)據(jù)格式[4]。

        針對(duì)以上問(wèn)題,同時(shí)考慮到技術(shù)開(kāi)發(fā)路線以及.net平臺(tái)和C#開(kāi)發(fā)語(yǔ)言在實(shí)際應(yīng)用中非常廣泛,本文以C#為例,設(shè)計(jì)一種讀寫(xiě)HDF4文件數(shù)據(jù)集的中間件,解決HDF4中多數(shù)據(jù)集文件的創(chuàng)建問(wèn)題與普通數(shù)據(jù)類(lèi)型向高級(jí)語(yǔ)言常用數(shù)據(jù)類(lèi)型的轉(zhuǎn)換。

        2 總體設(shè)計(jì)思想

        HDF的數(shù)據(jù)結(jié)構(gòu)基本上可表示任何類(lèi)型的數(shù)據(jù)[5]。HDF格式還提供命令方式,分析現(xiàn)存HDF文件的結(jié)構(gòu),并即時(shí)顯示圖像內(nèi)容[6]。HDF4和HDF5是HDF文件的2種格式,目前,HDF4在科學(xué)界使用得較為廣泛。HDF4有6種基本數(shù)據(jù)類(lèi)型:光柵圖像,調(diào)色板,科學(xué)數(shù)據(jù)集,注釋,虛擬數(shù)據(jù)和虛擬組[7]。在HDF4文件中通常將含有相關(guān)性的數(shù)據(jù)對(duì)象分為一組,這些數(shù)據(jù)對(duì)象組稱(chēng)為科學(xué)數(shù)據(jù)集[8]??茖W(xué)數(shù)據(jù)集有一些屬性參數(shù),可以對(duì)數(shù)據(jù)對(duì)象進(jìn)行自我描述[9]。圖1為HDF4文件科學(xué)數(shù)據(jù)集中間件的示意圖,本文通過(guò)對(duì)C語(yǔ)言應(yīng)用程序接口以及C#應(yīng)用程序接口的設(shè)計(jì),實(shí)現(xiàn)了C#讀寫(xiě)多數(shù)據(jù)集、多波段的HDF4文件等各種功能。

        圖1 HDF4文件科學(xué)數(shù)據(jù)集中間件示意圖

        3 中間件的設(shè)計(jì)與實(shí)現(xiàn)

        本文研究使用的操作系統(tǒng)是Windows 7,開(kāi)發(fā)工具是Microsoft Visual Studio 2012,通過(guò)對(duì)2種接口的設(shè)計(jì)與實(shí)現(xiàn),該中間件解決了C#讀寫(xiě)HDF4文件的問(wèn)題。本節(jié)主要介紹該中間件的具體實(shí)現(xiàn)過(guò)程。

        3.1 核心技術(shù)

        HDF4文件中的屬性包括預(yù)定義屬性和用戶(hù)定義屬性,用戶(hù)可以更改預(yù)定義屬性值,可以添加和刪除用戶(hù)自定義屬性及屬性值。通過(guò)該中間件,用戶(hù)可以讀寫(xiě)HDF4文件的影像相關(guān)信息,也可以讀寫(xiě)科學(xué)數(shù)據(jù)集中各個(gè)波段的信息,如圖像4個(gè)邊界的經(jīng)緯度信息、圖像4個(gè)角及中心點(diǎn)的坐標(biāo)、太陽(yáng)高度角信息等。

        由于HDF4文件中含有一些不常見(jiàn)的數(shù)據(jù)類(lèi)型,C#語(yǔ)言中沒(méi)有與之對(duì)應(yīng)的數(shù)據(jù)類(lèi)型,故C#無(wú)法讀寫(xiě)HDF4文件。針對(duì)這個(gè)問(wèn)題,本文通過(guò)設(shè)計(jì)2種接口,使得C#也可以讀寫(xiě)HDF4文件。本節(jié)以數(shù)據(jù)類(lèi)型char8的用戶(hù)自定義屬性為例,介紹C#實(shí)現(xiàn)讀寫(xiě)不常見(jiàn)類(lèi)型char8的過(guò)程。

        3.1.1 C語(yǔ)言庫(kù)與C++之間的接口設(shè)計(jì)

        首先,建立一個(gè)VC++的動(dòng)態(tài)鏈接庫(kù)項(xiàng)目,項(xiàng)目屬性為X64,在可執(zhí)行文件的同級(jí)目錄下放入它的幾個(gè)C語(yǔ)言依賴(lài)項(xiàng)(HDF官網(wǎng)下載[10]),如szip.lib, zlib.lib,hdfdll.lib,hdf_fcstubdll.lib,hdf_fortandll.lib等。

        其次,添加頭文件“mfhdf.h”,編寫(xiě)C語(yǔ)言與

        C++的函數(shù)接口。下面以其中一個(gè)功能為獲得類(lèi)型為字符串的屬性值函數(shù)Example1為例進(jìn)行說(shuō)明。

        變量file_data中數(shù)據(jù)的類(lèi)型為char8,而C#中沒(méi)有與之對(duì)應(yīng)的類(lèi)型,這就需要C++對(duì)其進(jìn)行轉(zhuǎn)換,這里使用了指針類(lèi)型int8?,以供C#通過(guò)C++與C#的相應(yīng)接口獲得數(shù)據(jù)。

        此外,C++函數(shù)的關(guān)鍵字extern"C"和declspec (dllexport)在生成動(dòng)態(tài)鏈接庫(kù)時(shí)必須添加,extern" C"使C++能夠調(diào)用C語(yǔ)言的庫(kù)文件,__declspec (dllexport)的作用是將函數(shù)名存儲(chǔ)在DLL的導(dǎo)出表中。所有接口函數(shù)編寫(xiě)完畢時(shí),即可編譯生成相應(yīng)的動(dòng)態(tài)鏈接庫(kù)HDF4Write.dll。

        3.1.2 C++與C#之間的接口設(shè)計(jì)

        首先,將VC++項(xiàng)目生成的動(dòng)態(tài)鏈接庫(kù)HDF4Write.dll添加到相應(yīng)的C#項(xiàng)目中,并聲明與VC++項(xiàng)目中對(duì)應(yīng)的接口函數(shù)。此時(shí),該C#項(xiàng)目即可對(duì)HDF4文件進(jìn)行讀寫(xiě)操作。下面是與Example1相對(duì)應(yīng)的在C#項(xiàng)目中聲明的函數(shù)。

        Example2中的關(guān)鍵內(nèi)容是函數(shù)上方的Dll-Import屬性,其中“HDF4Write.dll”指的是引用的動(dòng)態(tài)鏈接庫(kù)的名稱(chēng),EntryPoint指的是動(dòng)態(tài)鏈接庫(kù)中定義的函數(shù)(此處為Example1的函數(shù))名稱(chēng)。IntPtr是指針類(lèi)型,這里與Example1中的int8?對(duì)應(yīng),得到指針I(yè)ntPtr后再經(jīng)過(guò)字符串轉(zhuǎn)換就可以得到file_data的值。從Example1和Example2可以看出,函數(shù)的返回值和參數(shù)要一一對(duì)應(yīng),并需要相應(yīng)的關(guān)鍵字進(jìn)行接口匹配,這是C#調(diào)用VC++動(dòng)態(tài)鏈接庫(kù)的核心部分。以上操作即可實(shí)現(xiàn)將char8類(lèi)型的數(shù)據(jù)轉(zhuǎn)換為相應(yīng)字符串。其他不常見(jiàn)數(shù)據(jù)類(lèi)型的轉(zhuǎn)換過(guò)程與char8類(lèi)似。

        3.2 基本函數(shù)的再封裝

        通過(guò)C#項(xiàng)目調(diào)用VC++動(dòng)態(tài)鏈接庫(kù)得到的函數(shù),是一些具有單一功能的基本函數(shù)(如Example2中的函數(shù)),為使讀寫(xiě)HDF4文件更加簡(jiǎn)便,減少代碼的重復(fù)編寫(xiě),提高編程效率,對(duì)這些基本函數(shù)進(jìn)行再封裝,詳見(jiàn)Example3。

        如Example3所示,語(yǔ)句(4)、語(yǔ)句(5)、語(yǔ)句(7)、語(yǔ)句(8)的作用分別是打開(kāi)指定HDF4文件、選擇數(shù)據(jù)集、關(guān)閉已選擇的數(shù)據(jù)集,關(guān)閉已打開(kāi)文件。每對(duì)某個(gè)數(shù)據(jù)集寫(xiě)入一次數(shù)據(jù),都需要進(jìn)行打開(kāi)文件、選定數(shù)據(jù)集等同樣的操作,語(yǔ)句(4)、語(yǔ)句(5)、語(yǔ)句(7)、語(yǔ)句(8)都要重復(fù)添加,Example3把數(shù)據(jù)集寫(xiě)入函數(shù)writeSD(),以及對(duì)語(yǔ)句(4)、語(yǔ)句(5)、語(yǔ)句(7)、語(yǔ)句(8)進(jìn)行了封裝,封裝為WriteSDByFile()函數(shù)。封裝后,只需調(diào)用WriteSDByFile()函數(shù)即可完成數(shù)據(jù)集的寫(xiě)入。

        綜上所述,對(duì)基本函數(shù)進(jìn)行再封裝,使封裝后的函數(shù)具有獨(dú)立的功能,使得操作HDF4文件時(shí)方便易用,減少了冗余代碼,結(jié)構(gòu)更加清晰易懂。

        4 HDF4文件的操作流程及功能介紹

        4.1 函數(shù)功能

        本節(jié)對(duì)本文設(shè)計(jì)的主要基本功能函數(shù)進(jìn)行介紹,這些基本函數(shù)主要包括文件操作類(lèi)、屬性操作類(lèi)和數(shù)據(jù)集操作類(lèi)。通過(guò)這些基本函數(shù),可以實(shí)現(xiàn)更多復(fù)雜的功能,如獲取和設(shè)置數(shù)據(jù)集中各個(gè)波段的名稱(chēng)、圖像的地理空間范圍、圖像的表觀反射率值等,可以滿(mǎn)足本項(xiàng)目對(duì)MODIS產(chǎn)品數(shù)據(jù)處理的要求。

        表1為中間件主要基本功能函數(shù)列表,并對(duì)各個(gè)函數(shù)的功能進(jìn)行了簡(jiǎn)單的介紹。

        表1 中間件主要基本功能函數(shù)列表

        4.2 HDF4文件操作的基本流程

        科學(xué)數(shù)據(jù)集是一組用來(lái)存儲(chǔ)和描述多維數(shù)組的科學(xué)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)[11]。HDF4文件能夠存儲(chǔ)不同種類(lèi)的科學(xué)數(shù)據(jù)集,為了方便地在C#環(huán)境下使用HDF4文件,本文在實(shí)現(xiàn)了C#中讀寫(xiě)HDF4文件的功能后,對(duì)C#中的功能函數(shù)進(jìn)行了再封裝,使得在C#項(xiàng)目下操作HDF4文件簡(jiǎn)單易用,使研究遙感圖像的人員能夠?qū)⒏嗟臅r(shí)間和精力用于數(shù)據(jù)分析。

        圖2為關(guān)于讀寫(xiě)HDF4文件的基本流程。

        圖2 讀寫(xiě)HDF4文件的基本流程

        Step 1用本文的自定義函數(shù)StartFile()打開(kāi)文件,打開(kāi)方式有創(chuàng)建、讀和寫(xiě),當(dāng)打開(kāi)文件失敗時(shí),返回狀態(tài)值-1。其中,以創(chuàng)建方式打開(kāi)會(huì)新建一個(gè)文件,并覆蓋原重名文件。

        Step 2如果只對(duì)HDF4文件的公共屬性進(jìn)行讀寫(xiě)、查看各個(gè)數(shù)據(jù)集的名稱(chēng)和索引,即處理的是該HDF4文件的公共信息,不需選擇數(shù)據(jù)集,則處理過(guò)公共信息之后,直接跳至Step6。

        Step 3如果需要對(duì)指定的數(shù)據(jù)集進(jìn)行屬性或者數(shù)據(jù)集中數(shù)據(jù)的操作。首先,可以使用函數(shù)GetIndexByName()獲得該數(shù)據(jù)集在HDF4文件中的索引號(hào);然后,根據(jù)該索引號(hào),使用函數(shù)SelectSD()選擇科學(xué)數(shù)據(jù)集,并返回?cái)?shù)據(jù)集的ID號(hào);如果需要?jiǎng)?chuàng)建新的數(shù)據(jù)集,則可利用函數(shù)CreateSD()創(chuàng)建一個(gè)新的數(shù)據(jù)集,根據(jù)需要?jiǎng)?chuàng)建二維科學(xué)數(shù)據(jù)集或者三維科學(xué)數(shù)據(jù)集,并返回該數(shù)據(jù)集的ID號(hào);如果選擇數(shù)據(jù)集失敗,則返回狀態(tài)值-1。

        Step 4根據(jù)Step3中返回的ID號(hào),可以對(duì)選定的數(shù)據(jù)集進(jìn)行讀寫(xiě)操作,如果數(shù)據(jù)集中有多個(gè)波段,可以對(duì)特定波段進(jìn)行操作;如果讀寫(xiě)數(shù)據(jù)集失敗,則返回狀態(tài)值-1。

        Step 5在對(duì)數(shù)據(jù)集操作結(jié)束后,使用函數(shù)EndSD()關(guān)閉選定的數(shù)據(jù)集。

        Step 6在對(duì)某個(gè)HDF4文件操作結(jié)束后,使用函數(shù)EndFile()關(guān)閉數(shù)據(jù)文件。

        5 用例分析

        為了更直觀、形象地說(shuō)明該中間件訪問(wèn)HDF4文件的功能,本節(jié)通過(guò)對(duì)項(xiàng)目中用到一個(gè)MODIS產(chǎn)品的介紹和一個(gè)具體的例子,說(shuō)明該中間件的使用方法,同時(shí)驗(yàn)證本研究的實(shí)用性。

        5.1 項(xiàng)目需求

        環(huán)保部生態(tài)環(huán)境遙感產(chǎn)品生產(chǎn)分系統(tǒng)項(xiàng)目主要是對(duì)各種遙感數(shù)據(jù)進(jìn)行提取和分析。本項(xiàng)目中用到的

        產(chǎn)品有土地利用與生態(tài)系統(tǒng)產(chǎn)品、城市環(huán)境遙感應(yīng)用產(chǎn)品、國(guó)家級(jí)自然保護(hù)區(qū)動(dòng)態(tài)監(jiān)測(cè)與評(píng)價(jià)產(chǎn)品等。本節(jié)以葉綠素吸收比值指數(shù)CARI產(chǎn)品為例進(jìn)行分析。

        葉綠素吸收比值指數(shù)CARI產(chǎn)品是通過(guò)測(cè)量位于670 nm,550 nm和700 nm處的葉綠素相對(duì)深度來(lái)獲取葉綠素的含量信息。CARI值的計(jì)算公式如下:

        其中,a,b指葉綠素a和葉綠素b;ρx為反射率;X=700, 670,500,550波段的DN值。ρx的獲取過(guò)程為ρx=X/ax×cosθ,θ為太陽(yáng)天頂角,θ=90-α,α可通過(guò)對(duì)應(yīng)的HDF影像的屬性太陽(yáng)高度角SunElevation獲得。

        綜上可知,只需通過(guò)本中間件獲取HDF4文件中相應(yīng)波段的DN值和屬性太陽(yáng)高度角Sun-Elevation即可計(jì)算出葉綠素吸收比值指數(shù)CARI的值,其他MODIS產(chǎn)品處理過(guò)程與此例類(lèi)似。

        5.2 應(yīng)用實(shí)例

        本節(jié)主要介紹如下內(nèi)容:

        (1)創(chuàng)建HDF4文件,并將其讀入內(nèi)存;

        (2)為該HDF4文件添加一個(gè)用戶(hù)自定義屬性;

        (3)創(chuàng)建含有多波段的三維數(shù)據(jù)集,將相應(yīng)的柵格數(shù)據(jù)寫(xiě)入該數(shù)據(jù)集,并為其添加一個(gè)用戶(hù)自定義屬性;

        (4)關(guān)閉該數(shù)據(jù)集以及HDF4文件。

        下面為具體的例子及說(shuō)明:

        (1)創(chuàng)建一個(gè)HDF4文件,文件名為test.hdf。

        int FileID=StartFile("E:\test.hdf","create")其中,第1個(gè)參數(shù)表示HDF4文件的絕對(duì)路徑;第2個(gè)參數(shù)表示執(zhí)行創(chuàng)建操作;最后返回文件ID號(hào)。

        (2)向test.hdf文件中添加一個(gè)字符串類(lèi)型的屬性。

        其中,第1個(gè)參數(shù)表示文件或數(shù)據(jù)集ID號(hào);第2個(gè)參數(shù)表示屬性名稱(chēng);第3個(gè)參數(shù)表示屬性值;第4個(gè)參數(shù)表示該屬性的數(shù)據(jù)類(lèi)型;第5個(gè)參數(shù)表示是否為文件的公共屬性,如果為-1時(shí)表示該屬性為文件的公共屬性。

        (3)創(chuàng)建一個(gè)三維數(shù)據(jù)集,數(shù)據(jù)集名稱(chēng)為firstSD。

        sdsID=createThreeSD(FileID,"firstSD",4,5,6)其中,函數(shù)createThreeSD的第1個(gè)參數(shù)表示文件ID號(hào),第2個(gè)參數(shù)表示數(shù)據(jù)集名稱(chēng),后面的3個(gè)參數(shù)依次表示該數(shù)據(jù)集各維的大小。

        (4)向數(shù)據(jù)集中寫(xiě)入數(shù)組。

        WriteSDByFile(sdsID,ref data[0])

        其中,第1個(gè)參數(shù)表示數(shù)據(jù)集的標(biāo)識(shí)ID號(hào);第2個(gè)參數(shù)是數(shù)組的首地址;數(shù)組data是float類(lèi)型的數(shù)組;數(shù)組元素個(gè)數(shù)為120(即4×5×6)。

        除了那些用途廣泛的語(yǔ)言程序以外,目前還有多款專(zhuān)門(mén)用于瀏覽HDF文件的軟件工具[12],HDF Explorer即是其中之一。圖3為使用HDF Explorer打開(kāi)test.hdf文件獲取的該數(shù)據(jù)集中第1個(gè)波段的數(shù)據(jù),該數(shù)據(jù)集共有6個(gè)波段,其他波段數(shù)據(jù)的顯示方法與圖3相同。

        圖3 第1個(gè)波段中的數(shù)據(jù)

        (5)向數(shù)據(jù)集中添加float類(lèi)型屬性。

        SetAttributeValue(sdsID,"testFloat","5","float",0)其中,第1個(gè)參數(shù)表示文件或數(shù)據(jù)集ID號(hào);第2個(gè)參數(shù)表示屬性名稱(chēng);第3個(gè)參數(shù)表示屬性值;第4個(gè)參數(shù)表示該屬性的數(shù)據(jù)類(lèi)型;第5個(gè)參數(shù)表示數(shù)據(jù)集名稱(chēng),如果為0時(shí)表示該屬性為數(shù)據(jù)集屬性。

        (6)先后關(guān)閉數(shù)據(jù)集以及文件。

        EndSD(sdsID)

        status=EndFile(FileID)

        執(zhí)行過(guò)上述步驟后,一個(gè)簡(jiǎn)單的實(shí)例完成。從以上例子可以看出,該中間件的引入使C#開(kāi)發(fā)人員可以直接創(chuàng)建多數(shù)據(jù)集、多波段的HDF4文件,可以完整地對(duì)HDF4文件進(jìn)行操作。

        6 結(jié)束語(yǔ)

        HDF4文件為MODIS數(shù)據(jù)常用的存儲(chǔ)形式,全球許多國(guó)家和地區(qū)都在使用MODIS數(shù)據(jù)。HDF4文件是遙感圖像的一種,由于它可以存儲(chǔ)不同類(lèi)型的數(shù)據(jù),得到了較廣泛的應(yīng)用。目前,只有C語(yǔ)言和Fortran語(yǔ)言可以直接讀寫(xiě)HDF4文件,其他語(yǔ)言則不能方便地讀寫(xiě)HDF4文件。本文以C#為例,設(shè)計(jì)一種能夠使C#直接訪問(wèn)HDF4文件的中間件,解決基于C#語(yǔ)言讀寫(xiě)多數(shù)據(jù)集HDF4文件與普通數(shù)據(jù)類(lèi)型向高級(jí)語(yǔ)言常用數(shù)據(jù)類(lèi)型轉(zhuǎn)換的問(wèn)題,并通過(guò)進(jìn)一步的封裝,有效地提高了編程效率。

        隨著對(duì)HDF4文件的進(jìn)一步探索,將在以下兩方面繼續(xù)對(duì)HDF4文件的讀寫(xiě)進(jìn)行研究:(1)對(duì)HDF4文件的另外5種數(shù)據(jù)類(lèi)型進(jìn)行研究,完善由C #語(yǔ)言操作HDF4文件的問(wèn)題,為C#語(yǔ)言處理HDF4文件提供更方便、更高效的接口;(2)根據(jù)本文的設(shè)計(jì)理念,構(gòu)造出一種面向多種常用語(yǔ)言的HDF4文件數(shù)據(jù)集的通用中間件。

        [1]王繼成,蔣狄微,謝智劍.基于GDAL的HDF文件格式柵格數(shù)據(jù)提取的研究[J].計(jì)算機(jī)技術(shù)與信息發(fā)展, 2011,(8):63-64.

        [2]路文海.IDL語(yǔ)言處理HDF格式遙感數(shù)據(jù)的研究[J].海洋信息技術(shù),2006,(3):6-8.

        [3]王永韜,劉良明.HDF5格式特點(diǎn)及其對(duì)遙感數(shù)據(jù)格式標(biāo)準(zhǔn)化的幾點(diǎn)啟示[J].國(guó)土資源遙感,2005,(3): 39-43.

        [4]申 煥,石曉春,胡勇修.利用GDAL擴(kuò)展ArcGIS Engine對(duì)HDF文件的支持[J].測(cè)繪地理信息,2013, (3):43-45.

        [5]Duerr R E,Cao P,Crider J,et al.Ensuring Long-term Access to Remotely Sensed Data with Layout Maps[J].IEEE Transactions on Geoscience and Remote Sensing, 2009,47(1):123-129.

        [6]焦 飛,黃天文.基于.NET的HDF光柵圖像數(shù)據(jù)的讀取與處理[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2007,(10):48-51.

        [7]史 磊,張 柯,洪俊光.基于HDF4格式的MODIS 1B影像數(shù)據(jù)讀取的算法研究[J].巢湖學(xué)院學(xué)報(bào), 2008,(3):73-76.

        [8]張 莉,曾致遠(yuǎn).基于HDF4文件格式的MODIS 1B影像數(shù)據(jù)提取的研究與實(shí)現(xiàn)[J].國(guó)土資源遙感, 2004,(4):27-32.

        [9]國(guó)家MODIS數(shù)據(jù)中心.安全數(shù)據(jù)表SDS[EB/OL].(2012-03-10).http://satellite.cma.gov.cn/PortalSite/ eos/format1b2.html.

        [10]HDF4.HDF5/Tools API Specification[EB/OL].(2014-01-08).http://www.hdfgroup.org/products/hdf4.

        [11]NCSA.HDF4.2.9 User's Guide.pdf[EB/OL].(2013-02-10).http://www.hdfgroup.org/doc.html.

        [12]白 龍,雷 惠,張 翾.用MATLAB讀取HDF格式數(shù)據(jù)的實(shí)用方法[J].儀器儀表學(xué)報(bào),2010,(8):434-438.

        編輯 顧逸斐

        Design and Implementation of HDF4 File Access Middleware

        SHEN Xiajiong1a,1b,MA Rui1a,HAN Daojun1a,1b,ZHOU Bing1a,2
        (1a.School of Computer and Information Engineering;b.Institute of Data and Knowledge Engineering, Henan University,Kaifeng 475004,China;2.Institute of Image Processing and Pattern Recognition,Kaifeng 475004,China)

        HDF4 files are used to store the data of Moderate-resolution Imaging Spectroradiometer(MODIS)products, and it can store various types of data,but its data structure is complex.At present,the function libraries of HDF4 file which are developed by HDF GROUP can only be used in Fortran and C language,other programming languages lack the method of reading and writing HDF4 file systematically.Although ArcGIS supports most of the raster data,it does not support multiple data sets hierarchical storage of HDF data format.This thesis designs a middleware based on C#language of operating HDF4 file,and it solves some problems such as ArcGIS unable to create multiple datasets HDF4 file,and it introduces the core idea and the concrete application of the middleware instances.This middleware is applied in environmental protection of the ecological environment of remote sensing products production system project,and it solves some problems such as C#language unable to create multiple datasets HDF4 file when handing MODIS product data,and it verifies the practicality.

        HierarchicalDataFormat(HDF);scientificdataset;middleware;Moderate-resolutionImaging Spectroradiometer(MODIS);raster data;C#language

        沈夏炯,馬 瑞,韓道軍,等.HDF4文件訪問(wèn)中間件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2015, 41(3):278-282,286.

        英文引用格式:Shen Xiajiong,Ma Rui,Han Daojun,et al.Design and Implementation of HDF4 File Access Middleware[J].Computer Engineering,2015,41(3):278-282,286.

        1000-3428(2015)03-0278-05

        :A

        :TP311

        10.3969/j.issn.1000-3428.2015.03.052

        國(guó)家自然科學(xué)基金資助項(xiàng)目(61272545);河南省科技廳科技攻關(guān)計(jì)劃基金資助項(xiàng)目(142102210390);河南省教育廳自然科學(xué)基金資助項(xiàng)目(13B520918)。

        沈夏炯(1963-),男,教授、博士,主研方向:空間數(shù)據(jù)處理;馬 瑞,碩士研究生;韓道軍、周 兵,副教授、博士。

        2014-04-01

        :2014-05-06E-mail:15093617922@163.com

        猜你喜歡
        數(shù)據(jù)類(lèi)型中間件函數(shù)
        二次函數(shù)
        詳談Java中的基本數(shù)據(jù)類(lèi)型與引用數(shù)據(jù)類(lèi)型
        第3講 “函數(shù)”復(fù)習(xí)精講
        二次函數(shù)
        函數(shù)備考精講
        如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類(lèi)型
        RFID中間件技術(shù)及其應(yīng)用研究
        電子制作(2018年14期)2018-08-21 01:38:10
        基于VanConnect中間件的設(shè)計(jì)與開(kāi)發(fā)
        中間件在高速公路領(lǐng)域的應(yīng)用
        一種支持智能環(huán)境構(gòu)建的中間件
        真人与拘做受免费视频| 高清不卡日本v二区在线| 精品天堂色吊丝一区二区| 国产一区二区三区四色av| 日本亲近相奷中文字幕| 国内露脸少妇精品视频| 亚洲欧美另类自拍| 亚洲乱色视频在线观看| 少妇下面好紧好多水真爽| 欧美多人片高潮野外做片黑人| 人妻少妇看a偷人无码精品| 国产视频网站一区二区三区 | 亚洲色图视频在线播放| 亚洲中文字幕人成乱码在线| 国产亚洲精品久久久闺蜜| 内射交换多p国产| 中国女人a毛片免费全部播放| 91在线观看国产自拍| 亚洲一区二区三区中文字幕网| 久久人妻av一区二区软件| 高中生粉嫩无套第一次| 人妻少妇不满足中文字幕| 亚洲产在线精品亚洲第一页| 精品国产一区二区三区色搞| 老师翘臀高潮流白浆| 色丁香在线观看| 精品久久久久久99人妻| 一级黄片草逼免费视频| 加勒比东京热一区二区| 亚洲日韩成人无码| 国产精品白丝喷水在线观看| 在线天堂中文一区二区三区| 色婷婷亚洲一区二区三区在线| 亚洲精品视频在线一区二区| 国产动作大片中文字幕| 日本一区二区三区高清千人斩| 日韩精品一区二区三区毛片| 久久精品国产在热亚洲不卡| 欧美又大粗又爽又黄大片视频 | 中文字幕一区二区三区四区五区| 无码少妇a片一区二区三区|