本文介绍批量下载大量多时相的遥感影像文件后,基于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. 【Layui】05 进度条 Progress

    文档地址: https://www.layui.com/doc/element/progress.html 演示案例: <div class="layui-progress" ...

  2. Google的TPU的向量化内存的读取规格——单次读取/写入的数据量

    异构加速设备: GPU.TPU.NPU 这几种设备,除了GPU公开了部分硬件设计原理和软件编程范式以外,所有的TPU和NPU的资料都是不公开的,都是被其所属公司保留的,然后这些公司会自己在这些硬件之上 ...

  3. Python报错:performance hint: av/logging.pyx:232:5: the GIL to be acquired

    参考: https://stackoverflow.com/questions/77410272/problems-installing-python-av-in-windows-11 https:/ ...

  4. 外网的一个还不错的高性能计算教程: High Performance Computing

    地址: https://info.gwdg.de/wiki/doku.php?id=wiki:hpc:start =========================================== ...

  5. 如何在python同一应用下的多模块中共享变量

    最近在考虑编码风格的问题,突然想到如何在一个python应用下的多个模块中共享一个变量.最早接触python还是在python2.5版本左右,那个时候由于python的import规则设定的问题导致本 ...

  6. 个人17年购入的HP 暗影2pro笔记本开机掉电,电池无法充电,无法开机

    相关链接: https://www.cnblogs.com/devilmaycry812839668/p/15228316.html 机器问题: 1. 电池时而能充电时而不能充电,有时候使用7天后不能 ...

  7. 根据baselines库修改的运行输入参数的解析代码

    如题: def arg_parser(): """ Create an empty argparse.ArgumentParser. """ ...

  8. 8月5日CSP-S模拟赛赛后总结

    8月5日CSP-S模拟赛赛后总结 \[8月5日 \ \ CSP-S模拟赛 \ \ 赛后总结 \\ 2024年8月5日 \\ by \ \ \ uhw177po \] 一.做题情况 第一题比赛 \(10 ...

  9. LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发

    LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发 1. Ollama 部署的本地模型() Ollama 是一个开源框架,专为在本地机 ...

  10. Plateau-Rayleigh 不稳定性 + Young-Laplace 方程

    考虑竖直下落水柱中的 \(AB\) 两点 \[\begin{matrix} \displaystyle\frac12\rho U_0^2+\rho gz+P_A=\frac12\rho U^2(z)+ ...