将GRASS和SAGA模块导入python脚本


13

我是新来的。我正在为qgis“构建”一个python插件,我想从GRASS和SAGA导入模块,但是我不知道该怎么做。我要导入的插件是SAGA的Kriging插值或GRASS的v.surf.idw或Raster qgis的插值插件。我想要一种插值方法来转换网格中的点。

你能帮助我吗?


我还有一个疑问。

我在代码中运行以下行:

vectorlayer_vector =  ftools_utils.getVectorLayerByName(inputLayer)
Elevation = self.lineAttrib.currentText()
cellSize = int(self.linePix.value())
outPath = self.inputLayerCombo3.text()
output = ftools_utils.getRasterLayerByName(outPath) 

Processing.runAlgorithm("saga:shapestogrid", vectorlayer_vector, Elevation, 0, 0, 4, None, cellSize, output)

跑步时,我会得到一张tiff图像,但什么也没有。.aux文件未创建,当我尝试打开创建的tiff图像时,出现以下消息:

c:... teste3.tif不是受支持的栅格数据源

所以,我想输出是错误的。我必须怎么做才能获得正确的输出?我想念什么?

Answers:


15

QGIS中的处理框架可以直接从Python调用这些函数。

从QGIS Python控制台:

>>>import processing
>>>outputs_0=Processing.runalg("saga:ordinarykriging", vectorlayer_pointtable, z, True, 0, 0, True, 100, True, 0.0, 10.0, 100.0, 1.0, 0.1, 1, 0.5, 1000.0, 4, 20, 1.0, True, None, None, None)
>>>outputs_1=Processing.runalg("grass:r.surf.idw", outputs_0['GRID'], 12, True, None, 0.0, None)

如果您在Processing Framework中将其构建为模型,则可以将该模型另存为Python脚本。它为您提供了一种用于处理runalg函数的GUI构建器。

加工型号

在此处输入图片说明


您的回答非常有帮助。谢谢。因此,如果我从sextante模型创建Python脚本,可以将该代码合并到我的插件中吗?
芭芭拉·杜阿尔特

是的,代码也可以在插件中运行。
雅各布

当我运行代码时,它给我以下消息:“ AttributeError:class Processing没有属性'runalg'”。为什么?我进口加工。
芭芭拉·杜阿尔特

我知道我问题的答案。在我的QGIS版本中,我具有功能runAlgorithm而不是runalg。现在可以正常工作了。谢谢。
芭芭拉·杜阿尔特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.