คำตอบ:
ใช่ทำได้ โดยปกติฉันจะแนะนำบัฟเฟอร์แบบโปร่งใสบางส่วน แต่ฉันเห็นว่าทำไมคุณถึงต้องการทำแผนที่แบบนี้
สิ่งนี้อาจช้าและคุณต้องตัดสินใจด้วยตนเองว่าต้องการให้ป้ายกำกับไปที่ใด - แต่พูดตามระบบการพิมพ์ตามลำดับนั่นไม่ใช่เรื่องเลวร้าย!
นี่คือภาพหน้าจอ ...
อย่างที่คุณเห็นไม่มีบัฟเฟอร์ แรสเตอร์ด้านล่างไม่ได้รับผลกระทบ ฉันได้รวมเส้นชั้นความสูงระดับกลางเรียวลงและจัดรูปแบบพวกเขาดังนั้นพวกเขาจึงแสดงเฉพาะเมื่อELEV% 50 <> 0
ฉันเคยทำสิ่งนี้ใน QGIS 2.12 ... ระยะทางของคุณอาจแตกต่างกันไปตามรุ่นก่อนหน้า
ฉันถือว่าที่นี่คุณมีฟิลด์ "ELEV" ในแต่ละเส้นชั้นความสูง
แบ่งส่วนของเส้นชั้นความสูง
ใช้การประมวลผลและอัลกอริทึม GRASS v.split.lengthเพื่อแบ่งรูปทรงของคุณออกเป็นส่วน ๆ ที่มีความยาวเท่ากัน คุณต้องเลือกความยาวซึ่งจะใกล้เคียงกับขนาดของฉลากในหน่วยแผนที่โดยสมมติว่าคุณใช้เมตร ที่นี่ฉันใช้ 200m
ระวังด้วยสิ่งนี้เพราะมันจะทำให้ไฟล์ของคุณมีขนาดใหญ่ขึ้นมาก (โปรดทราบว่าคุณสมบัติจะนับในภาพหน้าจอ)
ในการหลีกเลี่ยงปัญหานี้คุณอาจต้องการสร้างเฉพาะเส้นชั้นความสูงที่คุณต้องการจัดรูปแบบ (เช่นทุก 50 หรือ 100 เมตร) เพื่อหลีกเลี่ยงการประมวลผลเส้นชั้นความสูงระดับกลางทั้งหมด
ชั้นนี้เพิ่มเขตข้อมูลจำนวนเต็ม 1 บาทเรียกว่าshowLabel เริ่มต้นที่ 0 หรือ NULL
เปลี่ยนป้ายกำกับเพื่อแสดงเฉพาะในส่วนที่ฟิลด์นี้ตั้งค่าเป็น 1 ใช้สิ่งนี้สำหรับการแสดงออกของข้อความฉลาก ...
if ( "showlabel" is not null, "ELEV", "")
ฉันคิดว่าถ้า (การแสดงออกค่าจริงมูลค่าเท็จ)ค่อนข้างใหม่ หากใช้รุ่นเก่ากว่าคุณสามารถใช้CASE-ELSE
เปลี่ยนสไตล์ของเส้นเพื่อให้มีการลากส่วนที่มีความยาวคงที่ทั้งหมดยกเว้นส่วนที่มีการแสดงฉลาก ดังนั้นให้ใช้การแสดงผลแบบอิงกฎกับกฎสองข้อ
Rule 1: "showLabel" is null
Black, 0% transparent
Rule 2: "showLabel" is not null
Any colour, 100% transparent
ตอนนี้รูปทรงทั้งหมดจะแสดงตามค่าเริ่มต้น แต่ไม่มีป้ายกำกับ
แก้ไขกลุ่มที่คุณต้องการแสดงป้ายกำกับด้วยตนเอง
เข้าสู่โหมดแก้ไขและเลือกกลุ่มที่คุณต้องการให้แสดงค่า contour และตั้งค่าshowLabel
เป็น 1 สำหรับคุณสมบัติที่เลือก คุณสามารถใช้Ctrl+ select (บน Ubuntu / Win, Cmd+ Ctrl+ คลิก / บน Mac?) เพื่อเลือกหลายส่วนเพื่อเพิ่มความเร็ว
ตอนนี้ควร 'ตัด' รูปทรงที่คุณต้องการให้ป้ายชื่อแสดงและป้ายกำกับจะปรากฏในช่องว่าง
ในกรณีนี้การตั้งค่าป้ายกำกับของฉันคือ:
CRS: EPSG 27700 (Local UTM for UK, in meters)
Text size: 50 map units
Placement: Parallel, On Line
หวังว่าจะช่วย!
ฉันใช้ตัวเลือก "บัฟเฟอร์" บนแท็บ "การตั้งค่าป้ายกำกับ" (การใช้ปุ่มป้ายกำกับไม่ใช่ตัวเลือกป้ายกำกับเก่าบนกล่องโต้ตอบคุณสมบัติเลเยอร์) สิ่งนี้ไม่ได้ลบล้างเส้นชั้นความสูงตามที่ฉันจินตนาการว่าคุณต้องการจะทำ แต่มันทำให้ป้ายข้อความชัดเจน
ฉันคิดว่าสิ่งที่ใกล้เคียงที่สุดที่จะได้รับจากความสามารถของ QGIS ในปัจจุบันคือการใช้เอฟเฟกต์halo (หรือพื้นหลัง) ด้วยสีที่มาจากตารางซึ่งจะขึ้นอยู่กับค่าระดับความสูงและโทนสีที่เหมือนกับตารางพื้นฐาน แน่นอนว่าสิ่งนี้จะไม่นำมาพิจารณาที่เนินเขาและทุกอย่างอื่นจะต่ำกว่ารัศมีในแผนที่ ตัวอย่างสีแบบสุ่ม: ด้วยโค้ดบางส่วนสามารถเขียนใหม่เป็นฟังก์ชันเพื่อสะท้อนสีของกริด
ในทางทฤษฎีมันควรจะเป็นไปได้ที่จะใช้รูปแบบเส้นที่กำหนดเองและป้ายซ้ำ + ชดเชย น่าเสียดายที่ไม่มีการตั้งค่าการชดเชยฉลาก
หลังจากพบปัญหาเดียวกันเมื่อเร็ว ๆ นี้ฉันได้รวบรวมสคริปต์ QGIS Python เพื่อยกระดับอย่างหนัก สคริปต์รวมถึงข้อมูลการทดสอบ (สหราชอาณาจักร), Readme (คำแนะนำ) และสไตล์ชีตที่ใช้สามารถดูได้ที่https://github.com/pjgeng/Contour-Labels
ในระยะสั้นสคริปต์จะใช้สองเวกเตอร์เลเยอร์เป็นอินพุต - ชั้นรูปร่างที่มีคำอธิบายประกอบและเลเยอร์ "เส้นบอกแนว" หลังประกอบด้วย polylines ตัดกันรูปทรงที่ตำแหน่งฉลากที่ต้องการ
จากนั้นสคริปต์จะทำงานโดยอิงตามระยะห่างระหว่างรูปร่างและช่วงเวลาของดัชนีรูปร่างที่จะใช้ป้ายกำกับเพิ่มค่าการหมุนไปยังจุดที่ฉลากและในที่สุดก็คลิปเลเยอร์รูปร่างเดิมเพื่อสร้างช่องว่าง
วิธีการใช้งานได้ดีโดยเฉพาะอย่างยิ่งหากผู้ใช้จำเป็นต้องจัดทำแผนที่รูปร่างในช่วงเวลาที่แตกต่างกันในพื้นที่เดียวกัน (เช่นคำแนะนำไม่เปลี่ยนแปลง) ข้อเสียเปรียบคือไม่สามารถเปลี่ยนตำแหน่งของฉลากได้เมื่อสคริปต์เสร็จสิ้น สำหรับเรื่องนี้ผู้ใช้จะต้องปรับเส้นไกด์และรันสคริปต์อีกครั้งกับอินพุตต้นฉบับ ก่อนหน้านี้ฉันเคยทำงานกับบัฟเฟอร์รอบ ๆ ฉลากเพื่อสร้างเอฟเฟกต์ที่ถูกขัดจังหวะ แต่สิ่งนี้กลับกลายเป็นสิ่งที่ไม่พึงประสงค์ในแผนที่เวกเตอร์ที่ขับเคลื่อนด้วยข้อมูล
น่าเสียดายที่ฉันไม่สามารถเพิ่มรูปภาพได้อีกในเวลานี้เพื่อจัดทำเอกสารหรือแสดงขั้นตอนเพิ่มเติม
PS: หากใช้เลเยอร์สไตล์ที่ให้ไว้ในที่เก็บผู้ใช้อาจต้อง "เปิดใช้งาน" ฟิลด์ที่กำหนดเองสำหรับ "การหมุน", "แสดงฉลาก" และ "แสดงเสมอ" ในเมนูการติดฉลาก ในการติดตั้ง QGIS สิ่งเหล่านี้จะถูกนำไปใช้โดยอัตโนมัติจากสไตล์ชีท - ฉันยังไม่พบสาเหตุที่เป็นสาเหตุ
คุณจำหัวข้อนี้ได้ไหม วิธีเดียวที่ฉันสามารถนึกถึงการแก้ไขปัญหาของคุณคือการวางเลเยอร์ contour ของคุณด้วยเลเยอร์ contour clipped ใช้สิ่งนี้เพื่อทำเลเบลและเปลี่ยนสีของเส้นให้เป็นสิ่งที่เป็นกลางที่จะปกปิด contours ภายใต้เลเบล หนึ่งความหวังโดยไม่ล่วงล้ำเกินไป N.
เพิ่มในภายหลัง: มันอาจจะคุ้มค่าที่จะอ่านกระทู้นี้เช่นกันคำตอบที่สอง บางทีการแบ่งเส้นชั้นความสูงอาจเป็นคำตอบบางทีการใช้เลเยอร์บัฟเฟอร์ที่ใช้เพื่อตัดรูปทรง?
รายการบล็อก ESRI: http://blogs.esri.com/esri/arcgis/2011/11/28/variable-depth-masking-contour-label-example/ ตัวอย่าง
การปิดบังเชิงลึกแบบแปรผันสำหรับป้ายกำกับรูปร่างมีสามขั้นตอน:
1 การสร้างคำอธิบายประกอบจากป้ายกำกับ 2 การใช้เครื่องมือมาส์กคุณสมบัติโครงร่างเพื่อสร้างมาสก์และ 3 ใช้ตัวเลือกการวาดขั้นสูง> การตั้งค่าการปิดบังเพื่อระบุเลเยอร์มาสก์ที่จะปิดบัง