Как сделать слой или группу невидимыми на панели слоев?

13

У меня есть несколько слоев на панели слоев внутри группы, но я не хочу, чтобы они отображались (их довольно много, поэтому выглядит неопрятно). Эти слои также соединены с несколькими другими.

Можно ли сделать эти слои невидимыми для пользователя ( т.е. не отображаются на панели слоев, речь не идет о настройке видимости слоя ), но все же могут быть присоединены к другим слоям? Или, возможно, сделать группу невидимой?

Наиболее близким я нашел этот пост, но надеялся, что есть более прямой подход:

Отображать только несколько слоев в легенде QGIS?

Джозеф
источник

Ответы:

15

Я считаю, что делать слои / группы «невидимыми» полезно, чтобы не показывать таблицы поиска, которые необходимы для отношений значений, но могут сделать панель слоев немного перегруженной.

Просто для пояснения, невидимые слои / группы не будут отображаться на панели слоев, но их все равно можно увидеть на холсте или использовать в соединениях / отношениях с другими слоями.


ОТВЕТ:

Используйте плагин Невидимые слои и группы , который позволяет:

  • Сделать выбранные слои / группы невидимыми (кнопка плагина).
  • Сделайте слои / группы (которые невидимы) снова видимыми (кнопка плагина).
  • Храните слои / группы видимости в вашем проекте 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

Примечание. Существует проблема, о которой вам следует знать. Если вы сделаете слой невидимым, а затем переместите его родительскую группу, невидимый слой снова станет видимым (я не знаю почему!). Поэтому я рекомендую сделать невидимыми только верхние слои / группы (в конце концов, вы не можете перемещать корень).

Герман Каррильо
источник
Именно то, что я искал, большое спасибо за это! Действительно, у меня есть несколько слоев, которые используются для вычислений (все они соединены с другим слоем), поэтому я не хочу, чтобы пользователь видел или редактировал эти слои. Таким образом, ваше решение в значительной степени решает эту проблему. Один вопрос, вы только недавно реализовали это как плагин?
Джозеф
Да, это было опубликовано несколько дней назад. Раньше я задавался вопросом, как скрыть слои, но только после этого вопроса я взял на себя задачу (рано или поздно мне это понадобится на работе). Я думал об ответе с помощью фрагментов кода, но ответ был достаточно длинным, чтобы стать сложным, поэтому я предпочел инкапсулировать его в плагин, который намного проще в использовании.
Герман Каррильо
Ну, это отличный плагин, поэтому проголосовал за него :)
Джозеф
+1 Очень полезный плагин. Специально для моей работы, чтобы быть точным в отображении данных в поле с Tough Book + QGIS, чтобы избежать перегруженной панели слоев (прокрутка требует времени в поле). У меня есть предложение (возможно, чтобы улучшить ваш плагин (или нет)): Не могли бы вы реализовать, чтобы плагин запоминал слои, которые вы пометили один раз, и сделать их снова невидимыми, когда кнопка плагинов (сделать их невидимыми) будет снова нажата? Чтобы сделать другой выбор (слои / группы) невидимыми, вы должны выбрать их заново.
Стефан
Здорово, что вы нашли плагин полезным! Спасибо за ваше предложение, не могли бы вы добавить новый запрос (выпуск) в GitHub ?
Герман Каррильо