簡介
可能有很多人知道有pdf檔案而少有人知道hdf檔案。
HDF是用於存儲和分發科學數據的一種自我描述、多對象檔案格式。HDF是由美國國家超級計算套用中心NCSA(全稱:National Center for Supercomputing Application)創建的,為了滿足各種領域研究需求而研製的一種能高效存儲和分發科學數據的新型數據格式。HDF可以表示出科學數據存儲和分布的許多必要條件。
概述
HDF 是美國國家高級計算套用中心(National Center for Supercomputing Application)為了滿足各種領域研究需求而研製的一種能高效存儲和分發科學數據的新型數據格式。一個HDF檔案中可以包含多種類型的數據,如柵格圖像數據,科學數據集,信息說明數據。這種數據結構,方便了我們對於信息的提取。例如,當我們打開一個HDF圖像檔案時,除了可以讀取圖像信息以外,還可以很容易的查取其地理定位,軌道參數,圖像噪聲等各種信息參數。HDF 的數據結構是一種分層式數據管理結構。
美國國家宇航局(NASA)在HDF數據格式基礎上提出了HDF—EOS子集,用於記錄MODIS感測器數據。如果需要對HDF格式數據進行讀寫,必須先要對其格式有深刻了解。
HDF數據結構特點
HDF是一個能夠自我描述、多目標、用於科學數據存儲和分發的數據格式。它針對存儲和分發科學數據的各種要求提供解決方法。HDF設計特點為:
· 自我描述:一個HDF檔案中可以包含關於該數據的全面信息。
· 多樣性:一個HDF檔案中可以包含多種類型的數據。例如,可以通過利用適當的HDF 檔案結構,在某個HDF檔案中存儲符號、數值和圖形數據。
· 靈活性:可以讓用戶把相關數據目標集中一個HDF檔案的某個分層結構中,並對其加以描述。同時可以給數據目標記上標記,方便查取。用戶也可以把科學數據存儲到多個HDF檔案中。
· 可擴展性:在HDF中可以加入新數據模式,增強了它與其它標準格式的兼容性。
· 獨立性:HDF是一種同平台無關的格式。HDF檔案在不同平台間傳遞而不用轉換格式。
為什麼建立HDF
人們通常在不同機器上建立、處理數據。在處理過程中,除了原始數據信息以外,無疑會產生大量的結果、輔助、說明等信息,這些信息由於具有不同的格式,所以往往被存於不同的檔案中。這樣,在數據共享過程中,我們不得不利用各種軟體將其打包,進行傳輸。即便如此,也難免會出現遺漏或出錯現象,造成了許多不必要的麻煩。HDF通過提供“總體目錄結構”來處理這類問題:
·為程式提供一種機制,使它能夠直接從嵌套的檔案中獲得信息。
·可以將不同類型的數據源存於同一個檔案中,而這些數據源又可以同時包含其數據信息和和其它相關信息。
·對常用數據集的格式和描述標準化。
·鼓勵所有機器和程式使用標準數據格式,產生包括具體數據的檔案。
HDF數據類型
HDF有6種主要數據類型:柵格圖象,調色板,科學資料庫,注釋,Vdata和Vgroup。
· 柵格圖象: 數據模式提供一種靈活方式存儲、描述柵格圖象數據,包括8bit柵格圖象。
· 調色板: 也叫作彩色查對表,它提供圖像的色譜。
· 科學數據集: 用來存儲和描述多維科學數據陳列。
· Vdata: 是一個框架,用於存儲和描述數據表。
· HDF注釋: 是文字串,用來描述HDF檔案或HDF數據目標。
· Vgroup: 是用來把相關數據目標聯繫起來。一個Vgroup可以含有其它Vgroup,以及數據目標。任一個HDF目標均可以包括進某個Vgroup中。
HDF檔案格式
HDF格式可以被看成一本帶目錄的多章節書。HDF檔案作為“數據書”,每一章包含不同類型的數據元素。HDF檔案用“數據目錄”列出數據元素。
一個HDF 檔案應包括一個檔案頭,一個或多個描述符塊,若干個數據元素。
數據頭是用來確定一個檔案是否為HDF檔案,描述符塊存有數據描述符的序號。一個數據描述符和數據元素一起組成了數據對象。數據對象是HDF 的基本結構。
檔案頭
檔案頭占用檔案的前4個位元組,它由4個ASCII碼形式的控制字元組成,每個字元占用一個位元組。第一個控制字元是‘N’,第二個是‘C’, 第三個是‘S’,第四為‘A’,即(^N^C^S^A).
數據對象
一個數據對象是由一個數據描述符和一個數據元素組成。數據描述符包含了數據元素的類型、位置、尺度等信息。數據元素是實際的數據資料。HDF 這種數據組織方式可以實現HDF 數據的自我描述。
(1) 數據描述符
所有的數據描述符都為12個位元組長,它包含4個區域:標識符(占16-bit),參照數(16-bit),數據偏移量(32-bit),數據長度(32-bit)。
標識符:
數據標識符(tag)是用來確定數據元素區數據類型的。它是16位無符號整型值(1~65535),如果沒有與其相對應的數據元素,則tag為DFTGA_NULL(或0)。下面為tag的值的說明:
1~32767——HDF 結構專用
32768~64999——可由用戶定義
65000~65535——HDF 規格擴展使用
參照數:
對於HDF 檔案中的每個標記符,都有唯一的一個參照數與其相對應。參照數是一個16—bit無符號整型數,在數據對象中一般是不可變的。標記符和參照數相結合確定唯一的數據對象。
數據偏移量和長度:
數據偏移量是指從檔案開始位置到數據元素的起始位置所包含的位元組數。長度是指整個數據元素區占用位元組數。數據偏移量和長度均為32-bit 無符號整型數。
(2) 數據元素
數據元素是數據對象中的裸數據部分。
(3) 在HDF 檔案中將數據對象分組
在HDF 檔案中通常將含有相關數據的數據對象分為一組。這些數據對象組稱為數據集。HDF 用戶採用套用界面來處理這些數據集。例如:一套8-bit的圖像數據集一般有3個數據對象:一組對象用來描述數據集的成員,一組對象是圖像數據,另一組對象則用來描述圖像的尺度大小。一個數據對象可以同時屬於多個數據集,例如包含在一個柵格圖像中的調色板對象,如果它的標識號和參照值也同時包含在另一個數據集描述符中,那么則可以被另一個柵格圖像調用。