Aufruf von gdal_merge in das Python-Skript


10

Ich bin neu in Python und habe mir den Kopf gebrochen, wie man gdal_merge in einem (Spyder-) Python-Skript verwendet. Ich benutze Windows 10, Python 3.6 und habe das gdal-Tool von osgeo4w installiert. Mir ist klar, dass viele andere Beiträge dieses Problem beschreiben , aber keiner kann mir bei der Lösung dieses Problems helfen.

Wenn ich das gdal-Modul von cmd aus aufrufe, funktioniert es wie ein Zauber:

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

In einem Python-Skript (Spyder) kann es jedoch nicht richtig funktionieren.

Ein erster Ansatz erzeugt eine Ausgabe, jedoch nicht mit dem richtigen Namen: Er erzeugt eine 'out.tif'-Datei und nicht die' merge.tif'-Datei, wie ich es anfordere:

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

Ein zweiter Ansatz erzeugt einfach keine Ausgabe:

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

Irgendwelche Gedanken zur Lösung dieses Problems?

Antworten:


12

Fügen Sie im ersten Ansatz ein leeres Argument hinzu (da gdal_merge.pyArgumente von 1 bis 0 analysiert werden):

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

Schließen Sie sich den Weg der gdal_merge.pyim zweiten Ansatz :

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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.