Python讀取hdf文件并轉(zhuǎn)化為tiff格式輸出
1.Python3讀取hdf文件
最開始使用Python導入pyhdf包的時候是可以的,但是當導入pyhdf.SD的時候就出現(xiàn)了以下問題:

我查詢了很多的相關(guān)問題,但是都不能解決我的問題。
網(wǎng)絡(luò)上解釋,這種原因是由于 numpy 和 pyhdf 的版本號不對應(yīng)所造成的,而我用的是Python3.9版本,確實找不到哪一個版本的numpy與之對應(yīng)。
但是網(wǎng)上有人說是因為pyhdf只能在Python2中才能運行,于是我又下載了Python2.7,但其實pyhdf在Python2、3上都能運行:

2.使用Python2讀取hdf文件
我在官網(wǎng)上下載了最新的Python2.7.18版本(目前已停止更新),并進行安裝。
安裝好Python2.7之后,需要重新配置環(huán)境變量:此電腦(右擊)——屬性——高級系統(tǒng)設(shè)置——環(huán)境變量(高級)——在系統(tǒng)變量(s)的path中添加Python2.7的路徑:

配置好之后,可以在CMD命令窗口中輸入python查看,是否成功。

配置成功!
3. 如何使Python2和3兼容
因為我電腦里面原本裝有Python3.9,此時又裝入了Python2.7,某些命令難免會沖突,比如,pip下載whl時,不知道是下載到那個版本中,所以這里需要使兩個版本區(qū)別開來。
3.1 修改Python2.7的名字
修改 python.exe 名字為 python2.exe 和 python3.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對應(yīng)的包
這里簡單下載了numpy、GDAL、hypdf,其中GDAL和pyhdf只在官網(wǎng)下載的:


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:\08frost\2008\NIEER_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)文件展示:



讀取并轉(zhuǎn)換成功!
到此這篇關(guān)于Python讀取hdf文件并轉(zhuǎn)化為tiff格式輸出的文章就介紹到這了,更多相關(guān)Python讀取hdf文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python報錯:NameError:?name?‘xxx‘?is?not?defined的解決辦法
這篇文章主要給大家介紹了關(guān)于Python報錯:NameError:?name?‘xxx‘?is?not?defined的解決辦法,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-06-06
python如何將aac轉(zhuǎn)為mp3,保持原有目錄結(jié)構(gòu)
使用Python腳本實現(xiàn)AAC格式轉(zhuǎn)MP3格式的方法介紹,需要用戶輸入AAC文件所在目錄路徑和MP3輸出目錄路徑,通過調(diào)用FFmpeg工具實現(xiàn)格式轉(zhuǎn)換,該腳本簡單易懂,適合需要批量處理音頻文件的用戶,使用前需確保已安裝FFmpeg環(huán)境2024-11-11
Python初學者需要注意的事項小結(jié)(python2與python3)
這篇文章主要介紹了Python初學者需要注意的事項小結(jié),包括了python2與python3的一些區(qū)別,需要的朋友可以參考下2018-09-09
Python中使用Counter進行字典創(chuàng)建以及key數(shù)量統(tǒng)計的方法
今天小編就為大家分享一篇Python中使用Counter進行字典創(chuàng)建以及key數(shù)量統(tǒng)計的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07

