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

python · 浏览次数 : 0

小编点评

本文介绍了一种基于Python中GDAL模块的方法,用于叠加提取两景栅格影像中相同区域的不同植被类型的像元数值。文章首先描述了需求,即一景表示6种不同植被类型的.tif格式栅格数据和另一景表示植被参数的.tif格式栅格数据。接着,文章详细说明了实现方法,包括使用gdal.Open()和ReadAsArray()函数读取栅格数据,创建列表存放不同植被类型的植被参数数值,以及遍历两个栅格数据并提取对应植被参数数值的过程。最后,文章提醒注意实际应用中可能需要根据需求对代码进行修改。 1. **需求描述**: - 一景为6种不同植被类型的.tif格式栅格数据。 - 另一景为与前述数据同区域、表示植被参数的.tif格式栅格数据。 2. **实现方法**: - 使用gdal.Open()函数打开植被类型栅格数据文件,使用ReadAsArray()函数读取数据并转为数组。 - 使用gdal.Open()函数打开植被参数栅格数据文件,使用ReadAsArray()函数读取数据并转为数组。 - 创建6个空列表,用于存放6种不同植被类型对应的植被参数数值。 - 遍历两个栅格数据,根据像元数值将植被参数数值存入相应列表。 3. **注意事项**: - 要注意区分有效值(如植被类型)和无效值(如0)。 - 根据实际应用需求,可能需要对代码进行适当修改。 总的来说,文章展示了一种利用GDAL模块对栅格数据进行处理的实用方法,能够有效地从两组栅格数据中提取和叠加特定植被类型的参数数值。

正文

  本文介绍基于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遥感影像叠加分析:基于一景数据提取另一数据相似的内容:

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

本文介绍基于Python中GDAL模块,实现基于一景栅格影像,对另一景栅格影像的像元数值加以叠加提取的方法。 本文期望实现的需求为:现有一景表示6种不同植被类型的.tif格式栅格数据,以及另一景与前述栅格数据同区域的、表示植被参数的.tif格式栅格数据;我们希望基于前者中的植被类型数据,分别提取6种

Python依据遥感影像的分幅筛选出对应的栅格文件

本文介绍基于Python语言,结合已知研究区域中所覆盖的全部遥感影像的分幅条带号,从大量的遥感影像文件中筛选落在这一研究区域中的遥感影像文件的方法~

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

本文介绍批量下载遥感影像时,利用Python实现已下载影像文件的核对,并自动生成未下载影像的下载链接列表的方法~

Python批量绘制遥感影像数据的直方图

本文介绍基于Python中gdal模块,实现对大量栅格图像批量绘制直方图的方法~

Python批量填补遥感影像的无效值NoData

本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件批量进行无效值(NoData值)填充的方法~

QGIS中下载遥感影像的Python代码片段

本文主要记录一些使用QGIS Desktop来实现下载在线遥感影像的步骤和Python代码片段

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

本文介绍基于Python中GDAL模块,实现MODIS遥感影像数据的读取、计算,并基于质量控制QC波段进行图像掩膜的方法~

HDF格式遥感影像批量转为TIFF格式:ArcPy实现

本文介绍基于Python中ArcPy模块,实现大量HDF格式栅格图像文件批量转换为TIFF格式的方法~

Python ArcPy批量计算多时相遥感影像的各像元平均值

本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取~

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

本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作~