Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
pigreco committed Sep 17, 2023
1 parent c564173 commit ad8b425
Show file tree
Hide file tree
Showing 14 changed files with 64 additions and 12 deletions.
Binary file added docs/blog/posts/variabili/img_02.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_03.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_04.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_05.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_06.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_07.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_08.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_09.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_10.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_11.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/img_12.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
76 changes: 64 additions & 12 deletions docs/blog/posts/variabili/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,11 @@ Le variabili sono una nuova funzionalità introdotta in **QGIS 2.12 Lyon** (2015
- [Atlante](#atlante)
- [Dinamiche contestuali](#dinamiche-contestuali)
- [Creare variabile al volo](#creare-variabile-al-volo)
- [Variabile speciale](#variabile-speciale)
- [Variabili predefinite](#variabili-predefinite)
- [simbologia](#simbologia)
- [etichette](#etichette)
- [print layout](#print-layout)
- [Variabile speciale value](#variabile-speciale-value)
- [RIFERIMENTI](#riferimenti)

<!-- /TOC -->
Expand All @@ -57,8 +61,6 @@ flowchart LR;

Ecco un primo esempio che far capire le potenzialità delle variabili: supponiamo che nel nostro progetto QGIS ci siano 5 layer vettoriali e per ognuno avessimo attivato e configurato le etichette. Supponiamo di voler cambiare la dimensione dell'etichette a tutte e 5 i layer, occorrerebbe aprire le proprietà del layer ben 5 volte, una per ogni layer. Ma se impostassimo, _a livello di progetto_, una variabile `altezza_etichetta` e mettessimo dentro il valore 15, basterebbe modificare una sola volta questa variabile per vedere le modifiche su tutti i layer in cui l'avessimo utilizzata.

[![](./img_01.png)](./img_01.png)

## Contesto

Come detto prima, le variabili sono sensibili al **_contesto_**, quindi alcune variabili sono utilizzabili ovunque, altre no; per esempio la variabile `@grid_axis` è utilizzabile solo nel compositore di stampe. Nel _gruppo_ delle funzioni, presente sia nel Field Calc che in ogni altro _Costruttore stringhe espressioni_, l'elenco delle variabile è molto variabile! perché, ripeto, dipende dal contesto.
Expand All @@ -69,8 +71,6 @@ Come detto prima, le variabili sono sensibili al **_contesto_**, quindi alcune v

Oltre al contesto, le variabili, dipendono anche dall'_**ambito**_, ovvero, esisitono 4 ambiti principali: _Globale_, _Progetto_, _Layer_, _Print Layout_, _Oggetto del print layout_, questi ambiti sono tutti impilati uno sopra l'altro in ordine dal meno specifico al più specifico. Gli ambiti più specifici _sovrascrivono_ eventuali variabili in conflitto esistenti da ambiti meno specifici: supponiamo di aver creato una variabile Globale `mio_nome` e successivamente altra variabile a livello di Progetto con stesso nome, la variabile globale verrebbe _sovrascritta_ da quella di progetto.

<https://mermaid-js.github.io/mermaid/#/flowchart>

```mermaid
flowchart LR;
style id0 fill:#ed7b13,stroke:#343,color:#000000,stroke-width:2px
Expand All @@ -84,6 +84,17 @@ flowchart LR;
id3(((Print Layout)))-->
id4(((Oggetto \n Print Layout)))
```

[![](./img_03.png)](./img_03.png)

La variabile `Blog` definita a livello Globale è utile in quanto la ritrovo sempre se lavoro nel mio PC e per qualsiasi sessione di lavoro. La variabile `Blog` definita a livello di Progetto è usabile SOLO in questo progetto.

- Per definire una variabile _**Globale**_: Menu _Impostazioni | Opzioni | Variabili_ e cliccare l'icona ![](./symbologyAdd.png) in basso a destra;
- per definire una variabile di **Progetto**: Menu _Progetto | Proprietà | Variabili_ e cliccare l'icona ![](./symbologyAdd.png) in basso a destra;
- per definire una variabile di **Layer**: Tasto destro del mouse sul nome del layer presente nel _Pannello Layer | Proprietà | Variabili_ e cliccare l'icona ![](./symbologyAdd.png) in basso a destra;

[![](./img_04.png)](./img_04.png)

## Atlante

Alcune variabili dipendono anche dalla creazione dell'**atlante**, ovvero, fin quanto non è stato creato un altlante, le relative variabili (@atlas_feature, @atla_geometry ecc...) non saranno né visibili né utilizzabili da nessuna parte, come è ovvio.
Expand All @@ -94,33 +105,74 @@ flowchart TD
B -->|Impostato| C[OK per le variabili] -->D["@atlas_feature\n@atlas_geometry\n@atlas_pagename\n..."]
B -->|Non impostato| E[Variabili NON usabili]
```

[![](./img_02.png)](./img_02.png)

Qui sfruttando sempre l'icona ![](./symbologyAdd.png) in basso a destra, è possibile aggiungere variabili in funzione all'oggetto selezionato, nel caso specifico sarebbe l'atlante.

## Dinamiche contestuali

Alcune variabili dinamiche, come per esempio `@map_scale`, restituiscono valori diversi a seconda di dove viene utilizzata: _map canvas_, _mappe nuove_, _mappa print layout_; questo perché la variabile riconosce dove è stata richiamata.

[![](./img_01.png)](./img_01.png)
Ho etichettato lo stesso layer con la variabile `@map_scale` ma in tre contesti diversi visualizzo tre valori diversi!!!

[![](./img_06.png)](./img_06.png)

## Creare variabile al volo

Infine, esiste una funzione `with_variable` che permette di creare, al volo, una variabile all'interno di una espressione complessa. Questo è molto utile quando, in espressioni lunghe e complesse, ci sono parti di espressioni che si ripetono più volte, per esempio `$area/10000`, potrei crearla come variabile e chiamrla `@areaEttari`, questo ha un duplice vantaggio: 1. rende l'espresione più leggibile; 2. rende l'espressione più veloce, perché quel valore verrebbe calcolato solo una volta e non enne volte.

[![](./img_01.png)](./img_01.png)
[![](./img_05.png)](./img_05.png)

**Osservazione**: tutte le variabili inizioano con `@`, quindi se volessi usare la variabile `row_number` dovrei necessariamente scrivere `@row_number`
**Osservazione**: tutte le variabili iniziano con `@`, quindi se volessi usare la variabile `row_number` dovrei necessariamente scrivere `@row_number`

[![](./img_01.png)](./img_01.png)
[![](./img_09.png)](./img_09.png)

## Variabile speciale
## Variabili predefinite

È stata introdotta, sempre da Nyall, una variabile speciale che viene utilizzata soprattutto nella _**sovrascrittura definita dai dati**_, ovvero, in tutti quei casi in cui è possibile _pilotare_ le caratterisitiche delle etichette o della simbologia tramite dati o espressioni. La variabile si chiama `@value`.
Quando utiliziamo il Filed Calc o un qualsiasi costruttore Stringhe Espressione, nel gruppo funzioni ci sono, in cima all'elenco e in neretto, una serie di variabili predefinete pronte all'uso e contestualizzate, ovvero cambiano a seconda del contesto:

Questa variabile rientra tra le variabili dinamiche e contestuali perché può assumere vari valori a seconda della caratteristica utilizzata. In sostanza la variabile `@value` assume il valore corrente presente nel widget di riferimento. (l'esempio che segue chiarirà il concetto).
### simbologia
in questo caso il contesto è simbologia:

[![](./img_10.png)](./img_10.png)

### etichette
in questo caso è etichettatura:

[![](./img_11.png)](./img_11.png)

### print layout
in questo caso Print Layout, reticolo

[![](./img_12.png)](./img_12.png)

## Variabile speciale value

È stata introdotta, sempre da **Nyall**, una variabile speciale che viene utilizzata soprattutto nella _**sovrascrittura definita dai dati**_ ![](./mIconDataDefine.png), ovvero, in tutti quei casi in cui è possibile _pilotare_ le caratterisitiche delle etichette o della simbologia tramite dati o espressioni. La variabile si chiama `@value`.

Questa variabile rientra tra le variabili _dinamiche e contestuali_ perché può assumere vari valori a seconda della caratteristica utilizzata. In sostanza la variabile `@value` assume il _**valore corrente**_ presente nel _widget_ di riferimento. (l'esempio che segue chiarirà il concetto).

[![](./img_07.png)](./img_07.png)

La variabile `@value` nel caso di `Dimensione` assume il valore presente nel relativo widget, nel caso in esame `@value=14`;
nel caso di colore sarà nero, nel caso di Stile sarà Regular.

La prima cosa interessante è che appena modifico il valore nel widget, cambia anche il valore associato alla variabile; la seconda cosa interessante è che posso usare la variabile in una espressione, per esempio:

```
IF (@value <= 14, 0, @value)
```
ovvero, per qualsiasi valore inserito nel widget minore o uguale a 14, la dimensione del testo sarà 0, ovvero non visibile, altrimenti lascia il valore corrente!!!

[![](./img_08.png)](./img_08.png)

Non fate caso all'anteprima, segnerà sempre `NULL` e nell'Help ci sarà sempre scritto `non impostato`.

# RIFERIMENTI

- [Changelog 2.12 - Le variabili](https://www.qgis.org/en/site/forusers/visualchangelog212/index.html?highlight=changelog#feature-variables-in-expressions)
- [Formattazione condizionale by Nathan Woodrow](https://woostuff.wordpress.com/2015/08/20/mixing-a-bit-of-excel-into-qgis-conditional-formatted-table-cells/)
- [DOC QGIS Variabili](https://docs.qgis.org/3.28/it/docs/user_manual/expressions/functions_list.html?highlight=variable#variables)
- [Variabile @value](https://www.youtube.com/live/h-mpUkwDdOQ?t=3104&si=7GxR8qlDUGDFzXcv)
- <https://mermaid-js.github.io/mermaid/#/flowchart>
Binary file added docs/blog/posts/variabili/mIconDataDefine.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/blog/posts/variabili/symbologyAdd.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit ad8b425

Please sign in to comment.