本文介绍基于Python中GDAL模块,实现基于一景栅格影像,对另一景栅格影像的像元数值加以叠加提取的方法。
本文期望实现的需求为:现有一景表示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
种不同植被类型分别对应的植被参数数值提取出来,并存放于不同的列表中;随后即可基于不同列表中的数据加以各项空间分析。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容