在Python中使用gdalbuildvrt时出错

时间:2014-01-02 18:32:35

标签: python stack gdal

我是python / GDAL的新手,并且遇到了一个微不足道的问题。这可能源于这样一个事实:我真的不明白如何在python中正确使用GDAL,或者粗心的东西,但即使我认为我正在关注帮助文档,我在尝试使用“gdalbuildvrt”时仍然会出现语法错误。

我想要做的是花几个(每组的数量不同,称之为N)地理标记的1波段二进制光栅[所有值都是0或1]不同大小(集合中的每个光栅重叠最多虽然如此),并将它们“堆叠”在一起,以便它们根据它们的坐标信息正确对齐。我希望这个“堆栈”简单,所以我可以对这些值求和并产生一个“总”tiff,其范围与所有原始栅格的独有范围(不仅仅是重叠区域)相匹配。得到的tiff将具有从0到N的值,以表示在N个栅格过程中接收的该位置中的像素的“命中”总数。

我被引导到gdalbuildvrt [http://www.gdal.org/gdalbuildvrt.html]并在阅读之后,似乎通过使用关键字-separate,我将能够实现我所需要的。但是,每次我尝试运行我的程序时,都会出现语法错误。以下显示了我尝试调用gdalbuildvrt的几种不同方式中的两种:

gdalbuildvrt -separate -input_file_list stack.vrt inputlist.txt
gdalbuildvrt -separate stack.vrt inclassfiles

其中inputlist.txt是一个文本文件,每行都有一个tif路径,就像帮助文档指定的那样。而inclassfiles是路径名的python列表。每一次,无论我称之为哪种方式,我在关键字后面的第一个单词(即inputlist.txt中的'inputlist'或stack.vrt中的'stack')都会出现语法错误。

有人可以说明我可能做错了什么吗?或者,有没有人知道我还能用python来获得我需要的东西呢?

非常感谢。

1 个答案:

答案 0 :(得分:1)

gdalbuildvrt是GDAL命令行实用程序。从你的例子中可以看出你实际运行它的方式有点不清楚,但是当你在Python中运行时,你应该把它作为一个子进程来执行。

在第一行中,.vrt.txt的顺序错误。包含文件的文本文件应该直接在-input_file_list

之后

在Python中,您可以调用gdalbuildvrt,如:

import os
os.system('gdalbuildvrt -separate -input_file_list inputlist.txt stack.vrt')

请注意,该命令以字符串形式提供。使用带有文件的Python列表可以通过以下方式完成:

os.system('gdalbuildvrt -separate stack.vrt %s') % ' '.join(data)

' '.join(data)部分将列表转换为字符串,项目之间有空格。

根据GDAL的构建方式,有时也可以使用通配符:

os.system('gdalbuildvrt -separate stack.vrt *.tif')