gọi gdal_merge vào tập lệnh python


10

Tôi chưa quen với python và phá vỡ cách sử dụng gdal_merge trong một kịch bản python (spyder). Tôi sử dụng Windows 10, Python 3.6 và có công cụ gdal được cài đặt từ osgeo4w. Tôi nhận ra nhiều bài viết khác mô tả vấn đề này nhưng không ai có thể giúp tôi giải quyết vấn đề này.

Khi tôi gọi mô-đun gdal từ cmd, nó hoạt động như một bùa mê:

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

Tuy nhiên, tôi không thể làm cho nó hoạt động đúng trong một kịch bản python (spyder).

Cách tiếp cận đầu tiên tạo ra một đầu ra nhưng không phải với tên đúng: nó tạo ra tệp 'out.tif' chứ không phải tệp 'merged.tif' như tôi yêu cầu:

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

Cách tiếp cận thứ hai đơn giản là không tạo ra đầu ra:

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

Bất kỳ suy nghĩ về cách giải quyết vấn đề này?

Câu trả lời:


12

Thêm một đối số trống trong cách tiếp cận đầu tiên (vì gdal_merge.pyphân tích các đối số bắt đầu từ 1 chứ không phải 0):

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

Tham gia vào con đường gdal_merge.pytrong cách tiếp cận thứ hai :

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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.