本文整理汇总了Python中qgis.gui.QgsSublayersDialog类的典型用法代码示例。如果您正苦于以下问题:Python QgsSublayersDialog类的具体用法?Python QgsSublayersDialog怎么用?Python QgsSublayersDialog使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QgsSublayersDialog类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: getRasterSublayer
def getRasterSublayer(path, param):
layer = QgsRasterLayer(path)
try:
# If the layer is a raster layer and has multiple sublayers, let the user chose one.
# Based on QgisApp::askUserForGDALSublayers
if layer and param.showSublayersDialog and layer.dataProvider().name() == "gdal" and len(layer.subLayers()) > 1:
layers = []
subLayerNum = 0
# simplify raster sublayer name
for subLayer in layer.subLayers():
# if netcdf/hdf use all text after filename
if bool(re.match('netcdf', subLayer, re.I)) or bool(re.match('hdf', subLayer, re.I)):
subLayer = subLayer.split(path)[1]
subLayer = subLayer[1:]
else:
# remove driver name and file name
subLayer.replace(subLayer.split(QgsDataProvider.SUBLAYER_SEPARATOR)[0], "")
subLayer.replace(path, "")
# remove any : or " left over
if subLayer.startswith(":"):
subLayer = subLayer[1:]
if subLayer.startswith("\""):
subLayer = subLayer[1:]
if subLayer.endswith(":"):
subLayer = subLayer[:-1]
if subLayer.endswith("\""):
subLayer = subLayer[:-1]
ld = QgsSublayersDialog.LayerDefinition()
ld.layerId = subLayerNum
ld.layerName = subLayer
layers.append(ld)
subLayerNum = subLayerNum + 1
# Use QgsSublayersDialog
# Would be good if QgsSublayersDialog had an option to allow only one sublayer to be selected
chooseSublayersDialog = QgsSublayersDialog(QgsSublayersDialog.Gdal, "gdal")
chooseSublayersDialog.populateLayerTable(layers)
if chooseSublayersDialog.exec_():
return layer.subLayers()[chooseSublayersDialog.selectionIndexes()[0]]
else:
# If user pressed cancel then just return the input path
return path
else:
# If the sublayers selection dialog is not to be shown then just return the input path
return path
except:
# If the layer is not a raster layer, then just return the input path
return path
示例2: import
# coding: utf-8
from qgis.core import (QgsLayerTreeLayer, QgsMapLayerRegistry,
QgsProject, QgsVectorLayer)
from qgis.gui import QgsSublayersDialog
sublayers_dialog = QgsSublayersDialog(QgsSublayersDialog.Ogr, 'Title') # Try with QgsSublayersDialog.Gdal or QgsSublayersDialog.Vsifile
root = QgsProject.instance().layerTreeRoot()
layers = []
for child in root.children():
if isinstance(child, QgsLayerTreeLayer):
layer = QgsMapLayerRegistry.instance().mapLayer(child.layerId())
if isinstance(layer, QgsVectorLayer):
print("- layer: " + child.layerName() + " ID: " + child.layerId())
layers.append(
'%s|%s|%s|%s' % (layer.id(), layer.name(),
layer.featureCount(), layer.geometryType())
)
sublayers_dialog.populateLayerTable(layers, delim="|")
sublayers_dialog.show()
# Then type after some line selection, below code
sublayers_dialog.selectionNames()
# Seems buggy here because when 2nd always return 0 > Confirm if bug
sublayers_dialog.selectionIndexes()