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

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

本文期望实现的需求为:现有一景表示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种不同植被类型分别对应的植被参数数值提取出来,并存放于不同的列表中;随后即可基于不同列表中的数据加以各项空间分析。

相关推荐
数据智能老司机3 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机4 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机4 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机4 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i4 小时前
drf初步梳理
python·django
每日AI新事件4 小时前
python的异步函数
python
这里有鱼汤5 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook15 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室15 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三16 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试