我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

基于Python GDAL模块实现栅格影像数据提取与叠加

来源:网络 更新时间:2024-06-17 15:31:02

本文介绍了如何利用Python中的GDAL模块,实现对栅格影像数据的提取和叠加。具体需求是基于一幅表示6种不同植被类型的栅格数据和另一幅表示植被参数的栅格数据,提取出6种不同植被类型对应的植被参数数值。

首先,我们需要两幅栅格数据,一幅表示植被类型,另一幅表示植被参数。这两幅栅格数据的行数和列数必须一致。

接下来,我们将介绍具体的代码实现。代码中使用了GDAL模块,具体代码如下所示:

# -*- 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() 函数读取两个栅格数据,并将其转换为数组格式。然后,根据表示不同植被类型的栅格数据的像元数值,将表示植被参数的栅格数据的像元数值提取并放入不同的列表中。

需要注意的是,在表示植被参数的栅格数据中,0为无效值,因此在提取时需要加入是否为0的判断。这一点在实际应用中可以根据需求进行修改。

通过上述代码,我们可以提取出6种不同植被类型对应的植被参数数值,并存放于不同的列表中。接下来,可以基于这些数据进行各项空间分析。