4.2. Lesson: Creare un layout di stampa dinamico

Ora che hai imparato a creare un layout di base per la mappa facciamo un passo in avanti e creiamo un layout che si adatta dinamicamente all’estensione della nostra mappa ed alle proprietà della pagina, p. e. quando si cambia la dimensione della pagina. Inoltre, anche la data di creazione di adatterà dinamicamente.

4.2.1. moderate Follow Along: Creare l’area della mappa dinamica

  1. Carica i dataset ESRI protected_areas.shp, places.shp, rivers.shp e water.shp nell’area mappa ed adatta le proprietà a tua preferenza.

  2. Dopo che tutto è disegnato e simbolizzato a tuo piacimento, clicca sull’icona newLayout Nuovo Layout di Stampa nella barra oppure scegli Progetto ▶ Nuovo Layout di Stampa. Ti verrà chiesto di scegliere un titolo per il nuovo layout di stampa.

  3. Vogliamo creare un layout consistente in un’intestazione e una mappa della regione vicino Swellendam, South Africa. Il layout dovrebbe avere un margine di 7,5 mm e l’intestazione dovrebbe essere alta 36 mm.

  4. Crea un elemento chiamato main map sull’area e vai al pannello Layout. Scorri verso il basso alla sezione Variabili e trova la parte Layout. Qui imposteremo alcune variabili che puoi usare su tutto il layout dinamico. Vai al pannello Layout e scorri verso il basso alla sezione Variables. La prima variabile definirà il margine. Premi il pulsante signPlus e scrivi il nome sw_layout_margin. Imposta il valore di 7,5. Premi il pulsante signPlus di nuovo e scrivi il nome sw_layout_height_header. Imposta il valore 36.

  5. Ora sei pronto per creare automaticamente la dimensione e posizione dell’area di mappa in base alle variabili. Assicurati che il tuo elemento mappa sia selezionato, vai al pannello Proprietà dell’oggetto, scorri verso il basso e apri la sezione Posizione e Dimensione. Clicca su dataDefineExpressionOn Sovrascrittura definita dai dati per X e dalla voce Variabile, scegli @sw_layout_margin.

  6. Clicca dataDefineExpressionOn Sovrascrittura definita dai dati per Y, scegli Modifica… e scrivi la formula:

    to_real(@sw_layout_margin) + to_real(@sw_layout_height_header)
    
  7. Puoi creare la dimensione dell’elemento mappa usando le variabili per Larghezza e Altezza. Clicca dataDefineExpressionOn Sovrascrittura definita dai dati per Larghezza e scegli Modifica … di nuovo. Inserisci la formula:

    @layout_pagewidth - @sw_layout_margin * 2
    

    Click the dataDefineExpressionOn Sovrascrittura definita dai dati per Altezza e scegli Modifica …. Qui inserisci la formula:

    @layout_pageheight -  @sw_layout_height_header -  @sw_layout_margin * 2
    
  8. Creeremo anche un reticolo contenente le coordinate dell’estensione dell’area mappa. Vai di nuovo su Proprietà dell’oggetto e scegli la sezione Reticoli. Inserisci un reticolo cliccando sul pulsante signPlus. Clicca su Modifica Reticolo … ed imposta Intervallo per X, Y e Offset in base alla scala della mappa che hai scelto nell’area mappa in QGIS. Il Tipo Reticolo Croce è adatto ai nostri scopi.

4.2.2. moderate Follow Along: Creare l’intestazione dinamica

  1. Inserisci il rettangolo che conterrà l’intestazione con il pulsante addBasicShape Aggiungi Forma. Nel pannello Oggetti inserisci il nome header.

  2. Di nuovo, vai in Proprietà dell’oggetto ed apri la sezione Position and Size. Usando dataDefineExpressionOn Sovrascrittura definita dai dati, scegli la variabile sw_layout_margin per X come per Y. Larghezza sarà definita dall’espressione:

    @layout_pagewidth - @sw_layout_margin * 2
    

    e Altezza dalla variabile sw_layout_height_header.

  3. Inseriremo una linea orizzontale e due linee verticali per dividere l’intestazione in sezioni usando addNodesShape Aggiungi Nodo. Crea una linea orizzontale e due linee verticali e chiamale Horizontal line, Vertical line 1 Vertical line 2.

    1. Per la linea orizzontale:

      1. Imposta X alla variabile sw_layout_margin

      2. Imposta l’espressione per Y a:

        @sw_layout_margin + 8
        
      3. Imposta l’espressione per Width a:

        @layout_pagewidth -  @sw_layout_margin * 3 - 53.5
        
    2. Per la prima linea verticale:

      1. Imposta l’espressione per Width a:

        @layout_pagewidth - @sw_layout_margin * 2 - 53.5
        
      2. Imposta Y alla variabile sw_layout_margin

      3. L’altezza deve essere la stessa dell’intestazione creata, quindi imposta Altezza alla variabile sw_layout_height_header.

    3. La seconda linea verticale è piazzata a sinistra della prima.

      1. Imposta l’espressione per Width a:

        @layout_pagewidth - @sw_layout_margin * 2 - 83.5
        
      2. Imposta Y alla variabile sw_layout_margin

      3. L’altezza dovrà essere la stessa dell’altra linea verticale, quindi imposta Altezza alla variabile sw_layout_height_header.

    La figura seguente mostra la struttura del nostro layout dinamico. Riempiremo le aree create dalla linea con alcuni elementi.

../../../_images/dynamic_layout_structure.png

4.2.3. moderate Follow Along: Creare etichette per l’intestazione dinamica

  1. Il titolo del nostro progetto QGIS può essere incluso automaticamente. Il titolo è impostato in Proprietà Progetto. Inserisci un’etichetta con il pulsante Aggiungi Etichetta e chiamala project title (variable). In Proprietà Principali del pannello Proprietà dell’oggetto inserisci l’espressione:

    [%@project title%]
    

    Imposta la posizione dell’etichetta.

    1. Per X, usa l’espressione:

      @sw_layout_margin + 3
      
    2. Per Y, usa l’espressione:

      @sw_layout_margin + 0.25
      
    3. Per Width, usa l’espressione:

      @layout_pagewidth - @sw_layout_margin *2 - 90
      
    4. Inerisci 11,25 per Altezza

    Sotto Aspetto imposta la dimensione del carattere a 16 pt.

  2. La seconda etichetta includerà una descrizione della mappa che hai creato. Di nuovo, inserisci un’etichetta e chiamala map description. In Proprietà Principali inserisci il testo map description. In Proprietà Principali includeremo anche:

    printed on: [%format_date(now(),'dd.MM.yyyy')%]
    

    Qui abbiamo usato due funzioni di Data e Ora (now e format_date).

    Imposta la posizione dell’etichetta.

    1. Per X, usa l’espressione:

      @sw_layout_margin + 3
      
    2. Per Y, usa l’espressione:

      @sw_layout_margin + 11.5
      
  3. La terza etichetta includerà informazioni sulla tua azienda. Prima crea alcune variabili nel menu Variabili di Proprietà dell’oggetto. Vai la menu Layout, clicca sul pulsante signPlus ogni volta ed inserisci i nomi o_department, o_name , o_adress e o_postcode. Nella seconda riga inserisci le informazioni della tua azienda. Useremo queste variabili nella sezione Proprietà Principali.

    In Proprietà Principali inserisci:

    [% @o_name %]
    [% @o_department %]
    [% @o_adress %]
    [% @o_postcode %]
    

    Imposta la posizione dell’etichetta.

    1. Per X, usa l’espressione:

      @layout_pagewidth - @sw_layout_margin - 49.5
      
    2. Per Y, usa l’espressione:

      @sw_layout_margin + 15.5
      
    3. Per Larghezza, usa 49,00

    4. Per Altezza, usa l’espressione:

      @sw_layout_height_header - 15.5
      
../../../_images/dynamic_layout_organisation.png

4.2.4. moderate Follow Along: Aggiungere immagini all’intestazione dinamica

  1. Usa il pulsante addNewImage Aggiungi Immagine per inserire un’immagine sopra l’etichetta organisation information. Dopo aver inserito il nome organisation logo definisci la posizione e dimensione del logo:

    1. Per X, usa l’espressione:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. Per Y, usa l’espressione:

      @sw_layout_margin + 3.5
      
    3. Per Larghezza, usa 39,292

    4. Per Altezza, use 9,583

    Per includere un logo della tua azienda devi salvare il logo nella tua cartella principale ed inserire il percorso in Proprietà Principali ▶ Sorgente dell’immagine.

  2. Il nostro layout ha ancora bisogno di una freccia per il nord. Questa sarà inserita usando northArrow Aggiungi Freccia Nord. Useremo la freccia nord predefinita. Definisci la posizione:

    1. Per X, usa l’espressione:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. Per Y, usa l’espressione:

      @sw_layout_margin + 9
      
    3. Per Larghezza, usa 21,027

    4. Per Altezza, usa 21,157

4.2.5. moderate Follow Along: Creare la barra di scala per l’intestazione dinamica

  1. Per inserire una barra di scala nell’intestazione clicca su addScalebar Aggiungi Barra di Scala e posizionala nel rettangolo sopra la freccia nord. In Mappa sotto Proprietà Principali scegli main map(Map 1). Questo significa che la scala cambierà automaticamente a seconda che hai scelto nell’area di disegno principale di QGIS. Scegli lo Stile Numerico. Questo significa che inseriremo una semplice scala senza barra. La scala necessita ancora di una posizione e dimensione.

    1. Per X, usa l’espressione:

      @layout_pagewidth - @sw_layout_margin * 2 - 78
      
    2. Per Y, usa l’espressione:

      @sw_layout_margin + 1
      
    3. Per Larghezza, usa 25

    4. Per Altezza, use 8

    5. Posiziona il Punto di riferimento al centro.

Congratulazioni! Hai creato il tuo primo layout di mappa dinamico. Dai uno sguardo al layout e controlla se tutto appare come vuoi! Il layout di mappa dinamico reagisce automaticamente quando cambi le Priprietà pagina. Per esempio, se cambi la dimensione della pagina da DIN A4 a DIN A3, clicca sul pulsante refresh Aggiorna vista e la struttura della pagina viene adattata.

../../../_images/dynamic_layout.png

4.2.6. What’s Next?

Nella prossima pagina, ti sarà dato un compito da completare. Questo ti permetterà di fare pratica con le tecniche che hai appena appreso.