使用Rasterio读取栅格数据的实例讲解


Posted in Python onNovember 26, 2019

Rasterio简介

有没有觉得用GDAL的Python绑定书写的代码很不Pythonic,强迫症的你可能有些忍受不了。不过,没关系,MapBox旗下的开源库Rasterio帮我们解决了这个痛点。

Rasterio是基于GDAL库二次封装的更加符合Python风格的主要用于空间栅格数据处理的Python库。

Rasterio中栅格数据模型基本和GDAL类似,需要注意的是:

在Rasterio 1.0以后,对于GeoTransform的表示弃用了GDAL风格的放射变换,而使用了Python放射变换的第三方库affine库的风格。

对于放射变换

affine.Affine(a, b, c,
    d, e, f)

GDAL中对应的参数顺序是:(c, a, b, f, d, e)

采用新的放射变换模型的好处是,如果你需要计算某个行列号的地理坐标,直接使用行列号跟给放射变换对象相乘即可,完全符合数学上矩阵乘法的操作,更加直观和方便。

栅格数据读取代码示例

下面的示例程序中演示了如何读取一个GeoTIFF文件并获取相关信息,需要注意的是:

1、rasterio使用rasterio.open()函数打开一个栅格文件

2、rasterio使用read()函数可以将数据集转为numpy.ndarray,该函数如果不带参数,将把数据的所有波段做转换(第一维是波段数),如果指定波段,则只取得指定波段对应的数据(波段索引从1开始)

3、数据的很多元信息都是以数据集的属性进行表示的

import rasterio

with rasterio.open('example.tif') as ds:
 print('该栅格数据的基本数据集信息(这些信息都是以数据集属性的形式表示的):')
 print(f'数据格式:{ds.driver}')
 print(f'波段数目:{ds.count}')
 print(f'影像宽度:{ds.width}')
 print(f'影像高度:{ds.height}')
 print(f'地理范围:{ds.bounds}')
 print(f'反射变换参数(六参数模型):\n {ds.transform}')
 print(f'投影定义:{ds.crs}')
 # 获取第一个波段数据,跟GDAL一样索引从1开始
 # 直接获得numpy.ndarray类型的二维数组表示,如果read()函数不加参数,则得到所有波段(第一个维度是波段)
 band1 = ds.read(1)
 print(f'第一波段的最大值:{band1.max()}')
 print(f'第一波段的最小值:{band1.min()}')
 print(f'第一波段的平均值:{band1.mean()}')
 # 根据地理坐标得到行列号
 x, y = (ds.bounds.left + 300, ds.bounds.top - 300) # 距离左上角东300米,南300米的投影坐标
 row, col = ds.index(x, y) # 对应的行列号
 print(f'(投影坐标{x}, {y})对应的行列号是({row}, {col})')
 # 根据行列号得到地理坐标
 x, y = ds.xy(row, col) # 中心点的坐标
 print(f'行列号({row}, {col})对应的中心投影坐标是({x}, {y})')
 # 那么如何得到对应点左上角的信息
 x, y = (row, col) * ds.transform
 print(f'行列号({row}, {col})对应的左上角投影坐标是({x}, {y})')

输出如下:

该栅格数据的基本数据集信息(这些信息都是以数据集属性的形式表示的):
数据格式:GTiff
波段数目:3
影像宽度:4800
影像高度:4800
地理范围:BoundingBox(left=725385.0, bottom=2648415.0, right=869385.0, top=2792415.0)
反射变换参数(六参数模型):
 | 30.00, 0.00, 725385.00|
| 0.00,-30.00, 2792415.00|
| 0.00, 0.00, 1.00|
投影定义:CRS({'init': 'epsg:32649'})
第一波段的最大值:5459
第一波段的最小值:-313
第一波段的平均值:489.80300625
(投影坐标725685.0, 2792115.0)对应的行列号是(10, 10)
行列号(10, 10)对应的中心投影坐标是(725700.0, 2792100.0)
行列号(10, 10)对应的左上角投影坐标是(725685.0, 2792115.0)

以上这篇使用Rasterio读取栅格数据的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
基于Python 装饰器装饰类中的方法实例
Apr 21 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
使用python实现ftp的文件读写方法
Jul 02 Python
解决python flask中config配置管理的问题
Jul 26 Python
python Django里CSRF 对应策略详解
Aug 05 Python
python pillow模块使用方法详解
Aug 30 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
python 自动化偷懒的四个实用操作
Apr 11 Python
Python小程序之在图片上加入数字的代码
Nov 26 #Python
基于Python获取城市近7天天气预报
Nov 26 #Python
NumPy中的维度Axis详解
Nov 26 #Python
python列表推导式操作解析
Nov 26 #Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 #Python
简单了解python数组的基本操作
Nov 26 #Python
python实现图片插入文字
Nov 26 #Python
You might like
星际RPG字典
2020/03/04 星际争霸
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
php不写闭合标签的好处
2014/03/04 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
经典导游欢迎词大全
2014/01/16 职场文书
表彰先进的通报
2014/01/31 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
钳工实训报告总结
2014/11/04 职场文书
政协委员个人总结
2015/03/03 职场文书