使用Rasterio读取栅格数据
使用Rasterio读取栅格数据
作者:阿振 邮箱:tanzhenyugis@163.com
博客:https://blog.csdn.net/theonegis/article/details/80089375
修改时间:2018-06-06
声明:本文为博主原创文章,转载请注明原文出处
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文件并获取相关信息,需要注意的是:
- rasterio使用
rasterio.open()
函数打开一个栅格文件 - rasterio使用
read()
函数可以将数据集转为numpy.ndarray
,该函数如果不带参数,将把数据的所有波段做转换(第一维是波段数),如果指定波段,则只取得指定波段对应的数据(波段索引从1开始) - 数据的很多元信息都是以数据集的属性进行表示的
import rasteriowith 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.transformprint(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读取栅格数据相关推荐
- 【GDAL学习】用GDAL读取栅格数据
1.根据坐标读取遥感影像的单个像素值 # week 4: get pixel values at a set of coordinates by reading in one pixel at a t ...
- R语言入门——读取栅格数据参数解读
读取栅格数据 引言 1.数据读入 2.参数解读 2.1 class (类) 2.2 dimensions(维度) 2.3 resolution (像素) 2.4 extent(范围) 2.5 name ...
- Windows 使用 rasterio 读取 tif 图像
Windows 使用 rasterio 读取 tif 图像 一 .rasterio安装 1.在虚拟环境中输入如下命令: conda install gdal rasterio 安装完毕后,直接 imp ...
- 利用python读取栅格数据
代码具有详细说明注释 所需库 #gdalconst中的常量都加了前缀,力图与其他的module冲突最小 from osgeo import gdal,gdalconst from osgeo impo ...
- GDAL / OGR 学习手册 [02] :栅格数据读取
目录 一.栅格数据驱动 二.gdal.Open 三.gdal.Dataset 四.获取影像的基本信息 1. 获取影像元数据 2. 获取影像基本信息 一.栅格数据驱动 GDAL 通过数据驱动来识别各种类 ...
- rasterio包的安装与读取tiff的方式
本文主要参考: python rasterio库安装具体流程 - 知乎 rasterio的安装和使用_罗罗攀的博客-CSDN博客 一.rasterio的安装 rasterio有很多依赖的其他包,所以 ...
- OpenCV使用GDAL读取地理空间栅格文件
OpenCV使用GDAL读取地理空间栅格文件 使用GDAL读取地理空间栅格文件 目标 代码 如何使用GDAL读取栅格数据 笔记 通常应避免纬度/经度(地理)坐标 寻找角坐标 结果 使用GDAL读取地理 ...
- 利用python读取点矢量对应栅格值
每行代码都有详细注解 所需库 # GDAL是栅格和矢量地理空间数据格式的转换器库 # 旧版本加载库的方法 #import gdal,gdalconst # from 语句让你从模块中导入一个指定的部分 ...
- World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景(转)...
http://blog.csdn.net/giser_whu/article/details/41679515 首先,看下本篇博客要达到的效果图: 下面逐步分析如何加载影像及高程文件. 1.World ...
- GDAL\OGR读取数据示例 C#版本
首先创建一个Windows窗体应用程序,然后拖几个按钮和文本框,如下图所示.第一行用来显示栅格数据的路径,点击浏览找到一个栅格文件,将路径显示在文本框中,然后点击读取,将图像的基本信息显示在最下方的富 ...
最新文章
- windows的阻塞和非阻塞Socket编程
- oracle时间戳-日期转换
- MFC:多窗口函数、变量调用
- java 配置hdfs集群_Hadoop集群搭建-04安装配置HDFS
- MySQL 限制查询结果的记录数
- java string jdk_Java.lang.String中JDK API 1.6.0摘要。
- 在Linux系统下更改或更新SSH密钥密码的方法
- Centos 启用网卡出现 no link present. Check cable
- 第一篇博客:WPF中 ScrollViewer控件的ScrollIntoView方法
- 九度oj 题目1325:Battle Over Cities
- Linux笔记(十二) Linux集群搭建(附带视频详解)
- Windows桌面文件夹删除被提示“找不到该项目”——顽固目录、文件的删除
- Unity打开外部文件夹并选择文件
- cubieboard2 android,在cubieboard2双卡版上从零构建Android4.2.2系统
- 冶金、水泥、化工行业自动化通信产品介绍
- excel表格锁定怎么解锁_让用户锁定或解锁Excel工作簿
- 如何在Ubuntu上安装并使用Docker
- 一学就会的无代码RPA,让“高效”成为你的竞争优势
- Rails的静态资源管理(三)—— 开发环境的Asset Pipelin
- 农民工工地受伤是否就可以申请工伤?
热门文章
- matlab 花体字母,小论文格式模板.doc
- 使用Google镜像构建工具Jib报错:No plugin found for prefix 'jib' ...
- 天津大学仁爱学院计算机科学与技术学费,天津大学仁爱学院计算机科学与技术专业2016年在天津理科高考录取最低分数线...
- 兴业银行java面试_【面经】兴业银行信息技术岗面试
- 硬件视角看段页式存储
- 什么平板电脑能够用来编程
- 2353563-50-3,Thalidomide-O-PEG4-Acid一种鱼精蛋白连接物,在活化剂EDC或HATU存在下可与含胺部分反应
- Zabbix系列:proxy存储数据表proxy_history
- 【那些年,我们一起追的女孩】第十一章
- [GAMIT/GLOBK学习笔记]globk_comb.cmd/glorg_comb.cmd文件详解