在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学习资料
Feb 08 Python
王纯业的Python学习笔记 下载
Feb 10 Python
Python中的is和==比较两个对象的两种方法
Sep 06 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python机器学习logistic回归代码解析
Jan 17 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
实例介绍Python中整型
Feb 11 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
Python爬虫之urllib基础用法教程
Oct 12 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 Python
Python 获取异常(Exception)信息的几种方法
Dec 29 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
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
PHP取得一个类的属性和方法的实现代码
2011/05/22 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
jquery全选checkBox功能实现代码(取消全选功能)
2013/12/10 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
JavaScript探测CSS动画是否已经完成的方法
2016/08/30 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
JS实现多物体运动的方法详解
2018/01/23 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
python使用循环实现批量创建文件夹示例
2014/03/25 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
python三大神器之fabric使用教程
2019/06/10 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
Python requests设置代理的方法步骤
2020/02/23 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
远程教育心得体会
2014/01/03 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
教师网络培训感言
2014/03/09 职场文书
环境卫生标语
2014/06/09 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
英文版辞职信
2015/02/28 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
MYSQL常用函数介绍
2022/05/05 MySQL