我们提供安全,免费的手游软件下载!
本文介绍了如何利用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种不同植被类型对应的植被参数数值,并存放于不同的列表中。接下来,可以基于这些数据进行各项空间分析。
热门资讯