สร้างภาพแผนที่ด้วยสไตล์ที่แตกต่างใน QGIS โดยอัตโนมัติหรือไม่? [ปิด]


9

ฉันมีแผนที่ง่าย ๆ ใน QGIS ที่มีเพียง 1 เลเยอร์ซึ่งประกอบด้วยคุณสมบัติ 10+ ตอนนี้ฉันต้องการ (โดยทางโปรแกรม) สร้างภาพแผนที่ JPEG ที่แตกต่างกันประมาณ 200 ภาพในพื้นที่เดียวกัน แต่ละแผนที่ควรมีขอบเขตของแผนที่ที่เหมือนกันมากและมีคุณสมบัติทั้งหมดที่มองเห็นได้ อย่างไรก็ตามคุณสมบัติควรมีชุดสีที่แตกต่างกันในแต่ละแผนที่ที่สร้างขึ้น ในรายละเอียดฉันมีไฟล์ CSV ที่มีสีที่จัดหมวดหมู่สำหรับแต่ละคุณลักษณะ (1 บรรทัดสำหรับแต่ละภาพ, 1 คอลัมน์และสีต่อคุณลักษณะ), ดังนี้:

"A","B","C","D","E","F" (header line, 6 columns in this file)
"#000000","#FF0000","#00FF00","#0000FF","#0000FF","#808080"
"#000000","#FF0000","#FF0000","#00FF00","#00FF00","#808080"
"#FF0000","#FF0000","#000000","#800080","#FFFFFF","#FFFF00"
...

แผนปัจจุบันของฉันคือการใช้ Perl หรือคล้ายกันเพื่อสร้างไฟล์ QML ที่แตกต่างกัน 200 ไฟล์ตามไฟล์ CSV นี้ จากนั้นฉันวางแผนที่จะเขียนสคริปต์ Python

  1. วนซ้ำผ่านไฟล์ QML
  2. เปิดแต่ละไฟล์ QML ทีละไฟล์และใช้สไตล์เลเยอร์จากมัน
  3. เปิดโปรแกรมแต่งแผนที่และบันทึกไฟล์รูปภาพแรสเตอร์
  4. ปิดโปรแกรมสร้างแผนที่และข้ามไปยังไฟล์ QML ถัดไป

ตอนนี้ฉันกำลังขอข้อมูลที่เกี่ยวข้อง:

  • สามารถทำได้ภายใน QGIS + Python หรือไม่
  • มีวิธีใดที่ดีกว่าในการบรรลุเป้าหมายของฉัน
  • คำแนะนำเกี่ยวกับซอร์สโค้ดหรือปลั๊กอินที่มีอยู่เพื่อให้บรรลุสิ่งนี้?

คำตอบ:


21

สิ่งนี้เป็นไปได้ใน QGIS โดยไม่ต้องมีการเขียนโปรแกรมภาษาไพ ธ อน แต่คุณจะต้องมีภาพรวมการพัฒนาปัจจุบันของ QGIS 2.6 เนื่องจากต้องอาศัยคุณสมบัติที่เพิ่มเข้ามาตั้งแต่รุ่น 2.4 นี่คือขั้นตอนที่จำเป็น:

  • ตั้งค่าเลเยอร์แผนที่ของคุณตามต้องการ (ไม่ต้องสนใจสีของคุณสมบัติที่จะเติมสีแบบไดนามิก)

  • สร้างผู้แต่งงานพิมพ์ใหม่ เพิ่มรายการแผนที่ลงในองค์ประกอบและตั้งค่าขอบเขตตามที่ต้องการ

  • นำเข้าไฟล์ CSV ของคุณที่มีสีของคุณสมบัติเอาท์พุทแผนที่ที่ต้องการ

  • ในเครื่องมือแต่งเพลงให้ตั้งค่าเลเยอร์ CSV ที่นำเข้ามาเป็น "เลเยอร์ความครอบคลุมของแอตลาส" (มองหาแท็บ "การสร้าง Atlas") (ถ้าคุณส่งออกแผนที่ตอนนี้คุณควรจะได้ 200 แผนที่ที่เหมือนกันแน่นอน ... )

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

  • ถัดไปคุณต้องตั้งค่าคุณสมบัติเพื่อให้มีสไตล์ตามสีที่ระบุในไฟล์ CSV ของคุณ สิ่งนี้ทำได้ผ่านปุ่ม "คุณสมบัติที่กำหนดข้อมูล" ที่ด้านล่างของแท็บสไตล์ของเลเยอร์:

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

  • คุณจะต้องทำเครื่องหมายที่คุณสมบัติ "สี" แล้วคลิกปุ่ม "E" เพื่อเปิดตัวแก้ไขนิพจน์

  • นิพจน์จะเป็นดังนี้:

    attribute(  $atlasfeature , 'A' )
    

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

  • โดยพื้นฐานแล้วนิพจน์นี้จะดึงค่าที่เก็บไว้ในคอลัมน์ "A" จากคุณลักษณะแผนที่ปัจจุบัน เนื่องจากในกรณีของคุณค่านี้จะเป็นสี (เช่น # FF0000) คุณลักษณะจะถูกจัดรูปแบบโดยใช้สีนี้ (นิพจน์นี้เป็นส่วนที่ใช้ QGIS> 2.4 - มีการเพิ่มฟังก์ชั่น "attribute" หลังจากปล่อย 2.4)

  • จัดรูปแบบคุณสมบัติอื่น ๆ ในลักษณะที่คล้ายกัน แต่ใช้คอลัมน์ 'B', 'C', 'D', ฯลฯ ตามต้องการ

  • กลับไปที่ผู้แต่งการพิมพ์คุณสามารถเปิดใช้งานการแสดงตัวอย่างแอตลาส (เมนู Atlas -> Atlas ตัวอย่าง) และเลื่อนแถวจากไฟล์ CSV ของคุณโดยใช้ลูกศรบนแถบเครื่องมือ หากทุกอย่างดูถูกต้องให้ส่งออกแผนที่โดยใช้ตัวเลือกในเมนู Atlas ... และทำเสร็จแล้ว! ไม่จำเป็นต้องเขียนโปรแกรม!

ตัวอย่างของการส่งออก:

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

ฯลฯ

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