【发布时间】:2016-01-14 12:01:30
【问题描述】:
我的问题是关于名为 gdaladdo 的 GDAL(地理空间数据抽象库)工具。该工具应该从 .tif 文件构建概览图像。从我在上面找到的文档中,我可以看到它通常被输入到命令提示符中。我一直在尝试找到一种通过我的 Python 程序运行它的方法,因为我有几千个需要外部概览的 .tif 图像。我对这个程序的最终目标是能够将 .tif 图像传递给它,并为其创建一个 .rrd 金字塔。到目前为止,这是我的代码:
import gdal
import os
from subprocess import call
#Define gdaladdo
gdaladdoFile = 'C:\Program Files (x86)\GDAL\gdaladdo.exe'
#--------------------------------------------------------
os.chdir("Images")
openfile = open('imagenames.txt', 'r')
if {openfile.closed == False}:
count = 0
while count < 5:
#Grab the image to work with
filename = openfile.readline()
#Strip off the newline
filename.rstrip('\n')
#Create pyramid
call([gdaladdoFile, '-ro', '--config USE_RRD YES', 'filename', '2 4 8 16'])
count += 1
openfile.close()
else:
print "No file to open!"
我收到与 call([gdaladdoFile, '-ro', '--config USE_RRD YES', 'filename', '2 4 8 16']) 行有关的错误。通常在命令提示符中键入此命令时,它应该如下所示:'gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE erdas.img 2 4 8 16' 但 Python 会说出选项(如 --config USE_RRD YES) 语法不正确。因此,我遵循了将参数传递给子进程的示例(我在此处找到)并将选项放在单引号内并在每个选项后添加逗号。语法错误消失了,但是当我运行程序进行测试时会出现新的错误。它在命令提示符窗口中显示“FAILURE: Unknown option name '--config USE_RRD YES'”。 我应该如何更改此特定行以使其执行我想要执行的操作?
我是 stackoverflow 的新手,还在大学学习编程,所以请原谅我的无知并温柔对待我。提前感谢您对这个问题的帮助。
gdaladdo reference link,以备不时之需。
【问题讨论】:
-
您是否尝试过将
--config USE_RRD YES拆分为三个单独的列表项?即'--config','USE_RRD','YES'?另外,我不知道您是否注意到了这一点,但是您传递的是字符串“文件名”而不是变量filename -
@RNar 我刚才试过了,命令提示符现在给了我不同的错误。首先与我的目录更改有关(我只是将其修复为更清晰),现在它抱怨我的图像在它们非常存在时不存在。当我解决所有这些奇怪的错误时,我会告诉你你的建议是否解决了我的真正问题。谢谢你的想法!
-
@RNar 再次感谢您的建议。它解决了我的问题,我终于生成了文件!问题解决了。
标签: python python-2.7 arguments subprocess gdal