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

时间:2019-05-08 10:35:47

标签: python gdal qgis

我目前正在构建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

1 个答案:

答案 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