Python核對遙感影像批次下載情況的方法

瘋狂學習GIS發表於2023-02-21

  本文介紹批次下載遙感影像時,利用Python實現已下載影像檔案的核對,並自動生成未下載影像的下載連結列表的方法。

  批次下載大量遙感影像資料對於GIS學生與從業人員可謂十分常見。然而,對於動輒成千上萬景的遙感影像檔案,下載過程中可能會出現各類失敗問題,且或許在下載軟體或工具中還不能很好顯示失敗的檔案有哪些(這一點在批次下載MODIS產品時顯得尤為突出,因為目前LandsatSentinel這些遙感資料還可以用常見下載軟體進行批次下載,但MODIS批次下載卻變得越來越麻煩),從而使得最終下載完成後的資料夾中遙感影像檔案數量與預期下載數量不符合,即部分影像檔案沒有下載下來。

  針對這種情況,需要我們對缺失的檔案加以篩選,並重新生成下載連結並下載;在檔案數量很大時,手動實現上述功能顯然是不現實的;而我們可以用Python短短几行程式碼來實現這一過程。

  首先,展示程式碼如下:

import os

all_url_file_path='H:/s2021_3.txt'
download_hdf_file_path='H:/s2021_3_test/'
lost_url_file_path='H:/s2021_3_lost.txt'

download_hdf=os.listdir(download_hdf_file_path)

with open(all_url_file_path,'r') as all_url_file:
    all_url=all_url_file.readlines()
    for url in all_url:
        url_single_hdf=url[63:108]
        if url_single_hdf not in download_hdf:
            with open(lost_url_file_path,'a') as lost_url_file:
                lost_url_file.write(url)

  其中,all_url_file_path是包含我們全部需要下載的遙感影像下載連結的檔案,一般都會是.txt格式(因此如果大家用GEE等方法下載可能就不適用啦);download_hdf_file_path是存放下載後遙感影像的資料夾,lost_url_file_path是程式生成未下載遙感影像檔案下載連結的.txt檔案(程式自動建立,大家無需手動建立)。

  其實原理很簡單,就是依據已下載檔名稱和全部連結中的名稱進行對比,將為在已下載檔案中對比到的影像檔案下載連結複製到新.txt檔案中。在這裡,需要大家的下載連結和遙感影像資料中具有一致且和其它遙感影像資料不重複的部分(一般下載LandsatMODIS等常見遙感資料產品都滿足這一要求),在這裡將其稱為影像特徵段;其中,url[63:108]是提取連結中的影像特徵段,大家依據實際情況修改即可,還可以修改為正規表示式的形式;本文中我的遙感影像資料檔名稱就是影像特徵段自身,因此就沒有對遙感影像檔名稱加以提取處理,大家基於實際需要修改即可~

  至此,大功告成。

相關文章