Python中ArcPy依據成像時間對不同時相柵格圖像依次批量拼接

??本文介紹基于PythonArcPy模塊,對大量不同時相的柵格遙感影像按照其成像時間依次執行批量拼接的方法。

??在前期的文章Python中ArcPy實現柵格圖層創建與多景遙感影像批量拼接Mosaic的方法http://www.lxweimin.com/p/09f237b4b3d4)中,我們介紹了利用Python實現柵格遙感影像批量拼接的方法;但這篇文章實現的操作是將某個保存路徑下全部的柵格圖像文件加以拼接,換句話說,是對不同空間位置同一時相的若干圖像加以拼接,拼接結果就只有一景大的圖像。而在實踐中,我們經常還會需要對不同空間位置不同時相的圖像分別加以拼接,拼接結果是很多景不同時相的大的圖像。那么,這種需求該怎么實現呢?

??首先,我們來明確一下本文的具體需求。現有一個存儲有大量.tif格式遙感影像的文件夾,其中每一個遙感影像的文件名中都包含有該圖像的成像時間,如下圖所示。

??我們希望,對于同一天成像的遙感影像進行拼接——例如,上圖中具有2001年第185天成像的遙感影像10幅,每一幅都是這一天在不同空間位置的成像;同時有2001年第193天成像的遙感影像10幅。我們希望首先將第185天成像的10幅遙感影像加以拼接,隨后再對第193天成像的10幅遙感影像加以拼接,以此類推。在遙感影像整體數量較少時,我們或許還可以逐一手動拼接;而當圖像數量很多時,就需要借助代碼來實現了。

??明確了需求后,我們就可以開始具體的操作。首先,本文所需用到的代碼如下。

# -*- coding: utf-8 -*-
"""
Created on Fri Apr 15 13:21:55 2022

@author: fkxxgis
"""

import os
import arcpy

tif_file_path="E:/LST/Data/NDVI/02_TIFF/"
out_file_path="E:/LST/Data/NDVI/03_Mosaic/"
arcpy.env.workspace=tif_file_path

tif_file_name=arcpy.ListRasters("*","tif")
tif_file_date=tif_file_name[0][1:8]
one_day_tif_list=[]

tif_file_example_path=tif_file_path+tif_file_name[0]
cell_size_x=arcpy.GetRasterProperties_management(tif_file_example_path,"CELLSIZEX")
cell_size=cell_size_x.getOutput(0)
value_type=arcpy.GetRasterProperties_management(tif_file_example_path,"VALUETYPE")
describe=arcpy.Describe(tif_file_example_path)
spatial_reference=describe.spatialReference

for tif_file in tif_file_name:
    if tif_file[1:8]==tif_file_date:
        one_day_tif_list.append(tif_file)
        tif_file_temp=tif_file
        if tif_file==tif_file_name[len(tif_file_name)-1]:
            out_file_name=tif_file[1:8]+".tif"
            arcpy.CreateRasterDataset_management(out_file_path,out_file_name,
                                                 cell_size,"16_BIT_SIGNED",spatial_reference,"1")
            out_file=out_file_path+out_file_name
            for tif_file_new in one_day_tif_list:
                arcpy.Mosaic_management([tif_file_path+tif_file_new],out_file)
                
    else:
        out_file_name=tif_file_temp[1:8]+".tif"
        arcpy.CreateRasterDataset_management(out_file_path,out_file_name,
                                             cell_size,"16_BIT_SIGNED",spatial_reference,"1")
        out_file=out_file_path+out_file_name
        for tif_file_new in one_day_tif_list:
            arcpy.Mosaic_management([tif_file_path+tif_file_new],out_file)
        one_day_tif_list=[]
        one_day_tif_list.append(tif_file)
        tif_file_date=tif_file[1:8]

??其中,tif_file_path是原有拼接前遙感圖像的保存路徑,out_file_path是我們新生成的拼接后遙感影像的保存路徑。

??在這里,我們需要首先在資源管理器中,將tif_file_path路徑下的各文件以“名稱”排序的方式進行排序;隨后,利用arcpy.ListRasters()函數,獲取路徑下原有的全部.tif格式的圖像文件,并截取第一個文件的部分文件名,從而獲取其成像時間;接下來,做好創建一個新的柵格文件的準備,這一部分代碼的含義在本文開頭提及的那一篇博客http://www.lxweimin.com/p/09f237b4b3d4)中已有提及,這里就不再贅述。

??接下來,遍歷tif_file_path路徑下全部.tif格式圖像文件。其中,我們通過一個簡單的判斷語句,來確定某一成像時間的遙感影像是否已經讀取完畢——如果已經讀取完畢,例如假如第185天成像的10幅遙感影像都已經遍歷過了,那么就對這十景遙感影像加以拼接;如果還沒有讀取完畢,例如假如第185天成像的10幅遙感影像目前僅遍歷到了第8幅,那么就不拼接,繼續往下遍歷。

??這里相信大家也看到了為什么我們要在前期先將文件夾中的文件按照“名稱”排序——是為了保證同一成像時間的所有遙感影像都排列在一起,遍歷時只要遇到一個新的成像時間,程序就知道上一個成像時間的所有圖像都已經遍歷完畢了,就可以將上一個成像時間的所有柵格圖像加以拼接。

??最后,通過tif_file==tif_file_name[len(tif_file_name)-1]這個判斷,來確認是否目前已經遍歷到文件夾中的最后一個圖像文件。如果是的話,就需要將當前成像時間的所有圖像進行拼接,并完成代碼的運行。

??在 IDLE (Python GUI) 中運行代碼。代碼運行完畢后,我們開看一下結果文件夾。可以看到,其中的圖像已經是按照成像時間,分別完成拼接后的結果了。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容