Создание в памяти QgsRasterlayer из растеризации QgsVectorLayer с PyQGIS? - PullRequest
0 голосов
/ 08 мая 2019

Я сейчас создаю плагин 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})

Проблема в том, что это не работает: нетне распознан как действительный вывод.Я также попробовал «OUTPUT»: «memory», но он также не работает ... Так что мне интересно, правильный ли этот ответ, который я нашел в приведенной выше ссылке?

Примечание: версия QGIS: 3.4.7 с Python 3.7

1 Ответ

1 голос
/ 13 мая 2019

Я нашел ответ на свой вопрос с помощью «tempfile.TeilitaryDirectory ()» следующим образом:

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")

См. эту ссылку для получения дополнительной информации об этом модуле.

...