การป้องกันไม่ให้ป้ายข้อความซ้อนทับเครื่องหมายอื่น ๆ ใน QGIS?


14

มีวิธีการภายใน QGIS ในการป้องกันไม่ให้เลเบลข้อความซ้อนทับไอคอนที่ใช้เพื่อเลเบลเลเยอร์จุดหรือไม่?

ในแผนที่ตัวอย่างที่แสดงด้านล่างมีสองชั้น:

  1. เลเยอร์ถนนซึ่งมีป้ายกำกับโดยใช้เครื่องมือการทำป้ายกำกับใหม่
  2. เลเยอร์จุดซึ่งใช้ไอคอน svg เพื่อแสดงโล่ทางหลวง

ฉันมีกรณีการใช้งานอื่น ๆ สำหรับสิ่งนี้เช่นการป้องกันการทับซ้อนไอคอนสถานีรถไฟ ในตัวอย่างนี้ฉันสามารถย้ายจุดอย่างไรก็ตามในกรณีอื่น ๆ เช่นสถานีรถไฟใต้ดินนั่นไม่ใช่วิธีแก้ปัญหาที่ใช้การได้

ทางออกที่เป็นไปได้ที่ฉันกำลังพิจารณาจะเกี่ยวข้องกับ:

  1. การเพิ่มคอลัมน์ไปยังไฟล์ dbf ของเลเยอร์จุด
  2. เติมคอลัมน์ที่เพิ่มด้วยNullหรือช่องว่าง
  3. เปิดใช้งานการติดฉลาก [สไตล์ใหม่] ของ QGIS สำหรับคอลัมน์ที่เพิ่ม

นี่เป็นวิธีที่จะไปหรือมีวิธีที่ดีกว่า

แผนที่ตัวอย่าง

ข้อมูล QGIS: ฉันใช้รุ่น 1.7.4 และรุ่น 1.8 ที่คอมไพล์เมื่อเร็ว ๆ นี้บน Mac OS 10.7.4 ฉันยังมีรุ่น Linux และ Windows


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

  1. แทนการใช้อักขระช่องว่างหรือNullเป็นพื้นที่ที่ไม่ทำลายจะต้องมีการใช้ ขณะที่การทดสอบผมพบว่าเขตข้อมูลที่มีNullจะไม่แสดงผลและสาขาที่มีเพียงพื้นที่ (s) จะถูกแปลงเป็นNull (ดูหน้าวิกิพีเดียนี้สำหรับข้อมูลเกี่ยวกับวิธีการพิมพ์ช่องว่างไม่แตก )
  2. ขณะที่การตั้งชั้นติดฉลากการตั้งค่าบนแท็บขั้นสูงกำหนดตำแหน่งไปกว่าจุด นอกจากนี้ยังตั้งค่าระดับความสำคัญให้สูงกว่าเลเยอร์ที่มีเลเบลอื่น ๆ

ขึ้นอยู่กับขนาดของไอคอนที่ใช้การทดลองบางอย่างอาจต้องใช้เพื่อให้ได้ผลตามที่คาดหวัง อาจใช้อักขระหลายตัวได้ง่ายขึ้นแทนที่จะพยายามเพิ่มน้ำหนักตัวอักษรและ / หรือขนาดทั้งนี้ขึ้นอยู่กับสถานการณ์

แผนที่ตัวอย่าง 2

ทดสอบกับ QGIS 1.7 และคอมไพล์ล่าสุดของ 1.8 บน Mac OS 10.7.4


1
คุณสามารถตอบคำถามของคุณเอง ฉันต้องการโหวตให้คุณ
underdark

คุณสามารถทำการต่อข้อมูลแบบเดียวกับที่ฉันทำ: ที่นี่
jlSta

คำตอบ:


8

ทางออกที่สอดคล้องที่ดีที่สุดที่ฉันมีอยู่คือตามแนวของสิ่งที่ฉันได้วางไว้ด้านบน สมมติว่ามีการใช้ไฟล์ SHP ขั้นตอนคือ:

  1. เปิดไฟล์ dbf ด้วยแอ็พพลิเคชันสเปร็ดชีตเช่น LibreOffice, Excel หรือปลั๊กอิน QGIS Table Manager
  2. เพิ่มคอลัมน์ลงในตาราง หากจำเป็นต้องใช้ชนิดข้อมูลให้ใช้สตริง
  3. เติมเซลล์ที่มีพื้นที่ที่ไม่ทำลาย เมื่อเสร็จแล้วให้บันทึกการเปลี่ยนแปลง (ดูหน้าวิกิพีเดียนี้สำหรับข้อมูลเกี่ยวกับวิธีการพิมพ์ช่องว่างไม่แตก)
  4. เปิดการตั้งค่าเลเบลเลเยอร์สำหรับเลเยอร์จุด บนแท็บขั้นสูงให้ตั้งค่าตำแหน่งเป็นโอเวอร์พอยต์และตั้งค่าระดับความสำคัญให้สูงกว่าเลเยอร์ที่มีเลเบลอื่น ๆ

2
ใน 2.14 คุณไม่จำเป็นต้องเพิ่มคอลัมน์ใหม่เพียงแค่ใส่ '' เป็นป้ายกำกับ
ฟาเอล

3

ฉันรู้ว่านี่เก่า แต่คุณสามารถเพิ่มคอลัมน์ "X Coordinate" และ "Y Coordinate" (ความแม่นยำสองเท่า) ลงในตารางที่เก็บข้อมูลนั้นแล้วไปที่แท็บ "Data Defined Settings" ภายใต้ Labels ในคุณสมบัติเลเยอร์และเปลี่ยน พิกัด X และพิกัด Y ตามลำดับ เมื่อคุณทำเช่นนั้นคุณสามารถย้ายป้ายกำกับด้วยมือเปล่าโดยใช้ปุ่มย้ายป้าย


1

ฉันเพิ่งโพสต์คำตอบอื่นให้กับปัญหาที่คล้ายกัน วิธีการใช้สัญลักษณ์ svg แทนเลเยอร์และใช้ประโยชน์จากการแทนที่ข้อมูลที่กำหนดไว้เพื่อตั้งค่าเส้นทางเป็นสัญลักษณ์ svg ที่แตกต่างกันสำหรับแต่ละค่าคุณลักษณะ cp คำตอบของฉันสำหรับสัญลักษณ์ด้านบนฉลากในแผนที่ QGIS


0

คุณสามารถทดลองกับการชดเชยของฉลาก

ฉันพบว่าช่วยให้การจัดวางฉลากเป็นแบบไดนามิกมากขึ้นหากฉันตั้งไว้ที่ 2 มม. หรือมากกว่านั้น


ไม่ฉันไม่ได้พยายามทำสิ่งนี้ เหตุผลหลักที่ฉันไม่ได้เปลี่ยนการจัดวางฉลากเป็นเพราะในพื้นที่อื่น ๆ ของแผนที่ (ไม่ใช่ภาพ) เครือข่ายถนนมีความหนาแน่นมาก ในตัวอย่างด้านบนการย้ายไอคอนประมาณ 2 มม. (ทิศทางใดก็ได้) จะช่วยแก้ไขปัญหาได้ อย่างไรก็ตามในส่วนอื่น ๆ ของแผนที่อาจเป็นไปได้ที่จะผลักไอคอนให้ลึกลงไปในป้ายกำกับอื่น
DMan

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