Python讀取hdf文件并轉(zhuǎn)化為tiff格式輸出
1.Python3讀取hdf文件
最開始使用Python導(dǎo)入pyhdf包的時(shí)候是可以的,但是當(dāng)導(dǎo)入pyhdf.SD的時(shí)候就出現(xiàn)了以下問題:
我查詢了很多的相關(guān)問題,但是都不能解決我的問題。
網(wǎng)絡(luò)上解釋,這種原因是由于 numpy 和 pyhdf 的版本號(hào)不對(duì)應(yīng)所造成的,而我用的是Python3.9版本,確實(shí)找不到哪一個(gè)版本的numpy與之對(duì)應(yīng)。
但是網(wǎng)上有人說是因?yàn)閜yhdf只能在Python2中才能運(yùn)行,于是我又下載了Python2.7,但其實(shí)pyhdf在Python2、3上都能運(yùn)行:
2.使用Python2讀取hdf文件
我在官網(wǎng)上下載了最新的Python2.7.18版本(目前已停止更新),并進(jìn)行安裝。
安裝好Python2.7之后,需要重新配置環(huán)境變量:此電腦(右擊)——屬性——高級(jí)系統(tǒng)設(shè)置——環(huán)境變量(高級(jí))——在系統(tǒng)變量(s)的path中添加Python2.7的路徑:
配置好之后,可以在CMD命令窗口中輸入python查看,是否成功。
配置成功!
3. 如何使Python2和3兼容
因?yàn)槲译娔X里面原本裝有Python3.9,此時(shí)又裝入了Python2.7,某些命令難免會(huì)沖突,比如,pip下載whl時(shí),不知道是下載到那個(gè)版本中,所以這里需要使兩個(gè)版本區(qū)別開來。
3.1 修改Python2.7的名字
修改 python.exe 名字為 python2.exe 和 python3.exe:
之后再在CMD窗口中運(yùn)行Python:
python版本號(hào)查看:
配置成功!
3.2 pip更新
Python 安裝包需要用到包管理工具pip,但是當(dāng)同時(shí)安裝python2和python3的時(shí)候,pip只是其中一個(gè)版本,以下將提供一個(gè)修改方式,即重新安裝兩個(gè)版本的pip,使得兩個(gè)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對(duì)應(yīng)的包
這里簡(jiǎn)單下載了numpy、GDAL、hypdf,其中GDAL和pyhdf只在官網(wǎng)下載的:
pip install GDAL-2.2.4-cp27-cp27m-win_amd64.whl
**注意:**要切換到文件所在文件夾,才能完成安裝!
pyhdf.SD成功導(dǎo)入,問題解決:
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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)讀取mat、tif和hdr格式數(shù)據(jù)
- Python讀取TIF影像的多種方法
- python讀取與寫入tif圖片的完整信息(過程詳解)
- 利用Python裁切tiff圖像且讀取tiff,shp文件的實(shí)例
- python讀取tif圖片時(shí)保留其16bit的編碼格式實(shí)例
- Python模塊_PyLibTiff讀取tif文件的實(shí)例
- 對(duì)Python3+gdal 讀取tiff格式數(shù)據(jù)的實(shí)例講解
- 淺談python下tiff圖像的讀取和保存方法
- Python讀取TIF文件的兩種方法實(shí)現(xiàn)
相關(guān)文章
在Python函數(shù)中輸入任意數(shù)量參數(shù)的實(shí)例
今天小編就為大家分享一篇在Python函數(shù)中輸入任意數(shù)量參數(shù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python使用win32com實(shí)現(xiàn)的模擬瀏覽器功能示例
這篇文章主要介紹了Python使用win32com實(shí)現(xiàn)的模擬瀏覽器功能,結(jié)合實(shí)例形式分析了Python基于win32com模塊實(shí)現(xiàn)網(wǎng)頁的打開、登陸、加載等功能相關(guān)技巧,需要的朋友可以參考下2017-07-07python內(nèi)置模塊之上下文管理contextlib
這篇文章介紹了python內(nèi)置模塊之上下文管理contextlib,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06Python實(shí)現(xiàn)解析命令行參數(shù)的常見方法總結(jié)
除ide的執(zhí)行方式外,命令行的方式執(zhí)行Python腳本是參數(shù)化程序執(zhí)行的一種常見且簡(jiǎn)單的方法。本文總結(jié)了三個(gè)常見的獲取和解析命令行參數(shù)的方法,需要的可以參考一下2022-10-10Python中3種內(nèi)建數(shù)據(jù)結(jié)構(gòu):列表、元組和字典
這篇文章主要介紹了Python中3種內(nèi)建數(shù)據(jù)結(jié)構(gòu):列表、元組和字典,需要的朋友可以參考下2014-11-11Python 字符串與二進(jìn)制串的相互轉(zhuǎn)換示例
今天小編就為大家分享一篇Python 字符串與二進(jìn)制串的相互轉(zhuǎn)換示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07