首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用pyqgis列出Geopackage上的所有层?

如何使用pyqgis列出Geopackage上的所有层?
EN

Stack Overflow用户
提问于 2019-07-13 00:40:10
回答 2查看 2.5K关注 0票数 4

我正在学习pyqgis (使用pyqgis食谱并开始加载向量层)。

到目前为止,我能够打开一个我已经知道存在于地质位势之上的图层。

代码语言:javascript
复制
iface.addVectorLayer("./bcim_2016_21_11_2018.gpkg|layername=lim_unidade_federacao_a", "Nome Vetor", "ogr")

现在,我想知道如何列出一个地质公园中承载的所有层,这样就可以定义要加载的层了?坦斯克

费利佩

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-08 03:00:38

我刚刚在PyQGIS CookBook -作弊表上发现了这种可能性,它回答了我的问题。

代码语言:javascript
复制
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)
票数 9
EN

Stack Overflow用户

发布于 2019-07-13 00:48:58

Felipe,所有层都存储在gpkg_geometry_columns中。因此,您应该使用Qt中的QSqlDatabase或sqlite3查询这个表。

要查询表名、列名和几何类型,可以执行以下操作:

从table_name、column_name、geometry_type_name中选择gpkg_geometry_columns

希望我能帮你!

飞利浦

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57015320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档