วิธีการเป็นสัญลักษณ์ของคุณสมบัติด้วยค่า NULL ใน symbology ที่สำเร็จการศึกษาแล้ว


15

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

จากการวิจัยของฉันคำแนะนำที่พบบ่อยที่สุดในสถานการณ์นี้คือการรวมสำเนาของชุดข้อมูลรูปหลายเหลี่ยม (หรือพื้นหลังอื่น ๆ ) ที่กำหนดสัญลักษณ์เริ่มต้น สิ่งนี้ได้ผลเพราะค่า Null ไม่ได้จัดอยู่ใน symbology ที่สำเร็จการศึกษาดังนั้นจึงสามารถเห็น "ใต้" ค่าเหล่านั้นได้ ฉันได้แนบภาพของสิ่งนี้ คุณสมบัติสีเทาเข้มไม่มีอยู่ในตารางการเข้าร่วม ( mb_percentile_isochrones_all) แต่มีอยู่ในตารางรูปหลายเหลี่ยมขอบเขต ( mb2013_wgtn) ดังนั้นฉันต้องการสองอินสแตนซ์ของmb2013_wgtnตารางเพื่อแสดงคุณลักษณะ "ไม่มีข้อมูล"

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

อย่างไรก็ตามนี่ดูเหมือนจะไม่หรูหราสำหรับฉัน สัญชาตญาณที่มากขึ้นคือการกำหนดสัญลักษณ์ค่า Null บางทีสิ่งนี้อาจโปร่งใสอย่างสมบูรณ์เพื่อให้สอดคล้องกับสิ่งที่มีอยู่ในปัจจุบันหรือบางทีมันอาจเป็นสีเทาที่ไม่ออกเสียง - สิ่งที่ผู้ใช้ต้องการ ประเด็นคือในปัจจุบันหนึ่งต้องการเลเยอร์ที่แตกต่างกันสองชั้นในเนื้อหาเพื่อจัดการสัญลักษณ์ของค่า Null ซึ่งหมายความว่าการเปลี่ยนสัญลักษณ์ของคุณลักษณะทั้งหมดของคุณในเวลาเดียวกัน (พูดถ้าคุณต้องการเพิ่มความกว้างของเส้นขอบทั้งหมด ) สิ่งนี้จะต้องได้รับการจัดการสองครั้ง: หนึ่งครั้งในคุณสมบัติสำหรับคุณสมบัติที่มีสัญลักษณ์จบการศึกษาและ หนึ่งครั้งสำหรับเลเยอร์ "พื้นหลัง" ที่จัดการสัญลักษณ์ว่าง

เป็นไปได้หรือไม่ที่จะกำหนดสัญลักษณ์ค่า "null" โดยไม่ใช้ "copy" ของเลเยอร์เดียวกันที่ใช้สำหรับ symbology ที่เรียนจบแล้วใน QGIS (2.6.1)?


เกิดอะไรขึ้นกับการมีเลเยอร์เดียวกันสองครั้งที่มีสัญลักษณ์ต่างกัน อาจใช้การกรองแอททริบิวต์เพื่อไม่ให้มีรูปหลายเหลี่ยมปรากฏในเลเยอร์ทั้งสองถ้าคุณสับสนในการระบุหรือการประมวลผลทางภูมิศาสตร์ ฟีเจอร์ที่ไม่มีใครเทียบได้นั้นเป็น 'โมฆะ' ในค่าการรวมหรือมีค่าที่ไม่ปรากฏในตารางหรือไม่?
Michael Stimson

1
1. ปัญหา: หากฉันต้องการควบคุมคุณสมบัติทั่วไปของคุณสมบัติที่มีค่าและมีค่า Null (เช่นสีเส้นขอบ) จะต้องดำเนินการสองครั้ง สิ่งนี้ทำให้ง่ายต่อการลืมเปลี่ยนหนึ่งรายการหรือทำผิดเล็กน้อย (เช่นเฉดสีเทาผิดสำหรับโครงร่าง) 2. ไม่มีปัญหาเกี่ยวกับความสับสนสำหรับกระบวนการทางภูมิศาสตร์เพียงแค่สัญลักษณ์: ฉันต้องการเป็นสัญลักษณ์ของnullคุณสมบัติในเลเยอร์เดียวกัน 3. คุณสมบัติที่ไม่ตรงกันอยู่nullในค่าการเข้าร่วมของพวกเขา (ดังที่เห็นในตารางคุณสมบัติ QGIS หลังการเข้าร่วม)
alphabetasoup

นอกจากนี้ยังทำให้ยากขึ้นเมื่อสร้างคำอธิบายประกอบเพื่อรวมตัวอย่าง "ไม่มีข้อมูล" เนื่องจากสัญลักษณ์นี้จะมาจากเลเยอร์อื่น
alphabetasoup

2
คุณถูก. ไม่มีที่ให้เลือก 'แสดงคุณสมบัติ NULL เช่นนี้' ในกล่องโต้ตอบสัญลักษณ์ที่จบการศึกษาแถวที่มีค่า NULL จะไม่ปรากฏขึ้น
Michael Stimson

คำตอบ:


17

ดังที่ @ MichaelMiles-Stimson พูดถึงแล้วดูเหมือนจะไม่มีทางที่จะเป็นสัญลักษณ์ของคุณสมบัติNULL อย่างไรก็ตามมีทางเลือกอื่นที่คุณสร้างตัวกรองเพื่อบังคับให้ QGIS ปฏิบัติต่อค่า NULLเป็นจำนวนเต็มเช่น 0 ฉันได้รวมตัวอย่างที่ฉันสร้างรูปหลายเหลี่ยมแบบง่าย ๆ 3 อันแต่ละค่าด้วยค่าที่แน่นอน:

3 รูปหลายเหลี่ยม

ตารางคุณสมบัติ

นี่คือ Symbology Graduated ที่ฉันใช้กับคำสั่งต่อไปนี้:

case when "Some_Value" IS NULL then 0 else "Some_Value" end

สัญลักษณ์จบการศึกษา

หวังว่านี่จะช่วยได้!


สิ่งนี้มีประโยชน์มากและฉันอาจนำสิ่งนี้ไปใช้ในทางปฏิบัติ ปัญหาที่ฉันคาดหวังคือ 0 เป็นค่าที่มีความหมายในชุดข้อมูลของฉัน ฉันอาจใช้ -1 หรืออะไรก็ได้ แต่ในทั้งสองกรณีนี้จะทำให้การระบุชั้นเรียนโดยอัตโนมัติแบ่งออกเป็นเทอะทะเล็กน้อย บางทีฉันควรส่งคำขอคุณลักษณะนี้เนื่องจากตอนนี้ชัดเจนว่าการแก้ไขปัญหาน้อยกว่าอุดมคติ
alphabetasoup

ใช่การรวมNULLค่าอาจมีประโยชน์ทีเดียว มันไม่ได้เป็นวิธีแก้ปัญหาที่สวย แต่คุณสามารถส่งคำขอคุณลักษณะและหวังว่ามันจะกลายเป็นที่มีอยู่ในรุ่นถัดไป :)
โจเซฟ

6

ฉันรู้ว่ามันได้รับคำตอบ แต่เพียงเพื่อให้ตัวเลือกอื่น:

คุณสามารถออกจากฟิลด์โดยไม่มีตัวกรองหรือค่า (ฉันรู้ว่ามันเหมาะสำหรับ CATEGORIZED หรือ RULE BASED):

http://docs.qgis.org/2.0/uk/docs/training_manual/vector_classification/classification.html

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

ฉันใช้ QGIS 2.10 และใช้งานได้


ยินดีที่ได้ทราบวิธีการเพิ่มเติมในการแก้ปัญหาเสมอ! +1
โจเซฟ

1
สนับสนุนให้เห็นการปรับปรุงนี้ตั้งแต่ 2.6 ใช่ไหม? คุณสามารถยืนยันได้ว่ามันทำงานเมื่อค่า Null มาจากตารางที่เข้าร่วม?
alphabetasoup

1
คู่ของบันทึกเกี่ยวกับเรื่องนี้แม้ว่า สัญลักษณ์ว่างหรือ NULL ในสัญลักษณ์ตามกฎจะถูกนำไปใช้กับคุณสมบัติทั้งหมด กฎถูกนำมาใช้จากบนลงล่างดังนั้นมันอาจถูกซ้อนทับโดยกฎอื่น แต่ NULL ก็จะอยู่ที่นั่นด้วย สำคัญหากเป็นอาการที่รุนแรง นอกจากนี้คุณยังสามารถ "สร้าง" กฎของคุณได้โดยสร้างเป็นครั้งแรกในกลุ่มที่มีการจัดหมวดหมู่หรือจบการศึกษาจากนั้นสลับไปที่ Rule Based /
HeikkiVesanto

@Vesanto ฉันไม่ทราบว่าฉันได้รับมันหรือว่าเป็นปัญหา ในกรณีของฉันฉันกำลังเพิ่มค่า Z ลงใน SHP ที่ทำจากเส้นชั้นความสูงซึ่ง แต่เดิมไม่มีค่า Z (Z = NULL) ฉันได้ตั้งค่าคุณสมบัติที่มีค่า NULL เป็นสีแดงและคุณสมบัติที่มีค่าเป็นสีดำ เมื่อทำการแก้ไขทันทีที่ฉันตั้งค่า Z คุณสมบัติ (เส้นรูปร่าง) จะเปลี่ยนจากสีแดงเป็นสีดำด้วยวิธีนี้ฉันรู้ว่าฉันยังไม่ได้ตั้งค่า Z
Marcos Saito

@Marcos จะไม่มีปัญหาในกรณีของคุณ แต่สมมติว่าบรรทัดนั้นเป็นสีแดงเพื่อเริ่มต้นและคุณต้องการที่จะทำให้มันมองไม่เห็นเมื่อมันไม่ว่างอีกต่อไป ที่จะไม่ทำงาน
HeikkiVesanto

4

เช่นเดียวกับที่ผู้ใช้รายอื่นพูดถึงตัวเลือกที่ดีที่สุดคือการใช้สัญลักษณ์ตามกฎ หากต้องการหลีกเลี่ยงการสร้างกฎด้วยตนเอง:

  1. เปลี่ยนชนิดของสัญลักษณ์ที่จะจบการศึกษา
  2. กำหนดคอลัมน์สัญลักษณ์สีช่วงเวลาและอื่น ๆ ตามปกติ สัญลักษณ์จบการศึกษาที่มีค่า Null ไม่แสดง
  3. เปลี่ยนชนิดสัญลักษณ์จากจบการศึกษาที่จะอิงตามกฎ สัญลักษณ์ที่กำหนดในขั้นตอนก่อนหน้าจะถูกนำไปใช้ คลิกที่ปุ่มสัญลักษณ์เพิ่มและเลือกอื่น เปลี่ยนสไตล์ตามความเหมาะสม คลาสสัญลักษณ์ ELSE นี้จะตรวจจับค่าใด ๆ ที่ยังไม่ได้ทำสัญลักษณ์รวมถึงค่า Null การเพิ่มสัญลักษณ์ catch-all ทั้งหมด
  4. คลิกตกลง ค่า Null จะเป็นสัญลักษณ์ สัญลักษณ์ที่สำเร็จการศึกษารวมถึงค่า Null

(ทดสอบใน QGIS 3.6.0)


ง่ายและมีประโยชน์ ขอบคุณ ฉันขอแนะนำให้ QGIS ควรมีตัวเลือกยกเว้นสำหรับการจำแนกประเภทที่สำเร็จการศึกษา ฉันรู้สึกสับสนเมื่อพยายามจำแนกด้วยค่า nodata ที่ตั้งค่าสถานะเป็น -1, -999 ... เป็นต้น (ใช้ QGIS 3.14 LTR) โชคดีที่ QGIS จะละเว้นค่า Null โดยอัตโนมัติอย่างน้อยที่สุดเมื่อทำการแสดงสัญลักษณ์จบการศึกษา
Iván Santiago
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.