查詢大量時序遙感檔案缺失、不連貫的成像日期:Python程式碼

疯狂学习GIS發表於2024-10-14

  本文介紹批次下載大量多時相的遙感影像檔案後,基於Python語言與每一景遙感影像檔案的檔名,對這些已下載的影像檔案加以缺失情況的核對,並自動統計、列出未下載影像所對應的時相的方法。

  批次下載大量遙感影像檔案對於RS學生與從業人員可謂十分常見。在我們之前的文章中,就介紹過同樣基於檔名稱,對未成功下載的遙感影像加以統計,並自動篩選出未下載成功的遙感影像的下載連結的方法;在本文中,我們同樣基於Python與柵格檔案的檔名稱,對類似的需求加以實現。

  首先,本文的需求和前述提及的文章略有不同。在這裡,我們已經下載好了大量的、以遙感資料成像時間為檔名的柵格檔案,如下圖所示。

image

  其中,不難發現我們這裡的遙感影像資料是從每一年的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個遙感影像的日期,重新到相關網站中下載即可。

  至此,大功告成。

相關文章