Arcade il linguaggio di scripting per mappare le idee
Molte volte ci viene chiesto di creare una mappa web la cui simbologia dipende da un campo che è il risultato di un calcolo effettuato tra due campi dello stesso layer. Fino ad oggi occorreva: aggiungere un nuovo campo alla feature class, fare un "field calculator", scegliere una rappresentazione in base al campo calcolato, pubblicare la mappa come Map Service usando ArcGIS Server.
Naturalmente se poi il ns responsabile ci chiedeva di effettuare un calcolo diverso era necessario ripetere tutte le operazioni sopra elencate e con un iter non proprio rapidissimo per vedere le modifiche.
Con l'introduzione del linguaggio di scripting Arcade https://developers.arcgis.com/arcade/ ( linguaggio pensato per il disegno e labeling capace di funzionare su qualsiasi mappa, poi da consultare con applicazioni desktop, server o mobile) le operazioni di modifica al "volo" della rappresentazione delle geometrie diventa molto più semplice e soprattutto immediato.
Il bello di Arcade è che le espressioni sono calcolate al volo e quindi non è necessario aggiungere un campo e calcolarlo in modo permanente. Questo rende facile utilizzare dati e mappe che sono già state pubblicate tramite ArGISServer.
Abbiamo un layer dei comuni, pubblicato come feature service, con il numero di assunti per comune, se volessimo mostrare in mappa dei simboli verdi di dimensione 20 px quando l'occupazione è al 100%, giallo quando è tra 99 e 77 e rosso quando è inferiore al 77%.
Possiamo accedere ad ArcGIS.com caricare il layer andare in “Cambia Stile” e scegliere dalla combo box la voce “Nuova Espressione”.
A questo punto si apre un editor di testo in cui possiamo inserire la ns logica per la rappresentazione.
var calcolo = round ((($feature.Assunti_Count / $feature.popolazione_comune) * 100));
return 'Tutti al lavoro';
else if (99 < calcolo < 70){
return 'Lavorano in tutti';
return 'occupazione insufficiente';
E su questo campo calcolato definiremo il layout
Oppure la capacità degli ospedali di gestire nuove future mamme
var difference = $feature.SLOTS-$feature.ENROLLED
if (difference < 0){
return 'Capacità superata'
}
else if (difference == 0){
return 'Capacità al 100%'
}
else {
return 'Sotto alla Capacità'
}
E’ anche possibile definire un simbolo ruotato in base al risultato di una elaborazione per esempio in base ai risultati di vendita di
var difference = $feature.enplane2011-$feature.enplane2001;
if (difference > 0){
return 90;
}
else {
return 50;
}
Insomma le possibilità sono notevoli e sicuramente la possibilità di consultare la stessa mappa da qualsiasi client rende tutto ancora più interessante.