Pythonスクリプトにgdal_mergeを呼び出す


10

私はpythonを初めて使用し、(スパイダー)pythonスクリプトでgdal_mergeを使用する方法に頭を悩ませています。私はWindows 10、Python 3.6を使用しており、osgeo4wからgdalツールをインストールしています。他の多くの投稿でこの問題について説明していますが、この問題の解決に役立つものはありません。

cmdからgdalモジュールを呼び出すと、それは魅力のように機能します:

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

ただし、Pythonスクリプト(スパイダー)では正しく機能しません。

最初のアプローチは出力を生成しますが、正しい名前ではありません。私が要求すると、「merged.tif」ファイルではなく「out.tif」ファイルが生成されます。

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

2番目のアプローチは、単に出力を生成しません。

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します(0ではなく1から始まる引数を解析するため):

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.