1. 程式人生 > 其它 >H5檔案儲存為TIFF

H5檔案儲存為TIFF

上週一個朋友拜託我幫它處理下遙感資料,拿到手一看,發現檔案格式.h5,但是以往接觸的遙感資料格式基本為.tif,帶著好奇上網查了一下,
維基百科對它的解釋:

HDF:層級資料格式(Hierarchical Data Format)是設計用來儲存和組織大量資料的一組檔案格式(HDF4,HDF5)。它最初開發於美國國家超級計算應用中心,現在由非營利社團HDF Group支援,其任務是確保HDF5技術的持續開發和儲存在HDF中資料的持續可訪問性。

從網上得知.H5是HDF格式的一個版本,對於這種格式的讀寫,Python有其專門的模組提供支援。

一個HDF5檔案就是一個容器,用於儲存兩類物件:datasets,類似於陣列的資料集合;groups,類似於資料夾的容器,可以儲存datasets和其它groups,groups類似於字典(dictionaries),dataset類似於Numpy中的陣列(array)。

得到的這個物件並不是陣列,而是HDF5 dataset,但它和Numpy的陣列結構很相似,具有形狀(shape)和資料型別(datatype)

和陣列相似的切片操作。

將影像資料從中提取出來,然後轉為Numpy陣列,為後續分析作準備,

提取出一份影像的矩陣資料,使用Matplotlib 作視覺化 發現影像中間有一個空洞,一開始以為是我處理不當導致,後來發現是資料的問題。

H5儲存為TIF

我朋友的目標檔案格式是.tif,以便於在GIS軟體進行空間分析。將矩陣儲存為.tif檔案需要gdal庫的支援,有一個很重要的問題,但他給我的資料裡沒有元資料,也就是參考座標、地理範圍、空間解析度等資訊一概沒有,如果空間分析中疊加其他資料,就是個大麻煩。

到上一步,提取就全部完成,最後為了直觀地展示2012-2020年間北極地區的海冰密度變化,借用Matplotlib庫,基於2013年間的時間序列資料,做一個小動畫。

製作基本的動畫的步驟如下:

  • 建立畫布和座標系物件
  • 定義updateFig函式,修改畫布資料
  • 呼叫FuncAnimation函式建立動畫

參考:

1.https://docs.h5py.org/en/stable/
2.https://zh.wikipedia.org/wiki/HDF
3.https://segmentfault.com/a/1190000016670881