2017-05-31 7 views
0

Ich habe seit einigen Jahren mit Gdal in Python gearbeitet, und in den letzten Tagen habe ich gefunden, was ich vermute, kann ein Fehler in der Create des Gdal-Treibers sein Befehl. Ich arbeite mit Landsat-Bildern und habe den folgenden Code in einigen Szenen mit den gleichen Ergebnissen jedes Mal ausprobiert. In bestimmten Situationen, wenn ich create anrufe, löscht es eine andere Datei im Verzeichnis (immer die MTL-Datei).gdal.driver.create entfernt eine andere Datei im Verzeichnis

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 

Wenn ich die ersten outfile Namen, der einen Dateinamen, den Rest der Landsat-Band entsprechenden Dateien erstellt, und die Datei „outfile“ bereits vorhanden ist, wird (die erwartete Verhalten) ersetzt, und das erfüllte Datei gelöscht (unerwartetes Verhalten). Wenn ich den Namen der zweiten Ausgabedatei verwende, der nicht mit dem Dateiformat des Landsat-Bandes übereinstimmt, wird der alte Code bei der Ausführung von "outfile" einfach ersetzt (erwartetes Verhalten). Ich konnte keinen anderen Hinweis auf dieses Geschehen finden. Irgendwelche Ideen was ist los?

+0

I kann nicht mit 'gdal.VersionInfo() == '2010100'' repliziert werden. Bei Verwendung der '_B5_test.tif'-Datei wird eine' ...._ B5_test.IMD'-Datei erstellt, aber die '.MTL'-Datei wird nicht entfernt. Bei Verwendung der 'TestB5.tif'-Ausgabedatei wird keine Metadatendatei erstellt. –

+0

Danke @LoganByers. Haben Sie versucht, den Code mehr als einmal mit der Datei "..._ B5_test.tif" auszuführen? Beim ersten Durchlauf (wo _B5_test.tif nicht existiert) bleibt meine .MTL-Datei und die Datei test.tif wird erstellt, aber wenn ich den Code ein zweites Mal ausführe (so dass _B5_test.tif bereits existiert und ersetzt werden sollte), verschwindet die .MTL-Datei immer noch. Ich glaube nicht, dass ich jemals eine .IMD-Datei erstellt habe, was interessant ist. Ich benutze 'gdal.VersionInfo() == '2010300'' auf einem Mac über einen Spyder, der aus einer Anaconda-Umgebung heraus gestartet wurde. Ich freue mich, Versionen des oben genannten zur Verfügung zu stellen, wenn das hilfreich wäre. – Jessica

Antwort

0

Ähnlich!

GDAL Version: GDAL 2.1.3 veröffentlicht 2017/20/01

paltform: Ubuntu 16.04 LTS

aus der Situation so:

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

+0

Ich bin so froh, dass jemand anderes dieses Problem repliziert hat! os.remove ist definitiv eine große Problemumgehung (Upvoted Ihre Antwort), es ist nur ein seltsames Problem zu Beginn zu haben. Bitte teilen Sie, wenn Sie am Ende mehr darüber herausfinden, was das verursacht. – Jessica

Verwandte Themen