在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的Django框架测试驱动开发的教程
Apr 22 Python
详细解读Python中解析XML数据的方法
Oct 15 Python
django rest framework之请求与响应(详解)
Nov 06 Python
python爬取哈尔滨天气信息
Jul 14 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
pandas的qcut()方法详解
Jul 06 Python
python实现超市管理系统(后台管理)
Oct 25 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
python打开音乐文件的实例方法
Jul 21 Python
Python如何批量生成和调用变量
Nov 21 Python
Python 内置函数速查表一览
Jun 02 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
jquery+ajax实现直接提交表单实例分析
2016/06/17 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
python 实现return返回多个值
2019/11/19 Python
Python有参函数使用代码实例
2020/01/06 Python
Python偏函数实现原理及应用
2020/11/20 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
高三历史教学反思
2014/01/09 职场文书
《走一步再走一步》教学反思
2014/02/15 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
深入详解JS函数的柯里化
2021/06/09 Javascript
Nginx配置根据url参数重定向
2022/04/11 Servers