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

这篇具有很好参考价值的文章主要介绍了Python ArcPy批量计算多时相遥感影像的各项元平均值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

  在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取——这一操作很好实现,基于ArcMap软件或者简单的Python代码就可以实现;但有时候,我们会需要结合同一地区、不同时相多景遥感影像,求取每一个像元全部时相中像素值的平均值——这一需求的实现较之前者就有些麻烦,本文对此加以介绍。

  首先,我们来明确一下本文的具体需求。现有一个存储有大量.tif格式遥感影像的文件夹,其中每一个遥感影像的文件名中都包含有该图像的成像时间,如下图所示。且其中除了.tif格式的遥感影像文件外,还具有其它格式的文件。

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

  我们希望,对于同一年成像的遥感影像进行逐像元平均值的求取。例如,上图中具有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 arcpy
from 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_path

tif_file_name=arcpy.ListRasters("*","tif")
tif_file_year=tif_file_name[0][0:4]
one_year_tif_list=[]
sum_pic=0

for 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) 中运行代码。代码运行完毕后,我们看一下结果文件夹。可以看到,其中的图像已经是按照成像时间,分别完成平均值求取后的结果了。

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

  在最后,还需要说明一点——用以上代码来求取长时间序列遥感影像的像元平均值,对于任意一个像元,只要该像元在任意一个时相的图像中是无效值(即为NoData),那么该像元在最终求出的平均值结果图中,像素值也将会是无效值NoData。针对这一问题的解决,我们将在下一篇博客中介绍。文章来源地址https://www.toymoban.com/news/detail-417568.html

到了这里,关于Python ArcPy批量计算多时相遥感影像的各项元平均值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

      本文介绍基于 Python 中 ArcPy 模块,对大量栅格遥感影像文件 批量 进行 无效值 ( NoData 值)填充的方法。   在处理栅格图像文件时,我们经常会遇到图像中存在有无效值(即 NoData 值)的情况。如下图所示,这里有一个 矢量面要素图层 和该矢量图层范围对应的一景 栅

    2024年02月07日
    浏览(42)
  • Argis通过Python的Arcpy第三方库进行字段计算、批量将mxd导出为jpg图片、合并数据库

    前言   近来公司有开发Arcgis脚本工具的需求,我就去学了一下用Arcpy来操作Arcgis的数据,今天学习了字段计算,将学习成果记录如下。   arcpy帮助文档传送门:https://resources.arcgis.com/zh-cn/help/main/10.2/ 一、字段计算 1、以python函数的形式进行字段计算   我们打开字段计算

    2024年02月11日
    浏览(37)
  • Python地理数据处理 22:基于arcpy批量操作(四)

    代码描述:遍历a文件夹下的所有tif影像,并使用每个a文件夹中的tif影像对b文件夹下的所有tif影像进行裁剪。裁剪后的栅格将以两个tif文件进行组合命名,并保存到另一个文件夹中。 获取栅格数据的平均值,并输出程序运行进度: 程序运行进度: 某文件夹中包含多个子文件

    2024年02月04日
    浏览(46)
  • Python地理数据处理 二十一:基于arcpy批量操作(三)

    实现将给定的 .shp 文件中的所有省份作为裁剪范围,对给定的 .tif 文件进行裁剪,输出所有省份的单独 .tif 文件: 实现对文件名前14个字符一样的tif图像进行栅格运算求和: 如:XXXX_XXX_2003.M01_Mean、XXXX_XXX_2003.M02_Mean、XXXX_XXX_2003.M03_Mean;XXXX_XXX_2004.M01_Mean、XXXX_XXX_2004.M02_Mean、

    2024年02月01日
    浏览(49)
  • 基于python与GDAL获取遥感影像

    最近做项目,发现网上关于利用python与GDAL读取遥感影像数据的资料比较少。因此整理了一些,以方便自己学习。      1.首先确认自己电脑上安装好python版的GDAL库。这个会以后有时间慢慢整理。       2. 导入gdal库          from osgeo import gdal       3. 注册GDAL库   

    2023年04月25日
    浏览(45)
  • 遥感影像/无人机航片的空间分辨率GSD计算推导

    参考资料1 参考资料2-地面分辨率,空间分辨率(GSD为地面采样间隔) GSD:无人机/遥感卫星的空间分辨率,指航片/遥感影像一个像素点代表的空间距离。 IFoV:单个像素代表的空间范围。 幅宽:成像的画面所对应的空间距离。 如何通过无人机的飞行高度、镜头参数计算GSD、幅宽

    2024年02月08日
    浏览(79)
  • 【Python&RS】基于GDAL镶嵌拼接遥感影像

            没啥好说的,处理高分辨率影像时,数据高达几十G。用ENVI或者ArcGIS进行影像的拼接时,往往会出现未响应的情况。出现未响应的话,运气好等个一晚上可能会动一动,运气不好就等着强制关闭重做吧。         所以搞了一个Python进行拼接操作的代码,虽然速度不

    2024年02月02日
    浏览(44)
  • Python实现snap:对齐多张遥感影像的空间范围

      本文介绍基于 Python 中 ArcPy 模块,实现基于 栅格图像 批量裁剪 栅格图像 ,同时 对齐 各个栅格图像的 空间范围 , 统一 其各自 行数 与 列数 的方法。   首先明确一下我们的需求。现有某一地区的多张栅格遥感影像,其虽然都大致对应着同样的地物范围,但不同栅格

    2024年03月09日
    浏览(54)
  • 遥感影像的缨帽(K-T)变换Python实现

    缨帽变换(Kirchhoff Transform,K-T变换) 是一种在遥感图像处理中常用的技术,它可以有效地提取地物的空间特征和频谱信息。本文将对遥感缨帽变换的提出者、原理方法、公式、现在的发展、作用进行详细介绍,并附有相应的图解。 TM影像的前三个分量的物理意义: ●亮度:

    2024年02月11日
    浏览(41)
  • (五)Landat_5 TM 遥感影像计算NDVI、MNDWI、NDBI以及地表温度反演

    所谓植被指数,就是利用多波段遥感图像的可见光波段以及近红外波段相组合,形成能够反映突出植被分布状况和强度的指数。植被指数的求解方法不唯一,定义的植被指数已经多达50多种。通过红波段以及近红外波段,可以有效的消除大气对植被指数的影响。 公式: NDVI=(

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包