Python空间数据处理1: GDAL读写遥感图像

gdal学习笔记2-数据读写 今天常识读写sentinel-2的数据。 先写上gdal支持的数据类型 GDT_Unknown : 未知数据类型 GDT_Byte : 8bit正整型 (C++中对应unsigned char) GDT_UInt16 : 16bit正整型 (C++中对应 unsigned short) GDT_Int16 : 16bit整型 (C++中对应 short 或 short int) GDT_UInt3... 阅读详情

GDAL是空间数据处理的开源包,支持多种数据格式的读写。遥感图像是一种带大地坐标的栅格数据,遥感图像的栅格模型包含以下两部分的内容:
栅格矩阵:由正方形或者矩形栅格点组成,每个栅格点所对应的数值为该点的像元值,在遥感图像中用于表示地物属性值;遥感图像有单波段与多波段,波段表示地物属性的种类,每个波段表示地物一种属性。

大地坐标:空间数据参考表示地图的投影信息;仿射矩阵能将行列坐标映射到面坐标上。

GDAL读写遥感数据的代码:

from osgeo import gdal
import os

class GRID:

<span class="hljs-comment">#读图像文件</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">read_img</span><span class="hljs-params">(self,filename)</span>:</span>
    dataset=gdal.Open(filename)       <span class="hljs-comment">#打开文件</span>

    im_width = dataset.RasterXSize    <span class="hljs-comment">#栅格矩阵的列数</span>
    im_height = dataset.RasterYSize   <span class="hljs-comment">#栅格矩阵的行数</span>

    im_geotrans = dataset.GetGeoTransform()  <span class="hljs-comment">#仿射矩阵</span>
    im_proj = dataset.GetProjection() <span class="hljs-comment">#地图投影信息</span>
    im_data = dataset.ReadAsArray(<span class="hljs-number">0</span>,<span class="hljs-number">0</span>,im_width,im_height) <span class="hljs-comment">#将数据写成数组,对应栅格矩阵</span>

    <span class="hljs-keyword">del</span> dataset 
    <span class="hljs-keyword">return</span> im_proj,im_geotrans,im_data

<span class="hljs-comment">#写文件,以写成tif为例</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">write_img</span><span class="hljs-params">(self,filename,im_proj,im_geotrans,im_data)</span>:</span>
    <span class="hljs-comment">#gdal数据类型包括</span>
    <span class="hljs-comment">#gdal.GDT_Byte, </span>
    <span class="hljs-comment">#gdal .GDT_UInt16, gdal.GDT_Int16, gdal.GDT_UInt32, gdal.GDT_Int32,</span>
    <span class="hljs-comment">#gdal.GDT_Float32, gdal.GDT_Float64</span>

    <span class="hljs-comment">#判断栅格数据的数据类型</span>
    <span class="hljs-keyword">if</span> <span class="hljs-string">'int8'</span> <span class="hljs-keyword">in</span> im_data.dtype.name:
        datatype = gdal.GDT_Byte
    <span class="hljs-keyword">elif</span> <span class="hljs-string">'int16'</span> <span class="hljs-keyword">in</span> im_data.dtype.name:
        datatype = gdal.GDT_UInt16
    <span class="hljs-keyword">else</span>:
        datatype = gdal.GDT_Float32

    <span class="hljs-comment">#判读数组维数</span>
    <span class="hljs-keyword">if</span> len(im_data.shape) == <span class="hljs-number">3</span>:
        im_bands, im_height, im_width = im_data.shape
    <span class="hljs-keyword">else</span>:
        im_bands, (im_height, im_width) = <span class="hljs-number">1</span>,im_data.shape 

    <span class="hljs-comment">#创建文件</span>
    driver = gdal.GetDriverByName(<span class="hljs-string">"GTiff"</span>)            <span class="hljs-comment">#数据类型必须有,因为要计算需要多大内存空间</span>
    dataset = driver.Create(filename, im_width, im_height, im_bands, datatype)

    dataset.SetGeoTransform(im_geotrans)              <span class="hljs-comment">#写入仿射变换参数</span>
    dataset.SetProjection(im_proj)                    <span class="hljs-comment">#写入投影</span>

    <span class="hljs-keyword">if</span> im_bands == <span class="hljs-number">1</span>:
        dataset.GetRasterBand(<span class="hljs-number">1</span>).WriteArray(im_data)  <span class="hljs-comment">#写入数组数据</span>
    <span class="hljs-keyword">else</span>:
        <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(im_bands):
            dataset.GetRasterBand(i+<span class="hljs-number">1</span>).WriteArray(im_data[i])

    <span class="hljs-keyword">del</span> dataset

if name == “main”:
os.chdir(r’D:\Python_Practice’) #切换路径到待处理图像所在文件夹
run = GRID()
proj,geotrans,data = run.read_img(‘LC81230402013164LGN00.tif’) #读数据
print proj
print geotrans
print data
print data.shape
run.write_img(‘LC81230402013164LGN00_Rewrite.tif’,proj,geotrans,data) #写数据

  • <li style=“color: rgb(153, 153, 153);”
    在GDAL遥感影像读写的基础上,我们可以进行遥感图像的各种公式计算和统计分析。
    例如我们所熟知的计算NDVI(归一化植被指数),只要在以上代码倒数第二行中插入代码:
    import numpy as np
    data = data.astype(np.float)
    ndvi = (data[3]-data[2])/(data[3]+data[2]) #3为近红外波段;2为红波段
    run.write_img(‘LC81230402013164LGN00_ndvi.tif’,proj,geotrans,ndvi) #写为ndvi图像
    当然,这是理想的NDVI,实际处理NDVI还会遇到一些其他要处理的问题。例如NDVI值应该在区间[-1,1]内,但实际中会出现大于1或小于-1的情况,或者某些像点是坏点,出现空值nan,需要进一步的配套处理

运用Python的第三方库:GDAL进行遥感数据的读写 文章目录0 背景及配置环境0.1 背景0.2 配置环境1 读1.1 TIFF数据2 写2.1 TIFF格式3 展示3.1 TIFF格式 0 背景及配置环境 0.1 背景  GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。 ... 阅读详情

相关推荐

python下GDAL库安装——以pycharm编译器为例

本文介绍从0开始搭建处理遥感图像的python编程环境。 一、Windows操作系统 确定自己的系统版本就行32位或者64位。 二、pycharm安装 PyCharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。 链接:https://www.run...

baidu_34785556的博客 1万+

python gdal 不同数据类型的表示范围

这些数据类型可以用于表示栅格数据集中的不同类型的像元值,根据实际需求选择适当的数据类型来存储和处理栅格数据。请注意,数据类型的表示范围是一种理论上的范围,实际使用时也要考虑数据的有效范围,以避免数据溢出或失真。

weixin_44806779的博客 2584

python/gdal处理遥感影像(读取、投影转换、裁剪、建立图像金字塔等)

python/gdal处理遥感影像(读取、投影转换、裁剪、建立图像金字塔等)gdal库简单介绍新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 gdal库简单介绍 gdal的全称含义是地理空间数据抽象库,是一个在X/MIT许

Smilelulinlin的博客 1万+

如何使用Python中的GDAL库对遥感影像进行读取和存储

与自然影像稍有不同,遥感影像一般有多个波段(波段数大于4),数据格式多为tiff,比如国产高分一号/二号遥感影像,多光谱影像有4个波段,分别为蓝(1)、绿(2)、红(3)以及近红外(4)波段,真彩色是321显示,假彩色是432显示。 利用遥感或GIS处理软件,如ENVI、ERDAS、ArcGIS等,可以很方便快捷地实现对图像进行读取、处理等操作。 然而,很多时候我们需要对大量的图像数据进行批量处理操作,这时候就需要我们自己编写代码来实现。这篇博客就简单地介绍,如何在Python中实现遥感影像的读取和存储

小E博客 1万+

python的GDAL基础1(GDAL、Rasterio、GeoPandas)

GDAL介绍GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据转换库,能够处理包括栅格和矢量在内的多种地理空间数据格式。GDAL支持超过100种数据格式,如GeoTIFF、JPEG2000、HDF5等,广泛应用于地理信息系统、遥感图像处理等领域。GDAL安装GDAL的安装方法因操作系统而异:Linux:使用包管理器安装,如Ubuntu上可以使用sudo apt-get install gdal-bin。

weixin_44217158的博客 2298

GDAL的python应用案例

GDAL的python应用案例

weixin_46713695的博客 1135

gdal 高光谱的一些参数

1、读文件 from osgeo import gdal def read_img(file_path): dataset = gdal.Open(file_path) # 打开文件 im_width = dataset.RasterXSize # 栅格矩阵的列数 im_height = dataset.RasterYSize # 栅格矩阵的行数 bands = dataset.RasterCount # 栅格矩阵的波段数 im_geotran

知识搬运者 1309

磁带库Scalar i6000界面基本操作步骤

(注:磁带库的前面的门不要打开,日常维护:主要就是简单看下磁带库的状态;绿色代表正常;黄色代表报警但不影响磁带库正常使用;红色代表报警,不能正常使用,及时和厂家联系报修。) 一、磁带库管理页面 1、首先,磁带库前面(具体作用如图) 2、查看状态和管理页面 3、管理页面登陆。用户名:service 密码:xxxxxx 4、磁带机背面 二、电脑连接磁带库进入管理页面 1.用网线把电脑和磁带库的维护接口(磁带库背面)进行连接 2.电脑环境:JAVA。把电脑的IP设置成自...

杀神lwz的博客 5359

python 读取geotiff_python gdal 写GeoTiff文件

1.gdal数据类型(1)GDT_Byte(int8) (2)GDT_UInt16 (3)GDT_Int16 (4)GDT_UInt32 (5)GDT_Int32 (6)GDT_Float32 (7)GDT_Float642.写GeoTiff文件from osgeo import gdal#读取某一类型的数据,需要先载入数据驱动,初始化一个对象driver = gdal.GetDriv...

weixin_30237677的博客 1619

易智联LM401模块学习(四)——双串口收发

串口的发送和接受有三种方式,分别是阻塞发送和接收(轮询)、中断方式发送和接收、DMA方式发送和接收。这里我使用阻塞+中断的方式实现双串口通信。简单的串口收发。

weixin_46046597的博客 991

自建邮局服务器| 批量邮件群发系统PowerMTA+oem(mumara,mailwizz, interspire)

世界顶级自建邮局服务器PowerMTA+oem(mumara,mailwizz, interspire) PowerMTA4.5(最好用的 群发邮件软件)是用于大批量多ip开发的邮件传递邮寄。可按每小时发送数近百万条电子邮件,发送IP地址和域可以详细配置,加上目前流行前端oem,mumara,mailwizz, interspire等,可定时发送,定时重复发送,实现全自动化 邮件群发 方案。 官网(powermta4.5下载) https://www.sparkpost.com/powermta/ 使用Po

ytrsexpo的博客 6505

Python空间数据处理: GDAL读写遥感图像

** Python空间数据处理: GDAL读写遥感图像 ** 添加链接描述 GDAL是空间数据处理的开源包,支持多种数据格式的读写。遥感图像是一种带大地坐标的栅格数据,遥感图像的栅格模型包含以下两部分的内容: 栅格矩阵:由正方形或者矩形栅格点组成,每个栅格点所对应的数值为该点的像元值,在遥感图像中用于表示地物属性值;遥感图像有单波段与多波段,波段表示地物属性的种类,每个波段表示地物一种属性。 大地坐标:空间数据参考表示地图的投影信息;仿射矩阵能将行列坐标映射到面坐标上。 GDAL读写遥感数据的代码: 插入链

z_823009251的博客 1671

把 ABAP 开发对象装进 XML 行李箱:SAPlink 安装、插件、升级与协作迁移全指南

SAPlink是一款用于在SAP NetWeaver系统间导入导出ABAP对象的工具,特别适合临时协作、系统孤岛等场景。它通过XML文件(Slinkee和Nugget两种格式)传输开发对象,支持插件扩展多种对象类型。安装时需注意版本兼容性、权限和激活流程,使用时要区分覆盖选项的风险。相比正式运输系统,SAPlink更适用于快速共享、原型交付等非生产场景,但需配合命名规范和协作策略确保可维护性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 156

python空间数据处理_Python空间数据处理之GDAL读写遥感图像

GDAL是空间数据处理的开源包,支持多种数据格式的读写。遥感图像是一种带大地坐标的栅格数据,遥感图像的栅格模型包含以下两部分的内容:栅格矩阵:由正方形或者矩形栅格点组成,每个栅格点所对应的数值为该点的像元值,在遥感图像中用于表示地物属性值;遥感图像有单波段与多波段,波段表示地物属性的种类,每个波段表示地物一种属性。大地坐标:空间数据参考表示地图的投影信息;仿射矩阵能将行列坐标映射到面坐标上。GDA...

weixin_39886024的博客 217

BART non-Cartesian 重建:并行成像 压缩感知

本文主要使用并行成像和压缩感知方法实现non-Cartesian MRI 数据的重建。

张哥频道:电生理信号和磁共振成像 1182

手把手教你学simulink(36.1)--ACAC变换器场景示例:基于 Simulink 的矩阵变换器(Matrix Converter)

矩阵变换器(Matrix Converter, MC)是一种直接将交流电(AC)转换为不同频率和幅值的交流电的电力电子设备。与传统的基于直流环节的变频器不同,矩阵变换器不需要中间的直流环节,而是通过双向开关直接在输入和输出之间进行能量传递。这种结构使得矩阵变换器具有更高的效率、更小的体积和更好的动态响应。在本项目中,我们将使用 MATLAB/Simulink 来建模和仿真一个矩阵变换器,并分析其性能。Simulink 是一个强大的仿真工具,特别适合用于电力电子系统的建模和仿真。

MHD0815的博客 1066

python gdal 重采样_Python空间数据处理之GDAL读写遥感图像

GDAL是空间数据处理的开源包,支持多种数据格式的读写。遥感图像是一种带大地坐标的栅格数据,遥感图像的栅格模型包含以下两部分的内容:栅格矩阵:由正方形或者矩形栅格点组成,每个栅格点所对应的数值为该点的像元值,在遥感图像中用于表示地物属性值;遥感图像有单波段与多波段,波段表示地物属性的种类,每个波段表示地物一种属性。大地坐标:空间数据参考表示地图的投影信息;仿射矩阵能将行列坐标映射到面坐标上。GDA...

weixin_29483277的博客 438

解锁PyCharm+Deepseek:本地部署AI编程超能力

在本次探索中,我们成功地在 PyCharm 中实现了 DeepSeek 的本地化部署,这一过程虽然涉及多个步骤,但每一步都为我们开启 AI 编程大门奠定了基础。从安装最新版 PyCharm,确保我们拥有一个功能强大且兼容性良好的开发环境,到注册 DeepSeek 账号并获取 API Key,这是连接我们与强大 AI 能力的关键纽带。接着,在 PyCharm 中安装 Continue 插件并进行精细配置,让 DeepSeek 能够深度融入我们的编程流程。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 5550

Python空间数据处理3: HDF格式转GDAL支持格式

HDF格式 一种能有条不紊 、完备地保存遥感影像的属性和空间信息数据 , 同时使查询和提取相关数据也很方便容易的数据格式格式。HDF格式是一种较为常见的遥感数据格式(例如MODIS、3B43降水数据),但GDAL暂时未能给HDF格式提供支持,需要PYHDF与GDAL交互,从而将HDF格式转换为GDAL支持的格式。PyHDF python处理HDF数据的开源包,笔者安装的pyhdf4(电脑配置WI

vonuo 3981

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

前程算法屋的博客 627

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python空间数据处理之GDAL读写遥感图像

GDAL是空间数据处理的开源包,支持多种数据格式的读写。遥感图像是一种带大地坐标的栅格数据,遥感图像的栅格模型包含以下两部分的内容: 栅格矩阵:由正方形或者矩形栅格点组成,每个栅格点所对应的数值为该点的像元值,在遥感图像中用于表示地物属性值;遥感图像有单波段与多波段,波段表示地物属性的种类,每个波段表示地物一种属性。 大地坐标:空间数据参考表示地图的投影信息;仿射矩阵能将行列坐标映射到面坐标上。 GDAL读写遥感数据的代码: from osgeo import gdal import os cl

sysun的专栏 869

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

c#写图像tif gdal_地质男转行学遥感Python—gdal读写数据初识

一、gdal介绍GDAL(Geospatial Data Abstraction Library)是一个读写空间数据(这里的空间数据包括栅格数据和矢量数据)的开源库。其最核心的两个功能:GDAL 提供对多种栅格数据的支持和OGR 提供对矢量数据格式的读写支持。具体支持的数据类型可以从官方文档中查询到。官方文档的链接:GDAL - GDAL documentation​gdal.org栅格数据(ra...

weixin_39965881的博客 232

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 程序和学习心得
下一篇: **python 读取 modis hdf文件**
good_learn
博客等级 码龄11年 195粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值