本文介绍基于PythonGDAL模块,实现基于一景栅格影像,对另一景栅格影像的像元数值加以叠加提取的方法。

  本文期望实现的需求为:现有一景表示6种不同植被类型.tif格式栅格数据,以及另一景与前述栅格数据同区域的、表示植被参数.tif格式栅格数据;我们希望基于前者中的植被类型数据,分别提取6种不同植被类型的植被参数数值。这里需要注意,两景栅格影像的行数、列数也都是一致的。

  了解了具体需求后,我们即可开始代码的实践;本文用到的具体代码如下所示。

# -*- coding: utf-8 -*-
"""
Created on Thu Dec 1 16:56:26 2022 @author: fkxxgis
""" from osgeo import gdal vt_file_path = "E:/LC_M/data/LC.tif"
lcc_file_path = "E:/LC_M/data/LC_Clip.tif" vt_raster = gdal.Open(vt_file_path)
vt_array = vt_raster.ReadAsArray()
lcc_raster = gdal.Open(lcc_file_path)
lcc_array = lcc_raster.ReadAsArray() raster_row, raster_col = vt_array.shape
li_1, li_2, li_3, li_4, li_5, li_6 = [ [] for i in range(6)] for i in range(raster_row):
for j in range(raster_col):
if vt_array[i][j] == 1 and lcc_array[i][j] != 0:
li_1.append(lcc_array[i][j])
elif vt_array[i][j] == 2 and lcc_array[i][j] != 0:
li_2.append(lcc_array[i][j])
elif vt_array[i][j] == 3 and lcc_array[i][j] != 0:
li_3.append(lcc_array[i][j])
elif vt_array[i][j] == 4 and lcc_array[i][j] != 0:
li_4.append(lcc_array[i][j])
elif vt_array[i][j] == 5 and lcc_array[i][j] != 0:
li_5.append(lcc_array[i][j])
elif vt_array[i][j] == 6 and lcc_array[i][j] != 0:
li_6.append(lcc_array[i][j])

  其中,vt_file_path为表示植被类型的栅格数据,lcc_file_path为表示植被参数的栅格数据。

  代码的整体思路其实也非常简单,首先通过gdal.Open()函数与.ReadAsArray()函数,分别读取两个栅格数据,并将两个栅格数据中的像元数值信息转换为数组格式;随后,因为表示不同植被类型.tif格式栅格数据共有6种不同的像元数值,因此我们通过[] for i in range(6)这句代码,批量创建6个空的列表,用于存放6种不同植被类型分别对应的植被参数数值;接下来,同时遍历两个栅格数据,并基于表示不同植被类型.tif格式栅格数据的像元数值,将表示植被参数.tif格式栅格数据的像元数值依次提取、放入不同的列表中。

  这里有一点需要注意,因为在表示植被参数.tif格式栅格数据中0为无效值,因此在提取时,加了一个是否为0的判断;这一点大家在实际应用时结合自己的需求加以修改即可。

  通过上述代码,我们即可将6种不同植被类型分别对应的植被参数数值提取出来,并存放于不同的列表中;随后即可基于不同列表中的数据加以各项空间分析。

Python遥感影像叠加分析:基于一景数据提取另一数据的更多相关文章

  1. Python GDAL读取栅格数据并基于质量评估波段QA对指定数据加以筛选掩膜

      本文介绍基于Python语言中gdal模块,对遥感影像数据进行栅格读取与计算,同时基于QA波段对像元加以筛选.掩膜的操作.   本文所要实现的需求具体为:现有自行计算的全球叶面积指数(LAI).t ...

  2. Python gdal读取MODIS遥感影像并结合质量控制QC波段掩膜数据

      本文介绍基于Python中GDAL模块,实现MODIS遥感影像数据的读取.计算,并基于质量控制QC波段进行图像掩膜的方法.   前期的文章Python GDAL读取栅格数据并基于质量评估波段QA对 ...

  3. Python爬虫教程-18-页面解析和数据提取

    本篇针对的数据是已经存在在页面上的数据,不包括动态生成的数据,今天是对HTML中提取对我们有用的数据,去除无用的数据 Python爬虫教程-18-页面解析和数据提取 结构化数据:先有的结构,再谈数据 ...

  4. Python核对遥感影像批量下载情况的方法

      本文介绍批量下载遥感影像时,利用Python实现已下载影像文件的核对,并自动生成未下载影像的下载链接列表的方法.   批量下载大量遥感影像数据对于GIS学生与从业人员可谓十分常见.然而,对于动辄成 ...

  5. Python ArcPy批量掩膜、重采样大量遥感影像

      本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作.   首先,我们来明确一下本文的具体需求.现有一个存储有大量.tif格式遥感影像的文件夹:且其中除了 ...

  6. 基于GDAL的遥感影像显示(C#版)

    基于GDAL的遥感影像显示(C#版) - 菜菜的专栏 - 博客频道 - CSDN.NET  http://blog.csdn.net/RSyaoxin/article/details/9220735

  7. 基于VC++ Win32+CUDA+OpenGL组合与VC++ MFC SDI+CUDA+OpenGL组合两种方案的遥感影像显示:获得的重要结论!

    1.基于VC++ Win32+CUDA+OpenGL组合的遥感影像显示 在该组合方案下,初始化时将OpenGL设置为下面两种方式,效果一样 //设置方式1 glutInitDisplayMode (G ...

  8. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  9. 深度学习遥感影像(哨兵2A/B)超分辨率

    这段时间,用到了哨兵影像,遇到了一个问题,就是哨兵影像,它的RGB/NIR波段是10米分辨率的,但是其他波段是20米和60米的,这就需要pansharpening了,所以我们需要设计一种算法来进行解决 ...

  10. 遥感影像和DEM数据获取处理、GeoServer切片发布并使用Cesium加载

    1. 数据获取 笔者这里使用的是哨兵一号(Sentinel-1).ALOS的遥感影像和ALOS的DEM数据 下载地址为:ASF Data Search (alaska.edu) ASF(Alaska ...

随机推荐

  1. [FE] yarn, npm 切换镜像源

    yarn 设置命令如下,会修改 ~/.yarnrc 内容. $ yarn config set registry https://registry.yarnpkg.com npm 设置命令如下,会修改 ...

  2. Roslyn 将构建时间写入到输出文件

    我期望在每次构建完成之后,创建一个文件,在这个文件里面写入是什么时间构建的.这个需求实现非常简单,只需要使用 Target 在构建完成,使用 WriteLinesToFile 方法写入时间到输出文件即 ...

  3. Prometheus+Grafana+alertmanager构建企业级监控系统(二)

    二.可视化UI界面Grafana的安装和配置 2.1 Grafana介绍 Grafana 是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通 知给告警接收方.它主要有以下 ...

  4. Ansible的yaml文件

    ansible提供的脚本,遵循规范yaml(一般用于写配置文件) 可用于配制文件的语言:yaml.xml.json - 冒号后面必须有空格 - 横线后面必须要空格 - 严格保持对齐 - 等号前面不能有 ...

  5. CINN 中子图编译缓存机制

    采用 「问-答」形式记录研读 CINN 开源框架的笔记 Q:CINN中子图编译的入口是在哪里? for (const auto& node_vec : clusters) { // <- ...

  6. Seata原理浅析

    前言 Seata是阿里开源的分布式事务解决方案,本文将详细介绍 Seata 的事务模式.原理以及使用.了解之前需清楚什么是分布式事务. 一.什么是 Seata Seata 是一款开源的分布式事务解决方 ...

  7. Vue3 项目

    创建 Vue3 项目的步骤如下: 安装 Node.js Vue3 需要依赖 Node.js 环境,因此需要先安装 Node.js.可以从官网下载 Node.js 的安装包并安装,也可以使用包管理器安装 ...

  8. git使用其它

    创建目录 切换到本地新建的dev分支,目录下还是这个目录下的文件.我push一下,指定推送到dev分支,那么dev分支就在远程仓库同步创建,并且文件也是本地这个目录下的文件,一样的. 好像得改个名字才 ...

  9. 添加身份认证和鉴权方案-使用jwtbearer

    HTTP身份认证框架 RFC 7235 定义了一个 HTTP 身份验证框架,服务器可以用来质询(challenge)客户端的请求,客户端则可以提供身份验证凭据. 服务端开启了身份认证后.如果客户端访问 ...

  10. layui表格内可编辑下拉框

    表格内可编辑下拉框扩展自别人的表格内下拉框 一.列模板,这是列配置的templet字段需要使用的. 1.inputdiv,输入框覆盖在下拉框上面左半部.这个样式用来调整输入框和下拉框不会超出单元格. ...