在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遍历文件夹和读写文件的实现代码
Aug 28 Python
Python提取网页中超链接的方法
Sep 18 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
使用Python搭建虚拟环境的配置方法
Feb 28 Python
Pycharm设置界面全黑的方法
May 23 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
May 24 Python
python最长回文串算法
Jun 04 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
Jun 25 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
如何在Win10系统使用Python3连接Hive
Oct 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP7内核之Reference详解
2019/03/14 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
JS实现中英文混合文字溢出友好截取功能
2018/08/06 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python中的pass语句使用方法讲解
2015/05/14 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
Python rstrip()方法实例详解
2018/11/11 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Python中有几个关键字
2020/06/04 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
校园广播稿范文
2015/08/19 职场文书
田径运动会广播稿
2015/08/19 职场文书
八年级英语教学反思
2016/02/15 职场文书
MySQL 条件查询的常用操作
2022/04/28 MySQL