本文介绍批量下载大量多时相的遥感影像文件后,基于Python语言与每一景遥感影像文件的文件名,对这些已下载的影像文件加以缺失情况的核对,并自动统计、列出未下载影像所对应的时相的方法。

  批量下载大量遥感影像文件对于RS学生与从业人员可谓十分常见。在我们之前的文章中,就介绍过同样基于文件名称,对未成功下载的遥感影像加以统计,并自动筛选出未下载成功的遥感影像的下载链接的方法;在本文中,我们同样基于Python与栅格文件的文件名称,对类似的需求加以实现。

  首先,本文的需求和前述提及的文章略有不同。在这里,我们已经下载好了大量的、以遥感数据成像时间为文件名的栅格文件,如下图所示。

  其中,不难发现我们这里的遥感影像数据是从每一年的001天开始,每隔8天生成一景影像,每一景影像的名称后3位数字就是001009017这样表示天数的格式;此外,前4位数字表示年份,我们这里有从2020开始到2022结束、一共3年的遥感影像数据。

  现在,我们希望对于上述文件加以核对,看看在这3年中,是否有未下载成功的遥感影像文件;如果有的话,还希望输出下载失败的文件个数和对应的文件名称(也就是对应文件的成像时间)。

  明确了需求后,我们就可以开始具体的操作。首先,本文所需用到的代码如下。

# -*- coding: utf-8 -*-
"""
Created on Sat Dec 30 23:32:54 2023 @author: fkxxgis
""" import os def check_missing_dates(folder_path):
start_year = 2020
end_year = 2022
days_per_file = 8 missing_dates = [] for year in range(start_year, end_year + 1):
for day in range(1, 366, days_per_file):
file_name = str(year) + "{:03d}".format(day) + ".tif"
file_path = os.path.join(folder_path, file_name) if not os.path.exists(file_path):
missing_dates.append(file_name[:-4]) return missing_dates folder_path = "F:/Data_Reflectance_Rec/NDVI"
missing_dates = check_missing_dates(folder_path) print("Total missing dates:", len(missing_dates))
print("Missing dates:")
for date in missing_dates:
print(date)

  这段代码整体思路也很明确。

  首先,我们导入所需的模块。在这里,os模块用于文件路径操作。

  接下来,我们定义一个名为check_missing_dates的函数,其接收一个文件夹路径作为参数;这个函数用于检查遗漏的日期。在这个函数中,我们定义了起始年份start_year和结束年份end_year,以及每个文件之间的日期间隔 days_per_file;随后,创建一个空列表missing_dates,用于存储遗漏的日期。

  随后,我们使用嵌套的循环遍历每一年和每一天。在每一天的循环中,构建文件名,如"2020017.tif",并构建文件的完整路径。接下来,使用os.path.exists()函数检查文件路径是否存在——如果文件不存在,则将日期添加到遗漏日期列表missing_dates中。在循环结束后,返回遗漏日期列表missing_dates

  在函数外部,我们定义要检查的文件夹路径folder_path,然后就可以调用check_missing_dates函数,传入文件夹路径参数,执行日期检查,将返回的遗漏日期列表赋值给missing_dates

  最后,我们打印遗漏日期的总数len(missing_dates),并打印每个具体的遗漏日期。

  执行上述代码,即可出现如下图所示的结果。即在我这里,目前有8个日期的遥感影像文件没有下载成功,我们再对照这8个遥感影像的日期,重新到相关网站中下载即可。

  至此,大功告成。

查找大量时序遥感文件缺失、不连贯的成像日期:Python代码的更多相关文章

  1. yum whatprovides 查找哪个包可以提供缺失的文件

    yum whatprovides 查找哪个包可以提供缺失的文件

  2. 使用SVN时出现的文件缺失问题

    使用SVN的童鞋们,可能有三种提交代码的方法: 第一种使用客户端(例如SVNX,CornerStone): 第二种使用Xcode提交(Source Control -> commit): 第三种 ...

  3. Linux查找最近修改的文件

    查找当前目录下.phtml文件中,最近30分钟内修改过的文件. find . -name 查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细情况. find . -name -ls ...

  4. Visual Studio无法查找或打开 PDB 文件解决办法

    Visual Studio无法查找或打开 PDB 文件解决办法 用VS调试程序时,有时会在VS底部的“输出”框中提示“无法查找或打开 PDB 文件”.这该怎么解决呢? 下面,我们以VS2013为例,来 ...

  5. linux下的find文件查找命令与grep文件内容查找命令

    在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...

  6. VS2013 编译程序时提示 无法查找或打开 PDB 文件

    "Draw.exe"(Win32):  已加载"C:\Users\YC\Documents\Visual Studio 2013\Projects\Draw\Debug\ ...

  7. jar包里查找指定的class文件,排查是否存在或重复,工具软件:Java Class Finder

    jar包里查找指定的class文件,排查是否存在或重复,工具软件:Java Class Finder 1,下载工具地址:www.idesksoft.com/classfinder.html,如图: 2 ...

  8. 解决“C:\Windows\System32\ntdll.dll”。无法查找或打开 PDB 文件问题

    这些提示的问题完全没有必要去理会,因为一般情况下你点击本地windows调试,会报出这样问题很正常. 网上一些介绍什么要去选项卡栏勾选window连接器什么鬼,不建议用该方式,一旦你勾选那个方式虽然不 ...

  9. vs2013运行c语言出现:无法查找或打开 PDB 文件。

    vs2013运行c语言出现:无法查找或打开 PDB 文件.    “ConsoleApplication1.exe”(Win32): 已加载“C:\Users\hp\Documents\Visual ...

  10. AndroidStudio中 R文件缺失的办法

    AndroidStudio中 R文件缺失 找不到R文件的原因有如下两类: 1:IDE或代码问题,非个人原因: 2:个人误操作导致IDE不予提示R文件: 下面是解决办法: 第一种 ①首先确保资源文件是否 ...

随机推荐

  1. 【Zookeeper】03 单机操作

    访问Zookeeper 开启Zookeeper服务程序: ./zkServer.sh start 启动Zookeeper客户端进行访问: ./zkCli.sh 运行打印: [root@VM-0-7-c ...

  2. 目前国内全地形能力最强的双足机器人 —— 逐际动力 —— 提出迭代式预训练(Iterative Pre-training)方法的强化学习算法

    相关: https://weibo.com/1255595687/O5k4Aj8l2 该公司对其产品的强化学习训练算法给出了较少的描述: 提出迭代式预训练(Iterative Pre-training ...

  3. 【转载】 ReLu(Rectified Linear Units)激活函数

    原文地址: https://www.cnblogs.com/neopenx/p/4453161.html ============================== 论文参考:Deep Sparse ...

  4. Linux系统下使用pytorch多进程读取图片数据时的注意事项——DataLoader的多进程使用注意事项

    原文: PEP 703 – Making the Global Interpreter Lock Optional in CPython 相关内容: The GIL Affects Python Li ...

  5. 使用智能AI在农业养殖业中风险预警的应用

    一.前言 之前写过一篇<物联网浏览器(IoTBrowser)-使用深度学习开发防浸水远程报警>文章,主要介绍了通过摄像头麦克风监测浸水报警器有无异常,当出现异常后进行紧急报警并推送微信通知 ...

  6. 你要的高效方案!基于Apache SeaTunnel快速集成SAP进入Redshift

    摘要 本文深入探讨了Apache SeaTunnel及其商业版可视化数据同步平台WhaleTunnel在数据整合领域的应用,特别是如何高效地将SAP系统中的数据同步到Amazon Redshift.通 ...

  7. JavaScript中的包装类型详解

    JavaScript中的包装类型详解 在 JavaScript 中,我们有基本类型和对象类型两种数据类型. 基本类型包括 String,Number,Boolean,null,undefined 和 ...

  8. k8s pvc扩容

    #查看是否支持扩容 $ kubectl get sc ** -o yaml ··· allowVolumeExpansion: true #拥有该字段表示允许动态扩容 ··· #找到需要扩容的pvc ...

  9. zabbix 自定义用户key与参数userparameters监控监本输出

    zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求.幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据. 定义key有两种修改方式: vi ...

  10. Ubuntu上snmp安装、配置、启动及远程测试完整过程

    说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后,通 ...