Python遥感影像叠加分析:基于一景数据提取另一数据

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

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

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

python 复制代码
# -*- 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种不同植被类型分别对应的植被参数数值提取出来,并存放于不同的列表中;随后即可基于不同列表中的数据加以各项空间分析。

相关推荐
不是万能的豆学长19 小时前
filetidy 文件整理助手:一键归类 + 规范重命名(Python 零依赖单文件工具)
大数据·开发语言·python·技术美术
gCode Teacher 格码致知20 小时前
Pandas教学-18:number与numeric的区别
python·pandas
梦想不只是梦与想1 天前
Python 中subprocess 模块:执行外部命令
python·subprocess·调用外部命令
懂点Tech1 天前
ctfshow MISC入门图片篇(信息附加):misc41解题思路
开发语言·python
爱上纯净的蓝天1 天前
不用云做 RAG:一个本地笔记问答工具的取舍与坑
python·开源·大模型·rag·本地部署
cspttty1 天前
2027风险管理岗准备路线:数学与应用数学如何补齐金融、SQL与Python
开发语言·python·金融
用户8356290780511 天前
如何使用 Python 格式化 Excel 单元格中的长文本
后端·python
我命由我123451 天前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
严谨的麻辣烫1 天前
Python HTTP 连接池怎么用?从连接复用到请求异常排查
开发语言·python·http·requests·网络排查
摇滚侠1 天前
《Java并发编程之美》第 4 章 Java 并发包中原子操作类原理剖析 阅读笔记 7
java·笔记·python