• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python gui.QgsSublayersDialog类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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
开发者ID:nyalldawson,项目名称:QGIS,代码行数:52,代码来源:dataobjects.py


示例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()
开发者ID:GEO-IASS,项目名称:pyqgis-samples,代码行数:28,代码来源:qgis-sample-QgsSublayersDialog.py



注:本文中的qgis.gui.QgsSublayersDialog类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python gui.QgsSymbolButton类代码示例发布时间:2022-05-26
下一篇:
Python gui.QgsSpinBox类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap