แสดงเฉพาะข้อความตัวพิมพ์ใหญ่เป็นป้ายกำกับใน QGIS หรือไม่


15

ใช้ QGIS 2.14 และดูว่าขณะนี้มีการติดฉลากตามกฎ ฉันต้องการแสดงป้ายของเมืองที่มีอักษรตัวใหญ่ (เช่น CRAWLEY) และไม่แสดงฉลากของเมืองที่มีตัวอักษรพิมพ์เล็ก (เช่น Faygate)

ตารางแอตทริบิวต์ไม่แยกความแตกต่างของเมืองต่าง ๆ นอกเหนือจากชื่อ มีวิธีทำเช่นนี้หรือไม่?

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


20

คุณไม่จำเป็นต้องใส่สไตล์ตามกฎจริงๆ

  1. เลือกตัวเลือกแสดงเลเยอร์สำหรับเลเยอร์นี้ (หรือตามกฏถ้าคุณต้องการ) และคลิกที่ไอคอนนิพจน์และไปที่ฟังก์ชั่นแก้ไขดังที่แสดงด้านล่าง

    ฟังก์ชั่นแก้ไข

  2. สร้างไฟล์ใหม่ (หรือแก้ไขไฟล์ที่มีอยู่) และป้อนข้อมูลต่อไปนี้:

    from qgis.core import *
    from qgis.gui import *
    
    @qgsfunction(args='auto', group='Custom')
    def func(value, feature, parent):
        if value.isupper():
            return value
    
  3. คลิกโหลดจากนั้นไปที่แท็บนิพจน์และพิมพ์ต่อไปนี้:

    func("fieldName")
    
  4. จากนั้นใช้การเปลี่ยนแปลงทั้งหมด ขณะนี้ป้ายกำกับของคุณควรมีเฉพาะป้ายที่เป็นตัวพิมพ์ใหญ่ทั้งหมด


ตัวอย่าง :

ก่อนเรียกใช้ฟังก์ชัน:

ก่อนฟังก์ชั่น

หลังจากเรียกใช้ฟังก์ชัน:

หลังจากฟังก์ชั่น


8
แทนที่จะใช้ฟังก์ชันหลามแบบกำหนดเองที่นี่คุณสามารถใช้นิพจน์ inbuilt ได้"fieldName"=upper("fieldName")
ndawson

3
@ndawson - เป็นฟังก์ชั่นที่ใช้งานง่ายมากขอบคุณ! แม้ว่านิพจน์ของคุณจะส่งคืนบูลีน แต่คุณสามารถใช้แทนif("fieldName" = upper("fieldName"), "fieldName", '')ได้ ฉันคิดว่าคุณควรโพสต์มันเพื่อเป็นคำตอบ ;)
โจเซฟ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.