在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正则表达式re模块详解
Jun 25 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
使用python实现链表操作
Jan 26 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
Python中利用LSTM模型进行时间序列预测分析的实现
Jul 26 Python
Python实现屏幕录制功能的代码
Mar 02 Python
django xadmin中form_layout添加字段显示方式
Mar 30 Python
Python模块zipfile原理及使用方法详解
Aug 04 Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 Python
Python sklearn分类决策树方法详解
Sep 23 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
星际RPG字典
2020/03/04 星际争霸
php 将bmp图片转为jpg等其他任意格式的图片
2009/06/21 PHP
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
php限制文件下载速度的代码
2015/10/20 PHP
判断用户是否在线的代码
2011/03/05 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
基于vuejs+webpack的日期选择插件
2020/05/21 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
domReady的实现案例
2016/11/23 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
更改Python命令行交互提示符的方法
2015/01/14 Python
Python中的rjust()方法使用详解
2015/05/19 Python
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
加拿大最大的书店:Indigo
2017/01/01 全球购物
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
护理学毕业生求职信
2013/11/14 职场文书
外企办公室竞聘演讲稿
2013/12/29 职场文书
音乐器材管理制度
2014/01/31 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
你离财务总监还有多远?速览CFO的岗位职责
2019/11/18 职场文书