??本文介紹批量下載大量多時相的遙感影像文件后,基于Python語言與每一景遙感影像文件的文件名,對這些已下載的影像文件加以缺失情況的核對,并自動統(tǒng)計、列出未下載影像所對應(yīng)的時相的方法。
??批量下載大量遙感影像文件對于RS學(xué)生與從業(yè)人員可謂十分常見。在我們之前的文章批量下載大量遙感影像時基于Python核對下載情況的方法(http://www.itdecent.cn/p/b56711505944)中,就介紹過同樣基于文件名稱,對未成功下載的遙感影像加以統(tǒng)計,并自動篩選出未下載成功的遙感影像的下載鏈接的方法;在本文中,我們同樣基于Python與柵格文件的文件名稱,對類似的需求加以實(shí)現(xiàn)。
??首先,本文的需求和前述提及的文章略有不同。在這里,我們已經(jīng)下載好了大量的、以遙感數(shù)據(jù)成像時間為文件名的柵格文件,如下圖所示。

??其中,不難發(fā)現(xiàn)我們這里的遙感影像數(shù)據(jù)是從每一年的001天開始,每隔8天生成一景影像,每一景影像的名稱后3位數(shù)字就是001、009、017這樣表示天數(shù)的格式;此外,前4位數(shù)字表示年份,我們這里有從2020開始到2022結(jié)束、一共3年的遙感影像數(shù)據(jù)。
??現(xiàn)在,我們希望對于上述文件加以核對,看看在這3年中,是否有未下載成功的遙感影像文件;如果有的話,還希望輸出下載失敗的文件個數(shù)和對應(yīng)的文件名稱(也就是對應(yīng)文件的成像時間)。
??明確了需求后,我們就可以開始具體的操作。首先,本文所需用到的代碼如下。
# -*- 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)
??這段代碼整體思路也很明確。
??首先,我們導(dǎo)入所需的模塊。在這里,os模塊用于文件路徑操作。
??接下來,我們定義一個名為check_missing_dates的函數(shù),其接收一個文件夾路徑作為參數(shù);這個函數(shù)用于檢查遺漏的日期。在這個函數(shù)中,我們定義了起始年份start_year和結(jié)束年份end_year,以及每個文件之間的日期間隔 days_per_file;隨后,創(chuàng)建一個空列表missing_dates,用于存儲遺漏的日期。
??隨后,我們使用嵌套的循環(huán)遍歷每一年和每一天。在每一天的循環(huán)中,構(gòu)建文件名,如"2020017.tif",并構(gòu)建文件的完整路徑。接下來,使用os.path.exists()函數(shù)檢查文件路徑是否存在——如果文件不存在,則將日期添加到遺漏日期列表missing_dates中。在循環(huán)結(jié)束后,返回遺漏日期列表missing_dates。
??在函數(shù)外部,我們定義要檢查的文件夾路徑folder_path,然后就可以調(diào)用check_missing_dates函數(shù),傳入文件夾路徑參數(shù),執(zhí)行日期檢查,將返回的遺漏日期列表賦值給missing_dates。
??最后,我們打印遺漏日期的總數(shù)len(missing_dates),并打印每個具體的遺漏日期。
??執(zhí)行上述代碼,即可出現(xiàn)如下圖所示的結(jié)果。即在我這里,目前有8個日期的遙感影像文件沒有下載成功,我們再對照這8個遙感影像的日期,重新到相關(guān)網(wǎng)站中下載即可。

??至此,大功告成。