chiamando gdal_merge nello script python


10

Sono nuovo di Python e sto sbagliando la testa su come usare gdal_merge in uno script (spyder) di Python. Uso Windows 10, Python 3.6 e ho lo strumento gdal installato da osgeo4w. Mi rendo conto che molti altri post descrivono questo problema, ma nessuno potrebbe aiutarmi a risolverlo.

Quando chiamo il modulo gdal da cmd, funziona come un incantesimo:

 python "C:\OSGeo4W64\bin\gdal_merge.py" -o merged.tif input1.tif input2.tif

Tuttavia, non riesco a farlo funzionare correttamente in uno script Python (spyder).

Un primo approccio produce un output ma non con il nome giusto: produce un file 'out.tif' e non il file 'merged.tif' come chiedo:

import sys
sys.path.append('C:\\OSGeo4W64\\bin')
import gdal_merge as gm
gm.main(['-o', 'merged.tif', 'N00W078.tif', 'N00W079.tif'])

Un secondo approccio semplicemente non produce output:

import subprocess
merge_command = ["python", "C:\OSGeo4W64\bin\gdal_merge.py", "-o", "merged.tif", "input1.tif", "input2.tif"]
subprocess.call(merge_command,shell=True)

Qualche idea su come risolvere questo problema?

Risposte:


12

Aggiungi un argomento vuoto nel primo approccio (perché gdal_merge.pyanalizza gli argomenti a partire da 1 e non da 0):

import sys
sys.path.append('C:\\OSGeo4W64\\bin')
import gdal_merge as gm
gm.main(['', '-o', 'merged.tif', 'N00W078.tif', 'N00W079.tif'])

Unisciti al percorso di gdal_merge.pynel secondo approccio :

import os, subprocess
gm = os.path.join('C:\\','OSGeo4W64','bin','gdal_merge.py')
merge_command = ["python", gm, "-o", "merged.tif", "input1.tif", "input2.tif"]
subprocess.call(merge_command,shell=True)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.