Is it possible to create a Virtual Layer through a Python script?
For example, I have a layer 'road'
, and I would like to perform the SQL query:
SELECT *
FROM road
WHERE type = 'Expressway'
Will this be possible? Is there any example I can refer to?
2 Answers 2
For QGIS 3, instead use QgsProject
:
from qgis.core import QgsVectorLayer, QgsProject
sql_query = "SELECT * FROM road WHERE type = 'Expressway'"
vlayer = QgsVectorLayer(f"?query={sql_query}", "vlayer", "virtual")
QgsProject.instance().addMapLayer(vlayer)
answered Mar 20, 2019 at 17:07
-
2Given current LTR QGIS version is 3.10, this answer should be the new validated one !sigeal– sigeal2020年07月04日 10:04:34 +00:00Commented Jul 4, 2020 at 10:04
For QGIS 2 you could use something like the following:
from qgis.core import QgsVectorLayer, QgsMapLayerRegistry
sql_query = "SELECT * FROM road WHERE type = 'Expressway'"
vlayer = QgsVectorLayer(f"?query={sql_query}", "vlayer", "virtual")
QgsMapLayerRegistry.instance().addMapLayer(vlayer)
You can find examples on how to use virtual layers through Python from the author's GitHub:
answered Feb 6, 2017 at 10:49
default