Python ArcPy批量计算多时相遥感影像的各项元平均值
本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取。
在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取——这一操作很好实现,基于ArcMap软件或者简单的Python代码就可以实现;但有时候,我们会需要结合同一地区、不同时相的多景遥感影像,求取每一个像元在全部时相中像素值的平均值——这一需求的实现较之前者就有些麻烦,本文对此加以介绍。
首先,我们来明确一下本文的具体需求。现有一个存储有大量.tif
格式遥感影像的文件夹,其中每一个遥感影像的文件名中都包含有该图像的成像时间,如下图所示。且其中除了.tif
格式的遥感影像文件外,还具有其它格式的文件。
(资料图片)
我们希望,对于同一年成像的遥感影像进行逐像元平均值的求取。例如,上图中具有2001
年第185
天成像、第193
天成像、第201
天成像……等等遥感影像8
幅,每一幅都是这一年不同时间在同一空间位置的成像;同时,还有2005
年不同时间成像的遥感影像9
幅。我们希望,首先将2001
年成像的8
幅遥感影像加以逐像元平均值的求取,即求取每一个像元在这8景图像中像素值的平均;随后再对2005
年成像的9
幅遥感影像加以逐像元平均值的求取,以此类推。
明确了需求后,我们就可以开始具体的操作。首先,本文所需用到的代码如下。
# -*- coding: utf-8 -*-"""Created on Sat Apr 16 10:48:37 2022@author: fkxxgis"""import arcpyfrom arcpy.sa import *tif_file_path="E:/LST/Data/MODIS/05_Resample/"average_file_path="E:/LST/Data/MODIS/06_Average/"arcpy.env.workspace=tif_file_pathtif_file_name=arcpy.ListRasters("*","tif")tif_file_year=tif_file_name[0][0:4]one_year_tif_list=[]sum_pic=0for tif_file in tif_file_name: if tif_file[0:4]==tif_file_year: one_year_tif_list.append(tif_file) tif_file_temp=tif_file if tif_file==tif_file_name[len(tif_file_name)-1]: pic_num=len(one_year_tif_list) for tif_file_new in one_year_tif_list: sum_pic=sum_pic+Raster(tif_file_new) (sum_pic/pic_num).save(average_file_path+tif_file_year+"_Ave.tif") else: pic_num=len(one_year_tif_list) for tif_file_new in one_year_tif_list: sum_pic=sum_pic+Raster(tif_file_new) (sum_pic/pic_num).save(average_file_path+tif_file_year+"_Ave.tif") one_year_tif_list=[] sum_pic=0 one_year_tif_list.append(tif_file) tif_file_year=tif_file[0:4]
其中,tif_file_path
是原有计算平均值前遥感图像的保存路径,average_file_path
是我们新生成的求取平均值后遥感影像的保存路径,也就是结果保存路径。
在这里,和我们前期的博客Python ArcPy批量拼接长时间序列栅格图像类似,需要首先在资源管理器中,将tif_file_path
路径下的各文件以“名称”排序的方式进行排序;随后,利用arcpy.ListRasters()
函数,获取路径下原有的全部.tif
格式的图像文件,并截取第一个文件的部分文件名,从而获取其成像时间的具体年份。
接下来,遍历tif_file_path
路径下全部.tif
格式图像文件。其中,我们通过一个简单的判断语句if tif_file[0:4]==tif_file_year:
,来确定某一年的遥感影像是否已经读取完毕——如果已经读取完毕,例如假如2001
年成像的8幅遥感影像都已经遍历过了,那么就对这8景遥感影像加以逐像元的平均值求取,并开始对下一个年份(即2005
年)成像的遥感影像继续加以计算;如果还没有读取完毕,例如假如2001
年成像的8幅遥感影像目前仅遍历到了第5幅,那么就不求平均值,继续往下遍历,直到遍历完2001
年成像的8幅遥感影像。
这里相信大家也看到了为什么我们要在前期先将文件夹中的文件按照“名称”排序——是为了保证同一年成像的所有遥感影像都排列在一起,遍历时只要遇到一个新的年份,程序就知道上一个年份的所有图像都已经遍历完毕了,就可以将上一个年份的所有栅格图像加以平均值求取。
在这里,逐像元的平均值求取其实也非常简单——我们对每一个像元分别执行以下操作:首先将该像元在当前年份里所有遥感影像的像素值相加,随后除以这一年份的遥感影像的数量,得到的就是该像元在这一年中像素值的平均值。
最后,通过if tif_file==tif_file_name[len(tif_file_name)-1]:
这个判断,来确认是否目前已经遍历到文件夹中的最后一个图像文件。如果是的话,就需要将当前成像年份的所有图像进行平均值的求取,并宣告代码完成运行。
在 IDLE (Python GUI)中运行代码。代码运行完毕后,我们看一下结果文件夹。可以看到,其中的图像已经是按照成像时间,分别完成平均值求取后的结果了。
在最后,还需要说明一点——用以上代码来求取长时间序列遥感影像的像元平均值,对于任意一个像元,只要该像元在任意一个时相的图像中是无效值(即为NoData),那么该像元在最终求出的平均值结果图中,像素值也将会是无效值NoData。针对这一问题的解决,我们将在下一篇博客中介绍。
关键词:
-
Python ArcPy批量计算多时相遥感影像的各项元平均值
2023-04-18 -
2023天津线上房交会20日开幕 当前讯息
2023-04-18 -
屈和伸运动示意图 文乃和伸太郎什么关系
2023-04-18 -
天天观热点:王思聪好不好_王思聪人品怎么样
2023-04-18 -
厦金“小三通”复航百日 出入境旅客近4.5万人次_新动态
2023-04-18 -
带有 LTE 调制解调器和前置摄像头的新 Fitbit 智能手表泄漏
2023-04-18 -
当前快播:城际是什么意思_cj是什么意思
2023-04-18 -
热河省是现在哪个省 热河省历史 环球今头条
2023-04-18 -
新时代 新征程 新伟业 主题采访活动丨中寨寻味:满树枇杷甜如蜜,想买就找杨大哥!
2023-04-18 -
天天快播:科伦药业:未来男科领域值得期待
2023-04-18 -
警惕!胃癌早期症状不明显,这些是高危人群
2023-04-18 -
世界观天下!一季度GDP同比增长4.5%,专家:全年5%的增速目标,不难了
2023-04-18 -
每日看点!农行信用卡还不起有什么后果?会被起诉吗?
2023-04-18 -
工信部发布免征车辆购置税的新能源汽车车型目录(第六十四批 速看料
2023-04-18 -
环球今日报丨2023WTT澳门冠军赛:黄镇廷晋级十六强
2023-04-18 -
导致离婚的几种情形(一)
2023-04-18 -
售价仅10元,辽宁鞍山一羊汤馆摆2瓶过期果汁被罚5万,市监局回应
2023-04-18 -
迪尔化工今日上市;民士达打新获配比例0.71%;凯德石英接待23家机构调研
2023-04-18 -
佳都科技(600728):4月17日北向资金减持110.62万股
2023-04-18 -
速看:如何给棉织物上光
2023-04-18 -
热议:首档全女推理综艺定档,戚薇张雨绮李雪琴加盟《女子推理社》
2023-04-18 -
内分泌失调有什么症状怎么调理_内分泌失调有什么症状-世界热文
2023-04-18 -
速讯:前列腺挂什么科室检查项目 前列腺挂什么科室
2023-04-17 -
任兴集团被警示:涉关联交易披露不完整等
2023-04-17 -
【天天播资讯】“牛市旗手”嗨了!顶流券商ETF基金经理火速解读
2023-04-17 -
感冒头痛怎么办(怀孕了感冒头痛怎么办) 世界新消息
2023-04-17 -
一汽丰田|电动化转型“破局者”,bZ3正式上市
2023-04-17 -
【天天新视野】华为手机解锁bootloader_手机命令reboot to bootloader的使用定义说明
2023-04-17 -
watchOS 10即将登场!Gurman:苹果手表迎来史上最大软件更新 当前消息
2023-04-17 -
腾讯视频怎么打开弹幕电脑_腾讯视频怎么打开弹幕
2023-04-17
-
守住网络直播的伦理底线
2021-12-16 -
石窟寺文化需要基于保护的“新开发”
2021-12-16 -
电影工作者不能远离生活
2021-12-16 -
提升隧道安全管控能力 智慧高速让司乘安心
2021-12-16 -
人民财评:提升消费体验,服务同样重要
2021-12-16 -
卫冕?突破?旗手?——武大靖留给北京冬奥会三大悬念
2021-12-16 -
新能源车险专属条款出台“三电”系统、起火燃烧等都可保
2021-12-16 -
美术作品中的党史 | 第97集《窗外》
2021-12-16 -
基金销售业务违规!浦发银行厦门分行等被厦门证监局责令改正
2021-12-16 -
保持稳定发展有支撑——从11月“成绩单”看中国经济走势
2021-12-16