เลือกเส้นชั้นความสูงเพียงเส้นเดียวเพื่อติดป้ายใน QGIS?


12

เป็นไปได้หรือไม่ที่จะเลือกเฉพาะเส้นชั้นความสูงสำหรับการติดฉลาก?

ฉันมีป้ายกำกับจำนวนมากสำหรับแต่ละบรรทัดและฉันต้องการติดป้ายกำกับเฉพาะป้ายหลักเช่น1000 mและ1500 m


ไม่แน่ใจว่านี่เป็นสิ่งที่ซ้ำกันหรือไม่ แต่คุณสามารถดูgis.stackexchange.com/q/89501/1297และgis.stackexchange.com/q/59778/1297เพื่อดูว่าสิ่งเหล่านั้นทำให้คุณใกล้ชิดกับสิ่งที่คุณทำมากขึ้นหรือไม่ กำลังมองหา? และฉันคิดว่ามันจะช่วยให้คำถามของคุณถ้าคุณให้รายละเอียดบางอย่างเกี่ยวกับสิ่งที่คุณพยายามและบางทีมันอาจจะผิด
SaultDon

คำตอบ:


13

ใน QGIS 2.6 (อาจเป็นรุ่นก่อนหน้าเช่นกันฉันไม่รู้) คุณสามารถทำได้ภายใต้คุณสมบัติเลเยอร์Labelsแท็บRenderingส่วน รายการตัวเลือกการแสดงผลประมาณครึ่งหนึ่งเป็นปุ่มที่จะช่วยให้คุณเขียนนิพจน์ซึ่งจะกำหนดรายการคุณลักษณะที่จะติดป้ายจริง ๆ "Elevation" IN (1000, 1500)การแสดงออกของคุณจะเป็นสิ่งที่ชอบ นี่คือปุ่ม (เป็นสีเหลือง) ฉันได้ตั้งค่านี้ให้กับรูปทรงฉลากเท่านั้นที่มีค่าระดับความสูง 32:

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


11

วิธีหนึ่งคือการโหลดเลเยอร์รูปร่างและสไตล์ จากนั้นโหลดเลเยอร์เดียวกันอีกครั้งและใช้ตัวกรอง (คลิกขวาที่เลเยอร์แล้วไปที่ 'ตัวกรอง .. ') ใช้นิพจน์ตัวกรองที่คล้ายกับที่แสดงในรูปภาพ ในกรณีของฉันฉันต้องการรูปทรงที่สำคัญในช่วงแนวตั้ง 50 เมตรและสนามที่มีค่าระดับความสูงถูกเรียกว่า "prop_value"

เมื่อเลเยอร์ที่กรองแล้วซึ่งแสดงรูปร่างที่สำคัญได้โหลดใช้ป้ายกำกับรูปร่างและ (ถ้าจำเป็น) เสริมความแข็งแกร่งของรูปแบบของเส้นดังที่แสดง

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

การแสดงออกของตัวกรอง:

("prop_value" % 50) = 0

จะเลือกรูปทรงตามช่วงเวลาในแนวตั้งที่ 50 เมตร ทำงานกับฐานข้อมูล Spatialite ไม่แน่ใจเกี่ยวกับ shapefiles


6

ฉันใช้วิธีการนี้ซึ่งทำให้การติดฉลากและการแสดงเส้นขอบตามเงื่อนไขค่อนข้างง่าย

ฉันใช้ "คุณสมบัติที่กำหนดข้อมูล" ของความกว้างสัญลักษณ์เส้นและสีของเส้นขอบด้วยนิพจน์ (ดูภาพหน้าจอ 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

สกรีนช็อต 1 สกรีนช็อต 2


@catindri ใจในการตรวจสอบคำตอบ ..
เคย์

3

อีกนิพจน์ที่สะดวกคือ"ELEV" LIKE '%00'(ขั้นตอน 100 ม.) หรือ"ELEV" LIKE '%00' OR "ELEV" LIKE '%50'(ขั้นตอน 50 ม.) หรือ"ELEV" LIKE '%0'(ขั้นตอน 10 ม.) ฯลฯ โดยที่ "ELEV" เป็นเขตข้อมูลระดับความสูงของข้อมูลของฉัน ตัวเลือกที่สองทำงานได้ก็ต่อเมื่อ 50 เป็นช่วงเวลาหลายช่วง (10m หรือ 5m ... )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.