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

瘋狂學習gis 發佈 2022-05-24T04:10:10.709124+00:00

本文介紹在批量下載大量遙感影像時,利用Python程序實現已下載影像文件的核對,並自動生成未下載影像的下載連結列表的方法。  批量下載大量遙感影像數據對於GIS學生與從業人員可謂十分常見。

  本文介紹在批量下載大量遙感影像時,利用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]是提取連結中的影像特徵段,大家依據實際情況修改即可,還可以修改為正則表達式的形式;本文中我的遙感影像數據文件名稱就是影像特徵段自身,因此就沒有對遙感影像文件名稱加以提取處理,大家基於實際需要修改即可~

關鍵字: