เปลี่ยนคุณสมบัติสไตล์หลายเลเยอร์พร้อมกันหรือไม่


31

ฉันกำลังทำงานกับข้อมูลจำนวนมาก ฉันมีภาพ GeoTIFF ไม่กี่ร้อยภาพที่นำเข้าสู่โครงการ QGIS และฉันต้องการแก้ไขคุณสมบัติเลเยอร์ของพวกเขา - สิ่งต่าง ๆ เช่นไม่มีค่าข้อมูลความโปร่งใสของค่าพิกเซลการกำหนดแผนที่สี ...

แต่ฉันไม่สามารถหาวิธีที่จะนำการเปลี่ยนแปลงเหล่านี้ไปใช้กับหลายเลเยอร์ได้ในคราวเดียวสั้น ๆ ของการแก้ไขไฟล์ XML ด้วยการค้นหาและแทนที่แบบโกลบอล มีวิธีทำเช่นนี้โดยใช้ GUI หรือไม่

คำตอบ:


45

ในเวอร์ชันปัจจุบันของ QGIS คุณสามารถใช้ Copy Style จากนั้น Paste Style จากเมนูดรอปดาวน์ด้านบนของเลเยอร์ (ถ้าคุณเลือกเลเยอร์ตั้งแต่หนึ่งเลเยอร์ขึ้นไปในรายการเลเยอร์)


สำหรับรุ่นเก่าบางรุ่น: คุณสามารถเลือกหลายเลเยอร์ในรายการเลเยอร์คลิกขวาและใช้วางสไตล์จากเมนูบริบท

สำหรับรุ่นเก่าอื่น ๆ :

ปลั๊กอิน MultiQML ช่วยให้คุณสามารถใช้สไตล์เลเยอร์ QGIS หนึ่งรูปแบบกับหลายเลเยอร์พร้อมกัน ฉันคิดว่านั่นใกล้เคียงกับสิ่งที่คุณมองหามากที่สุดเท่าที่จะเป็นไปได้ในปัจจุบัน


7

หากคุณบันทึกตัวเลือกสไตล์สำหรับเลเยอร์เวกเตอร์หนึ่งไฟล์เป็น. qml คุณสามารถนำไปใช้กับหลายเลเยอร์พร้อมกันด้วย MultiQML-plugin โดยทั่วไปจะเป็นหน้าต่างอินเทอร์เฟซที่ให้คุณเลือกเลเยอร์ที่คุณต้องการใช้สไตล์ (ด้วยมือหรือ 'เลือกทั้งหมด') ปุ่ม 'ใช้สไตล์' ช่วยให้คุณเลือก qml ด้วยข้อมูลสไตล์

ข้อมูลจะอยู่ที่นี่: MultiQML


5

สิ่งนี้ใช้ได้กับ QGIS 3.4 =>

  1. สร้างกลุ่มของเลเยอร์ทั้งหมดที่คุณต้องการให้มีสไตล์เดียวกัน
  2. แก้ไขสไตล์ของเลเยอร์หนึ่งในกลุ่มตามที่คุณต้องการ
  3. คลิกขวาที่เลเยอร์สไตล์ที่ถูกต้อง 'ลักษณะ' -> 'คัดลอกสไตล์' -> 'สัญลักษณ์'
  4. เลือกกลุ่มที่คุณสร้างไว้ก่อนหน้า
  5. คลิกขวาที่กลุ่ม 'วางสไตล์'

สิ่งนี้จะต้องเป็นคำตอบที่ได้รับการยอมรับมันรวดเร็วและง่ายและใช้งานได้ ... โดยไม่ต้องใช้ความสลับซับซ้อนใด ๆ
Shawty

2

คุณสามารถบันทึกโครงการของคุณปิด QGIS ค้นหาคำจำกัดความลักษณะในไฟล์. qgs ของโครงการของคุณแล้ววางลงในทุกเลเยอร์


1

ฉันเขียนสคริปต์ไพ ธ อนซึ่งอาจมีประโยชน์หากคุณต้องการใช้สไตล์กับเลเยอร์ทั้งหมดในกลุ่มหรือมากกว่า สิ่งที่คุณต้องมีคือไฟล์. qml ที่บันทึกพร้อมคุณสมบัติที่คุณต้องการใช้กับเลเยอร์แต่ละประเภท

from qgis.core import *
import os
#copy line 9-21 and change file names and group names if you have more groups

QML_file = ('yourqmlfile.qml')#insert path to qml file 
#add other qml files if you want to change style for more groups


def applystyle_group(name):
    root = QgsProject.instance().layerTreeRoot()
    point = root.findGroup(name) #Find Group
    for child in point.children():
        if isinstance(child, QgsLayerTreeLayer):
            if child.layer().type()==0:
                child.layer().loadNamedStyle(QML_file)#change the file name accordingly
                #you can add styles for other types of layers in the same group (line, point and polygon)

try: #If group is not present this will keep script running if you want to add more
    applystyle_group("*")#insert name of QGIS group
except Exception:
    pass
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.