如何在“图层”面板中使图层或组不可见?


13

我在一个小组内的“ 层”面板中有许多层,但我不希望它们显示出来(有很多层,所以看起来很不整洁)。这些层也连接到其他几个层。

是否可以使这些图层对用户不可见即,在“图层面板”中未显示,这与设置图层的可见性无关),但仍可以与其他图层连接?还是使该小组不可见?

我最近发现的是这篇文章,但希望有更直接的方法:

仅显示QGIS图例中的某些图层?

Answers:


15

我发现使图层/组“不可见”对于避免显示查找表很有用,因为查找表是值关系所必需的,但可能会使“图层面板”看起来有点过载。

为了澄清起见,不可见的图层/组不会出现在“图层面板”中,但仍可以在画布中看到它们,或将其用于与其他图层的连接/关系中。


回答:

使用插件Invisible layer and groups,您可以:

  • 使选定的图层/组不可见(插件按钮)。
  • 使图层/组(不可见)再次可见(插件按钮)。
  • 在QGIS项目中存储图层/组的可见性。
  • 打开QGIS项目时,重新创建图层/组的可见性。
  • 使特定的图层不可见(通过代码)。
  • 使特定组不可见(通过代码)。

使层不可见(通过代码):

if 'InvisibleLayersAndGroups' in qgis.utils.plugins:
    ilg = qgis.utils.plugins['InvisibleLayersAndGroups']
    ilg.hideLayer( layer )    # layer is a QgsMapLayer

使组不可见(通过代码):

if 'InvisibleLayersAndGroups' in qgis.utils.plugins:
    ilg = qgis.utils.plugins['InvisibleLayersAndGroups']
    ilg.hideGroup( group )    # group is a QgsLayerTreeGroup
    ilg.hideGroup( 'group2' ) # You can also pass a group name

注意:您应该注意一个问题。如果将图层设为不可见,然后移动其父组,则该不可见图层将再次变为可见(我不知道为什么!)。因此,我的建议是仅使顶层/组不可见(毕竟,您不能移动根)。


正是我想要的,对此非常感谢!确实,我有几个用于计算的层(所有这些层都连接到另一层),所以我不希望用户看到或编辑这些层。因此,您的解决方案可以极大地解决此问题。一个问题,您最近是否只是将其实现为插件?
约瑟夫

是的,它是几天前发布的。我之前曾经想过如何隐藏图层,但是只有在这个问题出现之后,我才开始执行任务(迟早需要在工作中使用它)。我曾想过用代码片段来回答,但是答案足够长以至于变得复杂,因此我更喜欢将其封装在一个插件中,这更容易使用。
赫尔曼·卡里略

好吧,这是一个很棒的插件,所以投票了:)
约瑟夫(Joseph)

+1一个非常有用的插件。特别是对我的工作而言,要特别使用Tough Book + QGIS在野外映射数据,以避免“图层面板”过载(滚动需要花费时间)。我有一个建议(也许是为了改进您的插件(或不改进插件)):您能否实现插件记住一次标记过的图层并在再次按下插件按钮(使其不可见)时使它们再次不可见?要使其他选择(图层/组)不可见,您必须重新选择它们。
Stefan

很高兴您发现该插件有用!感谢您的建议,您介意在GitHub中添加新的功能请求(问题)吗?
赫尔曼·卡里略
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.