我正在研究 pyqgis(使用pyqgis 食谱并开始加载矢量图层。
到目前为止,我能够打开一个我已经知道存在于 geopackge 上的层。
iface.addVectorLayer("./bcim_2016_21_11_2018.gpkg|layername=lim_unidade_federacao_a", "Nome Vetor", "ogr")
现在,我想知道如何列出地理包上托管的所有图层,以便可以定义要加载的图层?提前致谢
费利佩
我刚刚在PyQGIS CookBook -cheatsheet上发现了这种可能性,它回答了我的问题。
from qgis.core import QgsVectorLayer, QgsProject
fileName = "/path/to/gpkg/file.gpkg"
layer = QgsVectorLayer(fileName,"test","ogr")
subLayers =layer.dataProvider().subLayers()
for subLayer in subLayers:
    name = subLayer.split('!!::!!')[1]
    uri = "%s|layername=%s" % (fileName, name,)
    # Create layer
    sub_vlayer = QgsVectorLayer(uri, name, 'ogr')
    # Add layer to map
    QgsProject.instance().addMapLayer(sub_vlayer)