gdal.driver.create正在删除目录中的另一个文件

时间:2017-05-31 16:54:53

标签: python-2.7 gdal

我已经在python中使用gdal几年了,过去几天我发现了我怀疑可能是gdal驱动程序的Create命令中的错误。我正在使用Landsat图像,并且已经在几个场景上尝试了以下代码,每次都有相同的结果。在某些情况下,当我调用create时,它会删除目录中的另一个文件(总是MTL文件)。

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名称,它创建一个匹配其余Landsat band文件的文件名,并且文件“outfile”已经存在,则替换它(预期行为)并删除met文件(意外行为) 。如果我使用第二个outfile名称,它与Landsat band文件名格式不匹配,当我运行代码时,如果“outfile”已经存在,它只是替换旧文件(预期的行为)。我还没有找到任何其他参考这种情况。有什么想法正在发生什么?

1 个答案:

答案 0 :(得分:0)

类似地!

GDAL版本:GDAL 2.1.3,2017/20/01发布

Paltform:Ubuntu 16.04 LTS

出于这种情况所以:

. . . if os.path.exists(outputFileName): os.remove(outputFileName) dst_ds = driver.Create(outputFileName, width, height, bands_value, gdal.GDT_Float32) . . .