首頁 > 軟體

Python讀取hdf檔案並轉化為tiff格式輸出

2022-07-17 18:00:22

1.Python3讀取hdf檔案

最開始使用Python匯入pyhdf包的時候是可以的,但是當匯入pyhdf.SD的時候就出現了以下問題:

我查詢了很多的相關問題,但是都不能解決我的問題。
網路上解釋,這種原因是由於 numpypyhdf 的版本號不對應所造成的,而我用的是Python3.9版本,確實找不到哪一個版本的numpy與之對應。
但是網上有人說是因為pyhdf只能在Python2中才能執行,於是我又下載了Python2.7,但其實pyhdf在Python2、3上都能執行:

2.使用Python2讀取hdf檔案

我在官網上下載了最新的Python2.7.18版本(目前已停止更新),並進行安裝。
安裝好Python2.7之後,需要重新設定環境變數:此電腦(右擊)——屬性——高階系統設定——環境變數(高階)——在系統變數(s)的path中新增Python2.7的路徑:

設定好之後,可以在CMD命令視窗中輸入python檢視,是否成功。

設定成功!

3. 如何使Python2和3相容

因為我電腦裡面原本裝有Python3.9,此時又裝入了Python2.7,某些命令難免會衝突,比如,pip下載whl時,不知道是下載到那個版本中,所以這裡需要使兩個版本區別開來。

3.1 修改Python2.7的名字

修改 python.exe 名字為 python2.exepython3.exe

之後再在CMD視窗中執行Python:

python版本號檢視:

設定成功!

3.2 pip更新

Python 安裝包需要用到包管理工具pip,但是當同時安裝python2和python3的時候,pip只是其中一個版本,以下將提供一個修改方式,即重新安裝兩個版本的pip,使得兩個python版本的pip能夠共存。

在DOS命令框輸入命令:

1. pip3:

python3 -m pip install --upgrade pip --force-reinstall

2. pip2

python2 -m pip install --upgrade pip --force-reinstall

以上設定完成!

3.2 使用pip2下載python2.7對應的包

這裡簡單下載了numpy、GDAL、hypdf,其中GDAL和pyhdf只在官網下載的:

pip install GDAL-2.2.4-cp27-cp27m-win_amd64.whl

**注意:**要切換到檔案所在資料夾,才能完成安裝!

pyhdf.SD成功匯入,問題解決:

4. 使用python2.7.18讀取hdf檔案並輸出為TIFF格式

# -*- coding : utf-8 -*-
# C:/python2.7
from osgeo import gdal, ogr, osr
import warnings
warnings.simplefilter ("ignore")
from osgeo import gdal
from pyhdf.SD import SD, SDC, SDim
'''File path'''
filepath = r'E:8frost2008NIEER_CGF-MODIS_SCE_20080101_DAILY_500m_V02.hdf'
'''Data'''
filename = filepath.split('\')[-1].split('.')[0]
hdf = SD(filepath)
snow = hdf.select('Day_Snow_Cover_Area').get()
'''Spatial Reference'''
sr = osr.SpatialReference()
sr.ImportFromEPSG(4326)
s=sr.ExportToWkt()
driver=gdal.GetDriverByName("GTiff")
dataset=driver.Create(filename+'.tif',14000,8000,1,gdal.GDT_Int16, ["TILED=YES", "COMPRESS=LZW"])
im_geotrans=(72,0.005,0.0,56,0.0,-0.005)
dataset.SetGeoTransform(im_geotrans)
dataset.SetProjection(s)
dataset.GetRasterBand(1).WriteArray(snow)

檔案展示:

讀取並轉換成功!

到此這篇關於Python讀取hdf檔案並轉化為tiff格式輸出的文章就介紹到這了,更多相關Python讀取hdf檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com