memanggil gdal_merge ke dalam skrip python

10

Saya baru mengenal python dan mematahkan kepala saya tentang cara menggunakan gdal_merge dalam skrip python (spyder). Saya menggunakan Windows 10, Python 3.6 dan menginstal alat gdal dari osgeo4w. Saya menyadari banyak posting lain menggambarkan masalah ini tetapi tidak ada yang bisa membantu saya menyelesaikan masalah ini.

Ketika saya memanggil modul gdal dari cmd, itu berfungsi seperti pesona:

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

Namun, saya tidak bisa membuatnya berfungsi dengan baik dalam skrip python (spyder).

Pendekatan pertama menghasilkan output tetapi tidak dengan nama yang tepat: itu menghasilkan file 'out.tif' dan bukan file 'merged.tif' seperti yang saya minta:

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

Pendekatan kedua tidak menghasilkan 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)

Adakah pemikiran tentang bagaimana menyelesaikan masalah ini?

Carl
sumber

Jawaban:

12

Tambahkan argumen kosong dalam pendekatan pertama (karena gdal_merge.pyargumen parses mulai dari 1 dan bukan 0):

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

Bergabunglah dengan path gdal_merge.pydalam pendekatan kedua :

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)
Antonio Falciano
sumber