เป็นไปได้หรือไม่ที่จะเลือกเฉพาะเส้นชั้นความสูงสำหรับการติดฉลาก?
ฉันมีป้ายกำกับจำนวนมากสำหรับแต่ละบรรทัดและฉันต้องการติดป้ายกำกับเฉพาะป้ายหลักเช่น1000 m
และ1500 m
เป็นไปได้หรือไม่ที่จะเลือกเฉพาะเส้นชั้นความสูงสำหรับการติดฉลาก?
ฉันมีป้ายกำกับจำนวนมากสำหรับแต่ละบรรทัดและฉันต้องการติดป้ายกำกับเฉพาะป้ายหลักเช่น1000 m
และ1500 m
คำตอบ:
ใน QGIS 2.6 (อาจเป็นรุ่นก่อนหน้าเช่นกันฉันไม่รู้) คุณสามารถทำได้ภายใต้คุณสมบัติเลเยอร์Labels
แท็บRendering
ส่วน รายการตัวเลือกการแสดงผลประมาณครึ่งหนึ่งเป็นปุ่มที่จะช่วยให้คุณเขียนนิพจน์ซึ่งจะกำหนดรายการคุณลักษณะที่จะติดป้ายจริง ๆ "Elevation" IN (1000, 1500)
การแสดงออกของคุณจะเป็นสิ่งที่ชอบ นี่คือปุ่ม (เป็นสีเหลือง) ฉันได้ตั้งค่านี้ให้กับรูปทรงฉลากเท่านั้นที่มีค่าระดับความสูง 32:
วิธีหนึ่งคือการโหลดเลเยอร์รูปร่างและสไตล์ จากนั้นโหลดเลเยอร์เดียวกันอีกครั้งและใช้ตัวกรอง (คลิกขวาที่เลเยอร์แล้วไปที่ 'ตัวกรอง .. ') ใช้นิพจน์ตัวกรองที่คล้ายกับที่แสดงในรูปภาพ ในกรณีของฉันฉันต้องการรูปทรงที่สำคัญในช่วงแนวตั้ง 50 เมตรและสนามที่มีค่าระดับความสูงถูกเรียกว่า "prop_value"
เมื่อเลเยอร์ที่กรองแล้วซึ่งแสดงรูปร่างที่สำคัญได้โหลดใช้ป้ายกำกับรูปร่างและ (ถ้าจำเป็น) เสริมความแข็งแกร่งของรูปแบบของเส้นดังที่แสดง
การแสดงออกของตัวกรอง:
("prop_value" % 50) = 0
จะเลือกรูปทรงตามช่วงเวลาในแนวตั้งที่ 50 เมตร ทำงานกับฐานข้อมูล Spatialite ไม่แน่ใจเกี่ยวกับ shapefiles
ฉันใช้วิธีการนี้ซึ่งทำให้การติดฉลากและการแสดงเส้นขอบตามเงื่อนไขค่อนข้างง่าย
ฉันใช้ "คุณสมบัติที่กำหนดข้อมูล" ของความกว้างสัญลักษณ์เส้นและสีของเส้นขอบด้วยนิพจน์ (ดูภาพหน้าจอ 1) ซึ่งคุณสามารถใช้ความกว้างของเส้นต่าง ๆ ตามเงื่อนไขที่กำหนดเองและการแสดงออกที่คล้ายกันสำหรับการติดฉลาก (ดูภาพหน้าจอ 2)
เพียงใส่ค่าที่จำเป็นลงในนิพจน์และนั่นคือทั้งหมด
คือถ้าคุณต้องการซ่อน contourlines นอกเหนือจาก 500 m คุณสามารถใช้นิพจน์นี้สำหรับคุณสมบัติ datadefined ของสัญลักษณ์บรรทัด:
CASE WHEN Elevation / 500 - floor(Elevation / 500) = 0 then
color_rgba(255,255,255,100)
else
color_rgba(255,255,255,0)
end
เช่นสำหรับการติดฉลากช่วงเวลา 500m เท่านั้นให้ใช้นิพจน์นี้เพื่อ:
CASE WHEN Elevation /500 - floor(Elevation / 500) = 0 THEN Elevation || ' m' END
เช่นสำหรับการใช้ความกว้างบรรทัดที่แตกต่างกันให้ใช้นิพจน์เช่นนี้สำหรับคุณสมบัติที่กำหนดข้อมูล:
CASE WHEN Elevation / 100 - floor(Elevation / 100) = 0 THEN
0.25
WHEN Elevation / 50 - floor(Elevation / 50) = 0 THEN
0.15
ELSE
0.1
END
อีกนิพจน์ที่สะดวกคือ"ELEV" LIKE '%00'
(ขั้นตอน 100 ม.) หรือ"ELEV" LIKE '%00' OR "ELEV" LIKE '%50'
(ขั้นตอน 50 ม.) หรือ"ELEV" LIKE '%0'
(ขั้นตอน 10 ม.) ฯลฯ โดยที่ "ELEV" เป็นเขตข้อมูลระดับความสูงของข้อมูลของฉัน ตัวเลือกที่สองทำงานได้ก็ต่อเมื่อ 50 เป็นช่วงเวลาหลายช่วง (10m หรือ 5m ... )