我当前正在构建一个QGIS插件,我需要将矢量层栅格化,其中输出将存储在内存中。
为此,我尝试了此(来自此链接的答案(:
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})
问题在于它不起作用:没有一个人被认为是有效的输出。我还尝试了"输出":"内存",但它也不起作用...所以我想知道我在上面链接中发现的答案是否正确?
注意:QGIS版本:3.4.7带Python 3.7
我使用" tempfile.temporaryDirectory(("以下方式找到了我的问题的aswer:
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")
有关此模块的更多信息,请参见此链接。