【Python&RS】GDAL对栅格数据重采样/对齐栅格
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。
Python的GDAL库作为栅格数据的处理转换库,其支持几百种栅格数据格式,如常见的TIFF、ENVI、HFA、HDF4等。因为遥感影像大部分都是栅格数据,所以GDAL库非常适合处理遥感影像、如光谱指数计算、波段合成、批量下载等。
栅格重采样是一种将栅格数据从一个分辨率变换为另一个分辨率的处理方法。它通常用于将高分辨率数据转换为低分辨率数据,或者将低分辨率数据转换为高分辨率数据。重采样的目的是改变栅格数据的像素大小,使之与目标分辨率相匹配,以便更好地适应不同的分析需求。常见的重采样方法包括最邻近插值、双线性插值、双三次插值等。
1.导入GDAL库
from osgeo import gdal
2.获取参考影像的基本空间信息(宽高、投影信息、仿射地理参数、波段数等)
ds_refer = gdal.Open(path_refer, gdal.GA_ReadOnly) # 打开数据集dataset
proj_refer = ds_refer.GetProjection() # 获取投影信息
trans_refer = ds_refer.GetGeoTransform() # 获取仿射地理变换参数
band_refer = ds_refer.GetRasterBand(1) # 获取波段
width_refer = ds_refer.RasterXSize # 获取数据宽度
height_refer = ds_refer.RasterYSize # 获取数据高度
bands_refer = ds_refer.RasterCount # 获取波段数
3.打开需要重采样的影像数据,获取其投影信息
ds_resample = gdal.Open(path_resample, gdal.GA_ReadOnly) # 打开数据集dataset
proj_resample = ds_resample.GetProjection() # 获取输入影像的投影信息
4.注册数据驱动,将参考影像的宽、高、波段数等空间参数写入驱动中,并将仿射地理变换参数和投影信息写入驱动。
driver = gdal.GetDriverByName('GTiff') # 定义输出的数据资源
ds_output = driver.Create(out_path_resample, width_refer, height_refer, bands_refer, band_refer.DataType) # 创建重采样影像
ds_output.SetGeoTransform(trans_refer) # 设置重采样影像的仿射地理变换
ds_output.SetProjection(proj_refer) # 设置重采样影像的投影信息
5.执行重采样函数,将需要重采样的影像数据按照参考影像的空间参数写入新的栅格数据中。
在gdal.ReprojectImage函数中输入需要重采样的栅格数据集、输出路径、原始投影信息、目标投影信息、重采样方式、回调函数即可。
gdal.ReprojectImage(ds_resample, ds_output, proj_resample, proj_refer, gdal.GRA_Bilinear, 0.0, 0.0,)
# 输入数据集、输出数据集、输入投影、参考投影、重采样方法(最邻近内插\双线性内插\三次卷积等)、回调函数
6.完整代码:
所需输入的变量已经在代码中表明,可以自己修改相关路径。
def resample_images(path_refer, path_resample, out_path_resample): # 影像重采样
print("正在进行栅格重采样。。。")
"""
:param path_refer: 重采样参考文件路径
:param path_resample: 需要重采样的文件路径
:param out_path_resample: 重采样后的输出路径
"""
ds_refer = gdal.Open(path_refer, gdal.GA_ReadOnly) # 打开数据集dataset
proj_refer = ds_refer.GetProjection() # 获取投影信息
trans_refer = ds_refer.GetGeoTransform() # 获取仿射地理变换参数
band_refer = ds_refer.GetRasterBand(1) # 获取波段
width_refer = ds_refer.RasterXSize # 获取数据宽度
height_refer = ds_refer.RasterYSize # 获取数据高度
bands_refer = ds_refer.RasterCount # 获取波段数
ds_resample = gdal.Open(path_resample, gdal.GA_ReadOnly) # 打开数据集dataset
proj_resample = ds_resample.GetProjection() # 获取输入影像的投影信息
driver = gdal.GetDriverByName('GTiff') # 定义输出的数据资源
ds_output = driver.Create(out_path_resample, width_refer, height_refer, bands_refer, band_refer.DataType) # 创建重采样影像
ds_output.SetGeoTransform(trans_refer) # 设置重采样影像的仿射地理变换
ds_output.SetProjection(proj_refer) # 设置重采样影像的投影信息
gdal.ReprojectImage(ds_resample, ds_output, proj_resample, proj_refer, gdal.GRA_Bilinear, 0.0, 0.0,)
# 输入数据集、输出数据集、输入投影、参考投影、重采样方法(最邻近内插\双线性内插\三次卷积等)、回调函数
这里的重采样原理是将需要重采样的数据依据已有数据的格式类型写入新的栅格中,可以解决两个栅格空间位置对不齐,无法进行数组计算的问题。但是否能将栅格数据从高分辨率降低到低分辨率,或是低分辨率到高分辨率,博主无从得知。如果有小伙伴用上诉方法实现了这种操作,可以留言告诉我。
如果大家在学习Python或者RS时有什么问题,可以随时留言交流!如果大家对批量处理有兴趣同样可以留言给博主,博主会分享相关代码以供学习!
【Python&RS】GDAL对栅格数据重采样/对齐栅格的更多相关文章
- Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性
本文整体思路:在Python中使用Geopandas库,依次读取shp文件的每一个面状要素,获取其空间边界信息并裁剪对应的栅格影像,计算所裁剪影像Value值的众数,将其设置为对应面状要素的NewTY ...
- ArcEngine和GDAL读写栅格数据机制对比(一)
最近应用AE开发插值和栅格转等值线的程序,涉及到栅格读写的有关内容.联想到ArcGIS利用了GDAL的某些东西,从AE的OMD中也发现RasterDataset和RasterBand这些命名和GDAL ...
- Python ArcPy批量掩膜、重采样大量遥感影像
本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作. 首先,我们来明确一下本文的具体需求.现有一个存储有大量.tif格式遥感影像的文件夹:且其中除了 ...
- Unbuntu 18.04 LTS 环境下Python安装GDAL组件
Unbuntu 18.04 LTS 环境下Python安装GDAL组件 // 非必要 sudo add-apt-repository ppa:ubuntugis/ppa sudo apt-get up ...
- python gdal 读取栅格数据
1.gdal包简介 gdal是空间数据处理的开源包,其支持超过100种栅格数据类型,涵盖所有主流GIS与RS数据格式,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff) ...
- GDAL重投影重采样像元配准对齐
研究通常会涉及到多源数据,需要进行基于像元的运算,在此之前需要对数据进行地理配准.空间配准.重采样等操作.那么当不同来源,不同分辨率的数据重采样为同一空间分辨率之后,各个像元不一一对应,有偏移该怎么办 ...
- Python GDAL读取栅格数据并基于质量评估波段QA对指定数据加以筛选掩膜
本文介绍基于Python语言中gdal模块,对遥感影像数据进行栅格读取与计算,同时基于QA波段对像元加以筛选.掩膜的操作. 本文所要实现的需求具体为:现有自行计算的全球叶面积指数(LAI).t ...
- ArcEngine和GDAL读写栅格数据机制对比(二)—— IPixelBlock读写栅格
以下是设定一个矩形框,用IPixelBlock将256*256瓦片tile拼接成一个整块影像的代码,row1, col1, row2, col2是一个矩形框行列号范围.level是瓦片的金字塔等级.这 ...
- Python 利用GDAL对图像进行几何校正
原文链接:https://blog.csdn.net/qq_27045589/article/details/81062586 一.几何校正方法 图像校正本质是建立一种从原始图像行列号到某种投影的数学 ...
- Centos7.3 编译安装GDAL以及Python的GDAL包
参考: https://cryolite.iteye.com/blog/176382 https://blog.csdn.net/a13326021319/article/details/782505 ...
随机推荐
- ChatGPT3.5使用体验
优点 1.ChatGPT 能颠覆现有的搜索引擎(百度.谷歌). 2.ChatGPT 的交互体验非常好,满足"智能助手"这种工具. 3.如何使用好ChatCPT? 回到一个经典的问题 ...
- Delphi 论文阅读 Delphi: A Cryptographic Inference Service for Neural Networks
摘要 许多公司为用户提供神经网络预测服务,应用范围广泛.然而,目前的预测系统会损害一方的隐私:要么用户必须将敏感输入发送给服务提供商进行分类,要么服务提供商必须将其专有的神经网络存储在用户的设备上.前 ...
- Low-Code,一定“low”吗?
作者:京东保险 吴凯 前言 低代码是一组数字技术工具平台,基于图形化拖拽.参数化配置等更为高效的方式,实现快速构建.数据编排.连接生态.中台服务.通过少量代码或不用代码实现数字化转型中的场景应用创新. ...
- [Linux]CentOS7搭建/配置:YUM仓库/源[本地源/Web源(Apache HTTP(D))/自建源仓库]
若想搞懂整个配置过程和原理,就按照章节(1 / 2)一步一步地来. 若想直接一步到位,不想花过多时间,尽快配好,就直接看附件章节. 什么是yum源? Yum(全称为 Yellow dog Update ...
- [大数据]Hadoop简述
1 Hadoop:发展沿革 摘要:1个人(Doug Cutting).2个公司(Google.Cloudera) 1.1 渊源 Hadoop项目 最初开发者/创始者: Doug Cutting(道格· ...
- python从shp文件中读取经纬度数据
python从shp文件中读取经纬度数据 没有接触过GIS的人来说shp文件很陌生而且很难打开查看,好在python可以从中提取出自己想要的数据 pyshp库的安装 python的pyshp库可以实现 ...
- devops工具链基建建设评价标准
之所以写这篇是因为有朋友私下让我完善下基建建设的标准和四个阶梯划分,然后让我一定要把腾讯和百度加到基建建设的排名中(看热闹不嫌事大). 基建infra建设四个考察维度 1)工具链完整性:该有的工具是否 ...
- telnet命令安装
1.[root@pld3bomdb01 ~]# yum install telnet-server 2.[root@pld3bomdb01 ~]# rpm -qa telnet* telnet-ser ...
- Carla 自动驾驶仿真平台的安装与配置指南
简介 Carla 是一款基于 Python 编写和 UE(虚幻引擎)的开源仿真器,用于模拟自动驾驶车辆在不同场景下的行为和决策.它提供了高度可定制和可扩展的驾驶环境,包括城市.高速公路和农村道路等.C ...
- 下一代大数据分布式存储技术Apache Ozone初步研究
@ 目录 概述 定义 特性 架构 总体架构 写数据 读数据 部署 安装方式 安装 Docker启动 Docker-compose启动 企业预置型(On Premise)安装 实践 命令行接口 Ofs ...