Python讀取hdf文件並轉化為tiff格式輸出
1.Python3讀取hdf文件
最開始使用Python導入pyhdf包的時候是可以的,但是當導入pyhdf.SD的時候就出現瞭以下問題:
我查詢瞭很多的相關問題,但是都不能解決我的問題。
網絡上解釋,這種原因是由於 numpy 和 pyhdf 的版本號不對應所造成的,而我用的是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.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對應的包
這裡簡單下載瞭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:\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)
文件展示:
讀取並轉換成功!
到此這篇關於Python讀取hdf文件並轉化為tiff格式輸出的文章就介紹到這瞭,更多相關Python讀取hdf文件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 基於Python實現nc批量轉tif格式
- Python計算多幅圖像柵格值的平均值
- python多線程方法詳解
- 使用python進行nc轉tif的3種情況解決
- python進行相關性分析並繪制散點圖詳解