使用 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。
我目前正在构建一个 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。