Menghasilkan gambar peta secara otomatis dengan gaya berbeda di QGIS? [Tutup]

9

Saya sudah mendapat peta sederhana di QGIS, hanya berisi 1 layer yang terdiri dari 10+ fitur. Sekarang saya perlu (secara terprogram) menghasilkan sekitar 200 gambar peta JPEG berbeda dari area yang sama. Setiap peta harus memiliki luasan peta yang sama dan semua fitur terlihat. Namun, fitur harus memiliki rangkaian warna yang berbeda di setiap peta yang dihasilkan. Secara rinci, saya memiliki file CSV yang berisi warna yang dikategorikan untuk setiap fitur (1 baris untuk setiap gambar, 1 kolom dan warna per fitur), sesuatu seperti ini:

"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"
...

Paket saya saat ini adalah menggunakan Perl atau sejenisnya untuk membuat 200 file QML berbeda berdasarkan file CSV ini. Kemudian saya berencana untuk menulis skrip Python

  1. Loop melalui file QML
  2. Buka setiap file QML, satu per satu, dan terapkan layer style darinya
  3. Buka komposer peta dan simpan file gambar raster
  4. Tutup komposer peta dan lompat ke file QML berikutnya

Saya sekarang meminta masukan tentang:

  • Bisakah ini dilakukan dalam QGIS + Python?
  • Adakah cara yang lebih baik untuk mencapai tujuan saya?
  • Petunjuk tentang kode sumber atau plugin yang ada untuk mencapai ini?
Simo A.
sumber

Jawaban:

21

Ini dimungkinkan dalam QGIS tanpa pemrograman python, tetapi Anda akan memerlukan snapshot pengembangan QGIS 2.6 saat ini karena bergantung pada fitur yang ditambahkan sejak 2.4 dirilis. Inilah langkah-langkah yang diperlukan:

  • Atur layer peta Anda seperti yang diinginkan (mengabaikan pewarnaan fitur yang akan memiliki warna dinamis)

  • Buat komposer cetak baru. Tambahkan item peta ke komposisi dan mengatur luasannya seperti yang diinginkan.

  • Impor file CSV Anda yang berisi warna fitur output peta yang diinginkan

  • Di komposer cetak, setel lapisan CSV yang diimpor sebagai "lapisan cakupan atlas" (lihat tab "Generasi Atlas"). (Jika Anda mengekspor atlas sekarang, Anda harus mendapatkan 200 salinan peta yang sama persis ...)

masukkan deskripsi gambar di sini

  • Selanjutnya, Anda perlu mengatur fitur Anda agar ditata dengan warna yang tercantum dalam file CSV Anda. Ini dilakukan melalui tombol "Properti Data Defined" di bagian bawah tab style layer:

masukkan deskripsi gambar di sini

  • Anda harus mencentang properti "Warna", lalu klik tombol "E" untuk membuka editor ekspresi.

  • Ekspresi akan menjadi seperti ini:

    attribute(  $atlasfeature , 'A' )
    

masukkan deskripsi gambar di sini

  • Pada dasarnya, ungkapan ini akan mengambil nilai yang disimpan di kolom "A" dari fitur atlas saat ini. Karena dalam kasus Anda, nilai ini akan menjadi warna (mis. # FF0000) fitur akan ditata menggunakan warna ini. (Ekspresi ini adalah bagian yang bergantung pada QGIS> 2.4 - fungsi "atribut" ditambahkan setelah 2.4 dirilis).

  • Gaya fitur lain dengan cara yang sama, tetapi menggunakan kolom 'B', 'C', 'D', dll seperti yang diinginkan

  • Kembali di komposer cetak, Anda dapat mengaktifkan pratinjau atlas (menu Atlas -> Pratinjau Atlas), dan melangkah melalui baris dari file CSV Anda menggunakan panah pada bilah alat. Jika semuanya terlihat benar, ekspor atlas menggunakan opsi di menu Atlas ... dan Anda selesai! Tidak perlu pemrograman!

Contoh output:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

dll

ndawson
sumber