在python中利用GDAL对tif文件进行读写的方法


Posted in Python onNovember 29, 2018

利用GDAL库对tif影像进行读取

示例代码默认波段为[B、G、R、NIR的顺序,且为四个波段]

import gdal
def readTif(fileName):
 dataset = gdal.Open(fileName)
 if dataset == None:
  print(fileName+"文件无法打开")
  return
 im_width = dataset.RasterXSize #栅格矩阵的列数
 im_height = dataset.RasterYSize #栅格矩阵的行数
 im_bands = dataset.RasterCount #波段数
 im_data = dataset.ReadAsArray(0,0,im_width,im_height)#获取数据
 im_geotrans = dataset.GetGeoTransform()#获取仿射矩阵信息
 im_proj = dataset.GetProjection()#获取投影信息
 im_blueBand = im_data[0,0:im_height,0:im_width]#获取蓝波段
 im_greenBand = im_data[1,0:im_height,0:im_width]#获取绿波段
 im_redBand = im_data[2,0:im_height,0:im_width]#获取红波段
 im_nirBand = im_data[3,0:im_height,0:im_width]#获取近红外波段

写tif影像函数

#保存tif文件函数
import gdal
import numpy as np
def writeTiff(im_data,im_width,im_height,im_bands,im_geotrans,im_proj,path):
 if 'int8' in im_data.dtype.name:
  datatype = gdal.GDT_Byte
 elif 'int16' in im_data.dtype.name:
  datatype = gdal.GDT_UInt16
 else:
  datatype = gdal.GDT_Float32

 if len(im_data.shape) == 3:
  im_bands, im_height, im_width = im_data.shape
 elif len(im_data.shape) == 2:
  im_data = np.array([im_data])
 else:
  im_bands, (im_height, im_width) = 1,im_data.shape
  #创建文件
 driver = gdal.GetDriverByName("GTiff")
 dataset = driver.Create(path, im_width, im_height, im_bands, datatype)
 if(dataset!= None):
  dataset.SetGeoTransform(im_geotrans) #写入仿射变换参数
  dataset.SetProjection(im_proj) #写入投影
 for i in range(im_bands):
  dataset.GetRasterBand(i+1).WriteArray(im_data[i])
 del dataset

以上这篇在python中利用GDAL对tif文件进行读写的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
python版简单工厂模式
Oct 16 Python
python构建深度神经网络(DNN)
Mar 10 Python
使用PM2+nginx部署python项目的方法示例
Nov 07 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
用python做游戏的细节详解
Jun 25 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
python线程中的同步问题及解决方法
Aug 29 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
Mar 10 Python
简单了解python关键字global nonlocal区别
Sep 21 Python
浅谈python数据类型及其操作
May 25 Python
详解python网络进程
Jun 15 Python
使用python判断你是青少年还是老年人
Nov 29 #Python
pycham查看程序执行的时间方法
Nov 29 #Python
pycharm在调试python时执行其他语句的方法
Nov 29 #Python
Selenium chrome配置代理Python版的方法
Nov 29 #Python
在PyCharm中实现关闭一个死循环程序的方法
Nov 29 #Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 #Python
python+unittest+requests实现接口自动化的方法
Nov 29 #Python
You might like
解析smarty模板中类似for的功能实现
2013/06/18 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
ArrayList类(增强版)
2007/04/04 Javascript
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
JsRender for index循环索引用法详解
2014/10/31 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
AngularJS之页面跳转Route实例代码
2017/03/10 Javascript
Require.JS中的几种define定义方式示例
2017/06/01 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
python如何实现内容写在图片上
2018/03/23 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Python单链表原理与实现方法详解
2020/02/22 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
意大利奢侈品网站:Italist
2016/08/23 全球购物
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
工商管理专业学生的自我评价
2013/10/01 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
四风存在的原因分析
2014/02/11 职场文书
党员创先争优活动总结
2014/05/04 职场文书
初一新生军训方案
2014/05/22 职场文书
父亲节活动策划方案
2014/08/24 职场文书
企业挂职心得体会
2014/09/10 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
雄兵连:第三季先行图公开,天使恶魔联合,银河之力的新力量
2021/06/11 国漫
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python