1.安装pyhdf包

(1)通过此链接查找并下载pyhdf包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pygame(根据自己的系统及python版本选择对应的pyhdf包)

(2)在dos命令行下切换到包所在的文件夹,并运行pip install 包名进行安装。

2.读hdf4文件

#导入包

from pyhdf.SD import *

from osgeo import osr

import numpy as np

(1)#读取文件

file="3B43.20100501.7.HDF"

hdf=SD(file)

#获取hdf文件的属性信息

attr=hdf.attributes()

#获取hdf文件的图层以及每个图层所对应的行与列等信息,datasets是一个字典

datasets=hdf.datasets()

#读某一图层(我这里的图层是降雨图层),图层名可通过datasets看到。并获取图层数据

rainfall_array=hdf.select("precipitation").get()

#图层的旋转与转置(这里我要做旋转转置是由于我的图层需求,可通过查看自己的图层是否需要做这一步)

#对矩阵进行左右翻转

data=np.fliplr(rainfall_array)

#对矩阵进行转置

data=np.transpose(data)

#从图层中读取到的数据是5月份逐小时数据,我们这里转换成逐月数据

data=data*24*31

#将数据转换成两个字节的整型数据

d=data.astype(np.uint16)

(2)转tif文件

#创建一个空的投影对象,实例化

ref=osr.SpatialReference()

#定义投影(导入投影参数)

#设置坐标系统为wgs84

ref.ImportFromEPSG(4326)

#查看参考系信息

s=ref.ExportToWkt()

#与上一篇讲的gdal写tif文件相似,这里不做过多描述(我这里的Create参数主要来自上面读取的图层信息)

driver = gdal.GetDriverByName("GTiff")

dataset = driver.Create("prec_self.tif", 1440, 400, 1, gdal.GDT_UInt16)

#这里的仿射变换参数主要是从上面的图层中读取到的。可自行查看自己所获取的图层

im_geotrans=(-180,0.25,0.0,50,0.0,-0.25)

dataset.SetGeoTransform(im_geotrans)

dataset.SetProjection(s)

dataset.GetRasterBand(1).WriteArray(d)

del dataset

python 读hdf4文件,再转写成一个tif文件的更多相关文章

  1. c# .Net :Excel NPOI导入导出操作教程之List集合的数据写到一个Excel文件并导出

    将List集合的数据写到一个Excel文件并导出示例: using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System;using Sys ...

  2. Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit

    以两个C文件为例: 将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c.adc_driver.c编译成一个ko文件! 採用方法: 第一步.改动C文件 1 ...

  3. 用py2exe打包成一个exe文件

    用py2exe打包成一个exe文件 http://blog.csdn.net/franktan2010/article/details/46514607

  4. C# 将多个office文件转换及合并为一个PDF文件

    PDF文件介绍 PDF(Portable Document Format )文件源于20世纪90年代初期,如今早已成为了一种最流行的的文件格式之一.因为PDF文件有很多优点: 支持跨平台和跨设备共享 ...

  5. 将多个图片合并到一个TIF文件里(非 GDAL) 优化版

    不知道为什么,网上对TIF的操作的资料少得可怜,包括CodeProject上都没有找到多少,在网上大多用GDAL,但这个东西,对只想做个合并图片的功能来说,实在是牛刀杀鸡,(9个DLL要带全,相当的恐 ...

  6. Js文件函数中调用另一个Js文件函数的方法

    在项目中Js文件需要完成某一功能,但这一功能的大部分代码在另外一个Js文件已经完成,只需要调用这个文件实现功能.那么如何调用:一个Js文件函数中调用另一个Js文件函数的方法? (直接代码说明) 示例d ...

  7. python找递归目录中文件,并移动到一个单独文件夹中,同时记录原始文件路径信息

    运营那边有个需求. 下载了一批视频文件,由于当时下载的时候陆陆续续创建了很多文件夹,并且,每个文件夹下面还有子文件夹以及视频文件,子文件夹下面有视频文件或者文件夹 现在因为需要转码,转码软件只能对单个 ...

  8. 如何将Debug文件夹下的资源打包成一个EXE文件直接执行

    前言:前段时间写了个小程序,想分享给好友看看,可所以资源都放在Debug文件夹下,整个文件夹发给人家这也太……,为了显得稍微专业一点,想把它们打包一个EXE文件执行,因为我见到到这样的程序,直接一个E ...

  9. 如何把scratch转成一个swf文件或者exe执行文件

    scratch作为一款启蒙用的积木式编程软件,非常受人欢迎,但是,现在有一个问题就是,无法将之转变成一个可执行文件,以便和周边的人们分享. 我个人认为把scratch转变为一个可执行的exe文件,并不 ...

随机推荐

  1. 端口扫描工具nmap的常用参数讲解

    转载请注明出处:https://www.cnblogs.com/wangyanzhong123/p/12576406.html nmap下载与安装 这个没什么好说的.很简单官网上下载就ok了,需要注意 ...

  2. 绕过XSS过滤姿势总结

    0x01 弹窗关键字检测绕过 基本WAF都针对常用的弹窗函数做了拦截,如alert().prompt().confirm(),另外还有代码执行函数eval(),想要绕过去也比较简单,我们以alert( ...

  3. jquery 延迟执行方法

    setTimeout方法使用时需注意: //以下两种方式都行: setTimeout(function () { test(); }, ); //或者 setTimeout(); function t ...

  4. [XML] XML格式【有道翻译】API 的数据转化输出

    <?php header("content-type:text/html;charset=utf-8"); //echo "飞飞仔超级智障"; $cont ...

  5. SpringMVC转发及重定向

    基础环境搭建请参考SringMVC入门程序 1:springmvc-servlet.xml <?xml version="1.0" encoding="UTF-8& ...

  6. django-admin和manage.py用法

    官网文档地址:django-admin和manage.py 金句: 所有的天赋,都来自于你对你喜欢的某种事物的模仿与学习,否则你就不会有这种天赋. 开篇话: 我们在Django开发过程中,命令行执行最 ...

  7. Ansible Facts 变量详解

    Ansible Facts 变量详解与使用案例 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录」,避免业务数据乱放: 3. ...

  8. Python玩转人工智能最火框架 TensorFlow应用实践 学习 教程

    随着 TensorFlow 在研究及产品中的应用日益广泛,很多开发者及研究者都希望能深入学习这一深度学习框架.而在昨天机器之心发起的框架投票中,2144 位参与者中有 1441 位都在使用 Tenso ...

  9. SESSION劫持

    服务端和客户端之间是通过session(会话)来连接沟通.当客户端的浏览器连接到服务器后,服务器就会建立一个该用户的session.每个用户的session都是独立的,并且由服务器来维护.每个用户的s ...

  10. 2019-2020-1 20199326《Linux内核原理与分析》第三周作业

    第三周学习内容 庖丁解牛Linux内核分析第二章:操作系统是如何工作的 Linux内核分析实验二 学到的一些知识 计算机的三大法宝:存储程序计算机,函数调用堆栈,中断 堆栈是C语言程序运行时必须使用的 ...