виклик gdal_merge в сценарій python


10

Я новачок у python і ламаю голову про те, як використовувати gdal_merge в (spyder) python-скрипті. Я використовую Windows 10, Python 3.6 і маю інструмент gdal, встановлений з osgeo4w. Я розумію, що багато інших постів описують цю проблему, але жоден не міг допомогти мені вирішити цю проблему.

Коли я закликаю модуль gdal від cmd, він працює як шарм:

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

Однак я не можу змусити його працювати належним чином у сценарії python (шпидері).

Перший підхід дає вихід, але не з правильним ім'ям: він створює файл 'out.tif', а не файл 'merged.tif', як я вимагаю:

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

Другий підхід просто не дає результату:

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

Будь-які думки, як вирішити це питання?

Відповіді:


12

Додайте порожній аргумент у перший підхід (тому що gdal_merge.pyаналізує аргументи, починаючи з 1, а не 0):

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

Реєстрація шлях gdal_merge.pyв другому підході :

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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.