เรียก gdal_merge เป็นสคริปต์ไพ ธ อน


10

ฉันยังใหม่กับงูหลามและตั้งใจที่จะใช้ gdal_merge ในสคริปต์ไพ ธ อน (สายลับ) ฉันใช้ Windows 10, Python 3.6 และมีเครื่องมือ gdal ติดตั้งจาก osgeo4w ฉันรู้ว่าโพสต์อื่น ๆ อธิบายถึงปัญหานี้แต่ไม่มีใครสามารถช่วยฉันแก้ไขปัญหานี้ได้

เมื่อฉันเรียกโมดูล gdal จากคำสั่งมันทำงานเหมือนมีเสน่ห์:

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

อย่างไรก็ตามฉันไม่สามารถทำงานได้อย่างถูกต้องในสคริปต์ไพ ธ อน (Spyder)

วิธีแรกสร้างผลลัพธ์ แต่ไม่ใช่ชื่อที่ถูกต้อง: สร้างไฟล์ '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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.