Python读取hdf文件并转化为tiff格式输出
作者:Amyniez 发布时间:2021-02-22 18:59:56
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)
文件展示:
读取并转换成功!
来源:https://blog.csdn.net/amyniez/article/details/125825307


猜你喜欢
- 我正在参加天池上的一个竞赛,刚开始用的是DenseNet121但是效果没有达到预期,因此开始尝试使用模型融合,将Desenet和Xcepti
- 1.微博三方登录流程1.1 前端获取认证code1.在Vue页面加载时 动态发送请求获取微博授权url2.django收到请求的url后,通
- 本文实例讲述了PHP+redis实现添加处理投票的方法。分享给大家供大家参考,具体如下:<?php header("Cont
- 本文实例讲述了python统计字符串中指定字符出现次数的方法。分享给大家供大家参考。具体如下:python统计字符串中指定字符出现的次数,例
- 方法一:使用临时表。首先创建一个与sp_who相同字段的临时,然后用insert into 方法赋值,这样就可以select这个临时表了。具
- 与其它大多数语言一样,Python 也拥有 for 循环。你到现在还未曾看到它们的唯一原因就是,Python 在其它太多的方面表现出色,通常
- 最简单的例子:a = [1,1,1,1,2,2,2,3,3,1,1,1,3]# 问:计算a中最多有几个连续的1很明显,答案是4如果用代码实现
- 下面给大家介绍下pandas读取CSV文件时查看修改各列的数据类型格式,具体内容如下所述:我们在调bug的时候会经常查看、修改pandas列
- 前言在写 python 程序的时候,经常会用到引入其他文件夹里的 py 文件,要是都在同目录下直接 import 就好了,可是有的不在同一个
- 将一个CSV格式的文件分割成两个CSV文件本项目可以按照比例将一个csv文件分割成两个csv文件,效果是:在C:\algo_file文件夹下
- 前言在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功
- 函数的返回值一个函数执行后可以返回多个返回值def measure(): print('测量开始。。。。&
- 方法一:巧用sum函数将list列表与一个空列表相加,就能把嵌套列表合并成一个a=[[1],[2],[3],[4],[5]]merge=su
- 当Python中用到双重for循环设计的时候我一般会使用循环的嵌套,但是在Python中其实还存在另一种技巧——for复合语句。简单写一个小
- 一、前言用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架。如果数据量很大,一个MYSQL库存储
- 目标在本章中,将了解:如何生成OpenCV-Python bindings如何将新的OpenCV模块扩展到PythonOpenCV-Pyth
- 在说到什么是回表查询的时候,有两个概念需要先解释清楚:分别是聚集索引(聚簇索引)和非聚集索引(非聚簇索引)聚集索引和非聚集索引MySQL规定
- 看到一段代码,如下self.batch_size = batch_size = 128初一看很诧异,仔细想想其实很合理的。在python可能
- 关于break/continue这两个关键字在平常的使用过程中一直比较迷糊。好不容易理解了吧,过段时间不使用好像忘记了什么。这个问题也是很多
- transforms.Resize()的简单使用简单来说就是调整PILImage对象的尺寸,注意不能是用io.imread或者cv2.imr