ArcPy批量对大量遥感影像相减做差
本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件批量进行相减做差的方法。
首先,我们来明确一下本文的具体需求。现有一个存储有多张.tif格式遥感影像的文件夹,其中每一个遥感影像的文件名中都包含有该图像的成像年份,且每一个遥感影像的空间范围、像元大小等都是一致的,可以直接进行栅格相减;且文件夹内除了.tif格式的遥感影像文件外,还具有其它格式的文件;如下图所示。

我们希望,对于同一年成像的两景遥感影像分别进行做差处理。例如,将上图中的2001.tif文件减去2001_N.tif文件,将2005.tif文件减去2005_N.tif文件,以此类推。
明确了需求后,我们就可以开始具体的操作。首先,本文所需用到的代码如下。
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 24 11:12:37 2022
@author: fkxxgis
"""
import arcpy
tif_file_path="E:/LST/Data/MODIS/16_True/"
dif_file_path="E:/LST/Data/MODIS/17_Difference/"
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=[]
for tif_file in tif_file_name:
if tif_file[0:4]==tif_file_year:
one_year_tif_list.append(tif_file)
if tif_file==tif_file_name[len(tif_file_name)-1]:
arcpy.gp.Minus_sa(one_year_tif_list[0],
one_year_tif_list[1],
dif_file_path+tif_file_year+"_Dif.tif")
else:
arcpy.gp.Minus_sa(one_year_tif_list[0],
one_year_tif_list[1],
dif_file_path+tif_file_year+"_Dif.tif")
one_year_tif_list=[]
one_year_tif_list.append(tif_file)
tif_file_year=tif_file[0:4]
其中,tif_file_path是原有计算平均值前遥感图像的保存路径,dif_file_path是我们新生成的求取平均值后遥感影像的保存路径,也就是结果保存路径。
在这里,和我们前期的博客Python ArcPy批量拼接长时间序列栅格图像类似,需要首先在资源管理器中,将tif_file_path路径下的各文件以“名称”排序的方式进行排序;随后,利用arcpy.ListRasters()函数,获取路径下原有的全部.tif格式的图像文件,并截取第一个文件的部分文件名,从而获取其成像时间的具体年份。
接下来,遍历tif_file_path路径下全部.tif格式图像文件。其中,我们通过一个简单的判断语句if tif_file[0:4]==tif_file_year:,来确定某一年的遥感影像是否已经读取完毕——如果已经读取完毕,例如假如2001年成像的2幅遥感影像都已经遍历过了,那么就对这2景遥感影像做差,并开始对下一个年份(即2005年)成像的2景遥感影像继续加以计算;如果还没有读取完毕,例如假如2001年成像的2幅遥感影像目前仅遍历了第1幅,那么就不做差,继续往下遍历,直到遍历完2001年成像的2幅遥感影像。
这里相信大家也看到了为什么我们要在前期先将文件夹中的文件按照“名称”排序——首先,是为了保证同一年成像的2景遥感影像都排列在一起,遍历时只要遇到一个新的年份,程序就知道上一个年份的2张图像都已经遍历完毕了,就可以将上一个年份的2张栅格图像加以做差;其次,是为了保证我们的被减数(例如2005.tif文件)排在减数(例如2005_N.tif文件)的前面,从而方便我们进行做差运算。
在这里,我们实现两张栅格遥感影像相减操作的函数是arcpy.gp.Minus_sa()函数,其第一个参数是被减数,第二个参数是减数,第三个参数是结果保存路径与名称。
最后,通过if tif_file==tif_file_name[len(tif_file_name)-1]:这个判断,来确认是否目前已经遍历到文件夹中的最后一个图像文件。如果是的话,就需要将当前成像年份的2景图像进行差值的求取,并宣告代码完成运行。
在 IDLE (Python GUI) 中运行代码。代码运行完毕后,我们可以看到求取差值之后的遥感影像已经存在于我们的结果保存路径中了。

至此,大功告成。
ArcPy批量对大量遥感影像相减做差的更多相关文章
- Earthdata批量下载MODIS遥感影像的方法
本文介绍在Earthdata网站中,批量下载MODIS遥感影像的方法. 首先,打开网页:https://search.earthdata.nasa.gov/search ,如果没有Earthd ...
- 批量下载Landsat遥感影像的方法
本文介绍在USGS网站批量下载Landsat系列遥感影像的方法. 首先,打开EarthExplorer的官网,首先完成注册与登录. 接下来,点击左侧"Search Criteri ...
- Python gdal读取MODIS遥感影像并结合质量控制QC波段掩膜数据
本文介绍基于Python中GDAL模块,实现MODIS遥感影像数据的读取.计算,并基于质量控制QC波段进行图像掩膜的方法. 前期的文章Python GDAL读取栅格数据并基于质量评估波段QA对 ...
- Alice and Bob 要用到辗转相减
Alice and BobTime Limit: 1 Sec Memory Limit: 64 MBSubmit: 255 Solved: 43 Description Alice is a be ...
- Python ArcPy批量掩膜、重采样大量遥感影像
本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作. 首先,我们来明确一下本文的具体需求.现有一个存储有大量.tif格式遥感影像的文件夹:且其中除了 ...
- Python ArcPy批量计算多时相遥感影像的各项元平均值
本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取. 在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取-- ...
- Python核对遥感影像批量下载情况的方法
本文介绍批量下载遥感影像时,利用Python实现已下载影像文件的核对,并自动生成未下载影像的下载链接列表的方法. 批量下载大量遥感影像数据对于GIS学生与从业人员可谓十分常见.然而,对于动辄成 ...
- Python ArcPy批量拼接长时间序列栅格图像
本文介绍基于Python中ArcPy模块,对大量不同时相的栅格遥感影像按照其成像时间依次执行批量拼接的方法. 在前期的文章Python arcpy创建栅格.批量拼接栅格中,我们介绍了利用Pyt ...
- C#-和时间有关的计算代码、时间相减 得到天数、小时、分钟、秒差
asp.net(C#)时间相减 得到天数.小时.分钟.秒差 asp.net(C#)时间相减 得到天数.小时.分钟.秒差 DateTime dtone = Convert.ToDateTime( ...
- 遥感影像滤波处理软件 — timesat3.2
最近因为要做遥感影像的滤波处理,经过女神推荐,决定用Timesat,可是该软件3.1版本只适合xp系统以及2011的matlab,后来在官网上找到了最新的3.2版本.支持64位操作系统以及2014的m ...
随机推荐
- Kubernetes客户端认证(二)—— 基于ServiceAccount的JWTToken认证
1.概述 在 Kubernetes 官方手册中给出了 "用户" 的概念,Kubernetes 集群中存在的用户包括 "普通用户" 与 "Service ...
- 【SpringMVC】(二)RESTFul
RESTFul RestFul简介 REST:Representational State Transfer,表现层资源状态转移 资源:资源是一种看待服务器的方式 资源的表述:资源的表述是资源在某个特 ...
- Semantic Kernel 入门系列:📅 Planner 计划管理
Semantic Kernel 的一个核心能力就是实现"目标导向"的AI应用. 目标导向 "目标导向"听起来是一个比较高大的词,但是却是实际生活中我们处理问题的 ...
- SpringBoot应用集成微服务组件Nacos
目录 springboot与微服务组件nacos Nacos服务快速启动 STS4 开发工具 Maven 环境配置 STS4开发工具引入Maven配置 Maven Repo配置阿里云镜像源 Sprin ...
- 如何获取苹果设备的UDID(iPhone/iPad UDID查询方法)
方法一.通过电脑连接苹果手机后查询 1.在电脑上下载并安装爱思助手,安装完成后将电脑和苹果手机使用苹果数据线连接起来: 编辑切换为居中 添加图片注释,不超过 140 字(可选) 然后启动爱思助 ...
- 文件上传漏洞靶场:upload-labs(附在线地址)
重装系统:CentOS 7.6 密钥对验证,或密码验证,根据自身情况选择,博主这边为了ssh连接方便选用的密码校验. WindTerm登录系统 需提前去云服务器的安全组,开放22端口ssh连接. 更新 ...
- CSS 点击穿透pointer-events
在项目中,当需要展示一个元素在最顶层,但又不想让它影响下层的交互,可以pointer-events:none pointer-events介绍 pointer-events: auto | none ...
- Locust 界面简介(非使用级)
一.认识Locust 1.简介 Locust是一款易于使用的分布式负载测试工具,完全基于事件,即一个locust节点也可以在一个进程中支持数千并发用户,不使用回调,通过gevent使用轻量级过程(即在 ...
- 【Redis】Redis 编译安装配置优化,多实例配置
一.Redis 配置详解 # Redis configuration file example. # # Note that in order to read the configuration fi ...
- 使用 shell 脚本自动申请进京证 (六环外) —— debug 过程
问题现象 用 shell 脚本写了一个自动办理六环外进京证的工具 <使用 shell 脚本自动申请进京证 (六环外)>,然而运行这个脚本总是返回以下错误信息: { "msg&qu ...