温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python如何读取hdf文件并转化为tiff格式输出

发布时间:2022-07-18 09:24:49 来源:亿速云 阅读:561 作者:iii 栏目:开发技术

本篇内容主要讲解“Python如何读取hdf文件并转化为tiff格式输出”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何读取hdf文件并转化为tiff格式输出”吧!

    1.Python3读取hdf文件

    最开始使用Python导入pyhdf包的时候是可以的,但是当导入pyhdf.SD的时候就出现了以下问题:

    Python如何读取hdf文件并转化为tiff格式输出

    我查询了很多的相关问题,但是都不能解决我的问题。
    网络上解释,这种原因是由于 numpypyhdf 的版本号不对应所造成的,而我用的是Python3.9版本,确实找不到哪一个版本的numpy与之对应。
    但是网上有人说是因为pyhdf只能在Python2中才能运行,于是我又下载了Python2.7,但其实pyhdf在Python2、3上都能运行:

    Python如何读取hdf文件并转化为tiff格式输出

    2.使用Python2读取hdf文件

    我在官网上下载了最新的Python2.7.18版本(目前已停止更新),并进行安装。
    安装好Python2.7之后,需要重新配置环境变量:此电脑(右击)——属性——高级系统设置——环境变量(高级)——在系统变量(s)的path中添加Python2.7的路径:

    Python如何读取hdf文件并转化为tiff格式输出

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

    Python如何读取hdf文件并转化为tiff格式输出

    配置成功!

    3. 如何使Python2和3兼容

    因为我电脑里面原本装有Python3.9,此时又装入了Python2.7,某些命令难免会冲突,比如,pip下载whl时,不知道是下载到那个版本中,所以这里需要使两个版本区别开来。

    3.1 修改Python2.7的名字

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

    Python如何读取hdf文件并转化为tiff格式输出

    Python如何读取hdf文件并转化为tiff格式输出

    之后再在CMD窗口中运行Python:

    Python如何读取hdf文件并转化为tiff格式输出

    python版本号查看:

    Python如何读取hdf文件并转化为tiff格式输出

    配置成功!

    3.2 pip更新

    Python 安装包需要用到包管理工具pip,但是当同时安装python2和python3的时候,pip只是其中一个版本,以下将提供一个修改方式,即重新安装两个版本的pip,使得两个python版本的pip能够共存。

    在DOS命令框输入命令:

    1. pip3:

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

    Python如何读取hdf文件并转化为tiff格式输出

    2. pip2

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

    Python如何读取hdf文件并转化为tiff格式输出

    以上配置完成!

    3.2 使用pip2下载python2.7对应的包

    这里简单下载了numpy、GDAL、hypdf,其中GDAL和pyhdf只在官网下载的:

    Python如何读取hdf文件并转化为tiff格式输出

    Python如何读取hdf文件并转化为tiff格式输出

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

    **注意:**要切换到文件所在文件夹,才能完成安装!

    Python如何读取hdf文件并转化为tiff格式输出

    pyhdf.SD成功导入,问题解决:

    Python如何读取hdf文件并转化为tiff格式输出

    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文件并转化为tiff格式输出

    Python如何读取hdf文件并转化为tiff格式输出

    到此,相信大家对“Python如何读取hdf文件并转化为tiff格式输出”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI