Generazione automatica di immagini di mappe con stili diversi in QGIS? [chiuso]


9

Ho una semplice mappa in QGIS, contenente solo 1 livello che comprende 10+ funzioni. Ora ho bisogno di (programmaticamente) generare circa 200 diverse immagini di mappe JPEG della stessa area. Ogni mappa dovrebbe avere le stesse estensioni della mappa e tutte le funzionalità visibili. Tuttavia, le caratteristiche dovrebbero avere diversi set di colori in ciascuna mappa generata. In dettaglio, ho un file CSV che contiene i colori classificati per ogni funzione (1 riga per ogni immagine, 1 colonna e colore per funzione), qualcosa del genere:

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

Il mio piano attuale è di usare Perl o simili per creare 200 diversi file QML basati su questo file CSV. Quindi ho intenzione di scrivere uno script Python su

  1. Passa attraverso i file QML
  2. Apri ogni file QML, uno alla volta, e applica lo stile di livello da esso
  3. Apri Map Composer e salva il file di immagine raster
  4. Chiudi il compositore di mappe e passa al prossimo file QML

Chiedo ora qualsiasi input riguardante:

  • Questo può essere fatto in QGIS + Python?
  • Qualche modo migliore per raggiungere il mio obiettivo?
  • Suggerimenti su qualsiasi codice sorgente o plugin esistente per raggiungere questo obiettivo?

Risposte:


21

Ciò è possibile in QGIS senza alcuna programmazione Python, ma sarà necessaria un'istantanea di sviluppo corrente di QGIS 2.6 poiché si basa sulle funzionalità aggiunte dal rilascio della 2.4. Ecco i passaggi richiesti:

  • Imposta i livelli della mappa come desiderato (ignorando la colorazione delle funzioni che avranno riempimenti di colore dinamici)

  • Crea un nuovo compositore per la stampa. Aggiungi un elemento della mappa alla composizione e imposta le sue estensioni come desiderato.

  • Importa il tuo file CSV contenente i colori della funzione di output della mappa desiderati

  • Nel compositore di stampa, imposta il livello CSV importato come "livello di copertura atlante" (cerca la scheda "Generazione Atlas"). (Se hai esportato l'atlante ora, dovresti ottenere 200 copie della stessa identica mappa ...)

inserisci qui la descrizione dell'immagine

  • Successivamente, è necessario impostare le funzionalità in modo che siano in stile con i colori elencati nel file CSV. Questo viene fatto tramite il pulsante "Proprietà definite dai dati" nella parte inferiore della scheda di stile del livello:

inserisci qui la descrizione dell'immagine

  • È necessario selezionare la proprietà "Colore", quindi fare clic sul pulsante "E" per aprire l'editor delle espressioni.

  • L'espressione sarà qualcosa del genere:

    attribute(  $atlasfeature , 'A' )
    

inserisci qui la descrizione dell'immagine

  • Fondamentalmente, questa espressione recupererà il valore memorizzato nella colonna "A" dalla funzione atlante corrente. Poiché nel tuo caso questo valore sarà un colore (ad es. # FF0000) la funzione verrà definita con questo colore. (Questa espressione è la parte che si basa su QGIS> 2.4 - la funzione "attributo" è stata aggiunta dopo il rilascio di 2.4).

  • Modella le altre caratteristiche in modo simile, ma usando le colonne 'B', 'C', 'D', ecc. Come desiderato

  • Di nuovo nel compositore di stampa, è possibile abilitare un'anteprima dell'atlante (menu Atlas -> Anteprima Atlas) e scorrere le righe dal file CSV usando le frecce sulla barra degli strumenti. Se tutto sembra a posto, esporta l'atlante usando le opzioni nel menu Atlas ... e il gioco è fatto! Nessuna programmazione necessaria!

Esempi di output:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

ecc. ecc

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.