我正在学习pyqgis (使用pyqgis食谱并开始加载向量层)。
到目前为止,我能够打开一个我已经知道存在于地质位势之上的图层。
iface.addVectorLayer("./bcim_2016_21_11_2018.gpkg|layername=lim_unidade_federacao_a", "Nome Vetor", "ogr")现在,我想知道如何列出一个地质公园中承载的所有层,这样就可以定义要加载的层了?坦斯克
费利佩
发布于 2019-08-08 03:00:38
我刚刚在PyQGIS CookBook -作弊表上发现了这种可能性,它回答了我的问题。
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)发布于 2019-07-13 00:48:58
Felipe,所有层都存储在gpkg_geometry_columns中。因此,您应该使用Qt中的QSqlDatabase或sqlite3查询这个表。
要查询表名、列名和几何类型,可以执行以下操作:
从table_name、column_name、geometry_type_name中选择gpkg_geometry_columns
希望我能帮你!
飞利浦
https://stackoverflow.com/questions/57015320
复制相似问题