我一直在python中使用gdal幾年,過去幾天我發現我懷疑可能是gdal驅動程序的Create中的一個錯誤命令。我正在使用Landsat圖像,並且每次都在相同的結果下嘗試了下面的代碼。在某些情況下,當我調用create時,它會刪除目錄中的另一個文件(總是MTL文件)。gdal.driver.create正在刪除目錄中的另一個文件
import gdal
path = '.../LC80110112013243LGN00/' #path to where ever your landsat scene is
outfile = path+path[-22:-1]+'_B5_test.tif'
#outfile = path + 'TestB5.tif'
infile = path+path[-22:-1]+'_B5.tif'
infile_open = gdal.Open(infile)
infile_array = infile_open.GetRasterBand(1).ReadAsArray()
dtype=gdal.GDT_Float32
outfile = gdal.GetDriverByName('GTiff').Create(outfile, infile_array.shape[1], infile_array.shape[0], 1, dtype)
infile_open = None
outfile = None
infile_array = None
如果我用第OUTFILE名稱,它創建了一個文件名的陸地衛星頻段的其他文件進行匹配,並將文件「OUTFILE」已經存在,它會被替換(預期的行爲),並且遇到了文件被刪除(意外行爲)。如果我使用與Landsat波段文件名格式不匹配的第二個outfile名稱,當我運行代碼時,如果「outfile」已經存在,它將簡單地替換舊文件(預期行爲)。我一直無法找到任何其他的參考。任何想法發生了什麼?
我不能用'gdal.VersionInfo()=='2010100''複製這個。 使用'_B5_test.tif'文件時,會創建'...._ B5_test.IMD'文件,但不會刪除'.MTL'文件。當使用'TestB5.tif' outfile時,沒有創建元數據文件。 –
感謝@LoganByers。您是否已經嘗試使用..._ B5_test.tif文件多次運行代碼?在第一次運行時(_B5_test.tif不存在),我的.MTL文件保留並創建test.tif文件,但是如果我第二次運行代碼(例如_B5_test.tif已存在並且應該被替換),.MTL文件仍然消失。我不認爲我見過創建一個.IMD文件,這很有趣。我在Mac上通過spader使用'gdal.VersionInfo()=='2010300'',它是在anaconda環境中啓動的。如果這有幫助,我很樂意提供上述版本。 – Jessica