我目前正在构建QGIS插件,我需要对矢量层进行栅格化,将输出存储在矢量层中。
为此,我尝试了此操作(来自this link的回答):
temp = processing.run("gdal:rasterize",
{"INPUT": input_shapefile,
"FIELD": "OBJECTID",
"UNITS": 1,
"WIDTH": resolution,
"HEIGHT": resolution,
"EXTENT": "%f,%f,%f,%f" % (xmin, xmax, ymin, ymax),
"NODATA": -99,
"OUTPUT": None})
问题是它不起作用:没有一个未被识别为有效输出。我也尝试了“ OUTPUT”:“ memory”,但是它都不起作用...所以我想知道我在上面的链接中找到的答案是否正确?
注意:QGIS版本:使用Python 3.7的3.4.7
答案 0 :(得分:1)
我通过以下方式使用“ tempfile.TemporaryDirectory()”找到了对我的问题的疑问:
tf = tempfile.TemporaryDirectory()
tfolder = tf.name + "\\rasterisation.tif"
temp = processing.run("gdal:rasterize",
{"INPUT": input_shapefile,
"FIELD": "OBJECTID",
"UNITS": 1,
"WIDTH": resolution,
"HEIGHT": resolution,
"EXTENT": "%f,%f,%f,%f" % (xmin, xmax, ymin, ymax),
"NODATA": -99,
"OUTPUT": tfolder})
rlayer = self.iface.addRasterLayer(tfolder, "Rasterisation")
有关此模块的更多信息,请参见this link。