使用 PyQGIS 从 QgsVectorLayer 的光栅化创建内存中的 QgsRasterlayer?

Creating in-memory QgsRasterlayer from the rasterization of a QgsVectorLayer with PyQGIS?

我目前正在构建一个 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})

问题是它不起作用:None 未被识别为有效输出。我也试过 "OUTPUT" : "memory" 但它也不起作用......所以我想知道我在上面的 link 中找到的这个答案是否正确?

注意:QGIS 版本:3.4.7 和 Python3.7

我通过以下方式使用 "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