Làm cách nào để tạo một lớp hoặc nhóm vô hình trong Bảng điều khiển Lớp?


13

Tôi có một số lớp trong Bảng điều khiển Lớp trong một nhóm nhưng tôi không muốn chúng hiển thị (có khá nhiều vì vậy nó trông không gọn gàng). Các lớp này cũng được nối với một số người khác.

Là nó có thể làm cho các lớp vô hình cho người sử dụng ( ví dụ: không được hiển thị trong Layers Panel, nó không phải là về việc thiết khả năng hiển thị của lớp ) nhưng vẫn có thể được tham gia vào các lớp khác? Hoặc có lẽ làm cho nhóm vô hình?

Gần nhất tôi tìm thấy là bài này nhưng hy vọng có một cách tiếp cận trực tiếp hơn:

Chỉ hiển thị một số lớp trong huyền thoại QGIS?

Câu trả lời:


15

Tôi thấy việc tạo các lớp / nhóm 'vô hình' hữu ích để tránh hiển thị các bảng tra cứu, được yêu cầu cho các quan hệ giá trị nhưng có thể làm cho Bảng điều khiển Lớp trông hơi quá tải.

Chỉ cần làm rõ, các lớp / nhóm vô hình sẽ không xuất hiện trong Bảng điều khiển Lớp, nhưng chúng vẫn có thể được nhìn thấy trong khung vẽ hoặc được sử dụng trong các liên kết / quan hệ với các lớp khác.


CÂU TRẢ LỜI:

Sử dụng plugin Các lớp và nhóm vô hình , cho phép bạn:

  • Làm cho các lớp / nhóm được chọn trở nên vô hình (nút plugin).
  • Làm cho các lớp / nhóm (vô hình) hiển thị lại (nút plugin).
  • Lưu trữ các lớp / nhóm khả năng hiển thị trong dự án QGIS của bạn.
  • Tái tạo khả năng hiển thị các lớp / nhóm khi mở dự án QGIS của bạn.
  • Tạo một lớp cụ thể vô hình (bằng mã).
  • Làm cho một nhóm cụ thể vô hình (bằng mã).

Tạo một lớp vô hình (bằng mã):

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

Tạo một nhóm vô hình (bằng mã):

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

Lưu ý: Có một vấn đề bạn cần lưu ý. Nếu bạn tạo một lớp vô hình và sau đó di chuyển nhóm cha của nó, lớp vô hình sẽ hiển thị lại (tôi không biết tại sao!). Vì vậy, khuyến nghị của tôi là chỉ làm cho các lớp / nhóm trên cùng trở nên vô hình (sau tất cả, bạn không thể di chuyển root).


Chính xác những gì tôi đang tìm kiếm, cảm ơn rất nhiều vì điều này! Thật vậy, tôi có một số lớp được sử dụng để tính toán (tất cả chúng được nối với lớp khác) vì vậy tôi không muốn người dùng nhìn thấy hoặc chỉnh sửa các lớp này. Vì vậy, giải pháp của bạn giải quyết rất nhiều điều này. Một câu hỏi, bạn chỉ thực hiện điều này như một plugin gần đây?
Joseph

Phải, nó đã được xuất bản vài ngày trước. Tôi đã tự hỏi làm thế nào để ẩn các lớp trước đó, nhưng chỉ sau câu hỏi này, tôi mới thực hiện nhiệm vụ (tôi sẽ cần điều này trong công việc sớm hay muộn). Tôi đã nghĩ đến việc trả lời bằng các đoạn mã nhưng câu trả lời đủ dài để trở nên phức tạp, vì vậy tôi thích gói gọn nó trong một plugin, dễ sử dụng hơn nhiều.
Germán Carrillo

Chà, nó là một plugin tuyệt vời nên đã bình chọn cho nó :)
Joseph

+1 Một plugin rất hữu ích. Đặc biệt đối với công việc của tôi, phải cụ thể trong việc ánh xạ dữ liệu trong trường bằng Tough Book + QGIS, để tránh Bảng điều khiển lớp quá tải (cuộn mất thời gian trong trường). Tôi có một đề xuất (có thể để cải thiện plugin của bạn (hoặc không)): Bạn có thể triển khai rằng plugin đó nhớ các lớp bạn đã đánh dấu một lần và làm cho chúng vô hình trở lại khi nút plugin (làm cho chúng vô hình) được ấn lại không? Để đặt một lựa chọn khác (lớp / nhóm) vô hình, bạn phải chọn chúng một lần nữa.
Stefan

Thật tuyệt khi bạn tìm thấy plugin hữu ích! Cảm ơn đề xuất của bạn, bạn có phiền khi thêm một Yêu cầu tính năng mới (vấn đề) trong GitHub không?
Germán Carrillo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.