號碼篩選,Python依據條帶號篩選文件夾中的遙感影像

            抖帥宮 377 2023-08-16

            號碼篩選,Python依據條帶號篩選文件夾中的遙感影像-第1張-觀點-玄機派

            來源頭條作者:瘋狂學習GIS??本文介紹基于Python語言,結合已知研究區域中所覆蓋的全部遙感影像的分幅條帶號,從大量的遙感影像文件中篩選落在這一研究區域中的遙感影像文件的方法。

            ??首先,先來明確一下本文所需實現的需求。現已知一個研究區域(四川省),且已知覆蓋這一研究區域所需的全部遙感影像的分幅條帶號(這里就以Sentinel-2數據所采用的分幅規則為例來介紹),如下圖所示。

            ??其中,矢量圖層上的標簽(Label)就是所需的遙感影像的分幅條帶號;且這一矢量要素的屬性表中,有具體每一個分幅條帶號的具體字段(如上圖紅色方框所示的那一列)。

            ??同時,我們還下載好了大量的遙感影像——這些遙感影像數量眾多,既有位于這一研究區域內的遙感影像,同時還有位于研究區域外的。其中,這里所有的遙感影像都保存在一個大文件夾下,而這一大文件夾下還有多個子文件夾,具體遙感影像就存在于子文件夾中;如下圖所示。

            ??其中,紅色框內的文件夾即為前述“大文件夾”,紫色框內的每一個文件夾即為前述“子文件夾”。此外,每一個子文件夾的命名也是和遙感影像的分幅條帶號對應的,比如43LCC這一個子文件夾就是保存了UTM編號為43的網格內的全部遙感影像。這里關于Sentinel-2遙感影像分幅條帶號的介紹,如果大家有需要,可以參考Sentinel-2哨兵2號MGRS分幅介紹與矢量文件下載這篇文章。

            ??同時,在每一個遙感影像文件的文件名中,都有分幅條帶號這一字段;例如,打開43LCC這一子文件夾,如下圖所示。

            ??我們希望實現的,就是基于上圖所示的研究區域內遙感影像的分幅條帶號信息,在大量的遙感影像中篩選出這些分幅對應的遙感影像文件,并將其通過復制的方式放入到一個新的結果文件夾中。

            ??了解了具體需求,我們就可以開始代碼的撰寫。首先,本文所需的完整代碼如下所示。

            # -*- coding: utf-8 -*- """ Created on Fri Feb 3 18:33:11 2023 @author: fkxxgis """ import os import xlrd import shutil xls_file = r"E:\02_Project\Sentinel.xls" tif_path = r"G:\S2_CSI_LCC_product\LCC_10days_2020" result_path = r"G:\Select" book = xlrd.open_workbook(xls_file) sh = book.sheet_by_index(0) row_num = sh.nrows for row in range(1, row_num): mgrs = sh.cell(row,6).value utm = mgrs[0:2] for root, dirs, files in os.walk(tif_path): for name in dirs: if name[0:2] == utm: for root_1, dirs_1, files_1 in os.walk(os.path.join(root, name)): for name_1 in files_1: if name_1.find(mgrs) != -1: if not os.path.exists(os.path.join(result_path, mgrs)): os.makedirs(os.path.join(result_path, mgrs)) print("Make " + mgrs + " path.") shutil.copy(os.path.join(root, name, name_1), os.path.join(result_path, mgrs, name_1))??其中,我們需要導入os、xlrd與shutil等3個Python庫,分別實現系統文件遍歷、Excel數據讀取與研究區域內遙感影像數據的復制。其中,關于xlrd庫的配置,如果大家是用的Anaconda環境,可以參考Anaconda配置Python中的xlrd庫這篇文章。此外,我們首先需要將本文開頭提及的表示遙感影像數據分幅條帶號的矢量文件的屬性表導出(通過“System Toolboxes”→“Conversion Tools.tbx”→“Excel”→“Table To Excel”選項,如下圖所示),保存為.xls格式的表格文件,從而方便我們后期代碼對數據的讀取。

            ??在代碼中,xls_file表示我們將屬性表導出后得到的.xls格式的表格文件,tif_path表示存放所有遙感影像的大文件夾,result_path則表示找到我們所需的結果遙感影像文件后,希望將其復制到的路徑。

            ??隨后,我們通過xlrd.open_workbook()函數打開.xls格式的表格文件,讀取其中的數據并獲取其行數row_num;接下來,我們即可對這一表格文件的單元格數據加以遍歷,也就是代碼中的第1個for循環——我們從第2行開始(因為第1行是表頭),讀取每一行第7列的數據(也就是存放有遙感影像分幅條帶號的那一列),從而依次獲取所需的遙感影像條帶號。

            ??接下來,由于遙感影像的分幅條帶號的前兩位,以及前述子文件夾名稱的前兩位,都是表示UTM編號的兩位數字,因此我們通過utm = mgrs[0:2]這句代碼,截取當前遙感影像分幅條帶號的前兩位,并通過os.walk()函數進行遍歷,通過一個if判斷語句找到大文件夾下對應的子文件夾;隨后,在這一子文件夾中同樣通過os.walk()函數,進行遙感影像文件的遍歷——也就是代碼中第2個、第3個、第4個for循環所做的事情。

            ??接下來,針對遍歷得到的子文件夾中每一個遙感影像文件,我們通過.find()函數找到所有滿足這一分幅條帶號的遙感影像文件,也就是代碼中第5個for循環與第2個if判斷語句的工作。找到符合當前分幅條帶號的遙感影像文件后,我們即可開始將其復制到目標文件夾中。

            ??這里還有一個需求,因為我們這里保存的是多時相遙感影像數據(即每一個分幅條帶號對應著多個不同時相的遙感影像文件),因此我們希望在目標文件夾中,同樣用各個分幅條帶號作為名稱,創建多個子文件夾;然后將當前分幅條帶號對應的全部遙感影像數據放入這一文件夾中。基于此,我們通過os.path.exists()函數判斷是否存在指定的子文件夾,如果不存在的話就新建這一文件夾;隨后,通過shutil.copy()函數復制這些遙感影像文件。

            ??運行上述代碼,最終我們得到的結果如下圖所示;其中,每一個子文件夾都表示一個分幅條帶號,子文件夾內即為這一分幅條帶號所對應的全部時相的遙感影像文件。

            ??至此,大功告成。

            歡迎關注:瘋狂學習GIS

            上一篇:農村入殮過程,記錄經歷過的一次傳統農村喪葬過程
            下一篇:先婚厚愛莫縈,那些看了還想再看的言情文!每篇都是我自己熬夜品讀的
            相關文章

             發表評論

            暫時沒有評論,來搶沙發吧~

            返回頂部小火箭
            国产亚洲精品VA片在线播放| 亚洲国产精品成人精品无码区 | 亚洲色自偷自拍另类小说| 亚洲阿v天堂在线2017免费| 色噜噜噜噜亚洲第一| 亚洲精品色在线网站| 亚洲AV无码专区在线厂| 国产成人亚洲精品91专区高清 | 亚洲熟妇无码八AV在线播放| 亚洲精品无码Av人在线观看国产| 国产AV无码专区亚洲AV漫画| 国产成人亚洲精品狼色在线 | 国产AV旡码专区亚洲AV苍井空| 亚洲高清有码中文字| 亚洲日本va一区二区三区| 亚洲老熟女五十路老熟女bbw| 久久久国产亚洲精品| 亚洲精品GV天堂无码男同| 欧美色欧美亚洲另类二区| 亚洲av再在线观看| 久久久久亚洲精品男人的天堂| AV在线播放日韩亚洲欧| 亚洲综合精品网站| 国产亚洲人成A在线V网站| 亚洲精品午夜无码专区| 亚洲国产精品久久久久久| 亚洲精品一区二区三区四区乱码 | 国产精品V亚洲精品V日韩精品 | 伊人久久亚洲综合| 久久精品国产亚洲av四虎| 中文字幕亚洲第一在线| 91亚洲自偷在线观看国产馆| 亚洲最大中文字幕无码网站| 激情无码亚洲一区二区三区| 亚洲性日韩精品国产一区二区| 亚洲区小说区图片区QVOD| 亚洲第一区香蕉_国产a| 亚洲专区一路线二| 久久亚洲AV成人无码国产电影| 亚洲国产天堂久久综合| 亚洲产国偷V产偷V自拍色戒|