首页 > 解决方案 > 如何使用 pyqgis 列出 Geopackage 上的所有图层?

问题描述

我正在研究 pyqgis(使用pyqgis 食谱并开始加载矢量图层。

到目前为止,我能够打开一个我已经知道存在于 geopackge 上的层。

iface.addVectorLayer("./bcim_2016_21_11_2018.gpkg|layername=lim_unidade_federacao_a", "Nome Vetor", "ogr")

现在,我想知道如何列出托管在地理包上的所有图层,以便可以定义要加载的图层?提前谢谢

费利佩

标签: gisqgis

解决方案


我刚刚在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)

推荐阅读