Spesso, nel
lavoro, è necessario visualizzare su di una mappa un elenco di strade e
modificare essa velocemente. Si pensi ad es. ad una Azienda di Igiene Urbana
che si occupa dello spazzamento delle strade di una città: all’operatore
ecologico vengono assegnate delle disposizioni di servizio con un elenco di
strade da spazzare e la mappa per localizzare esse; all’autista addetto al
vuotamento dei cassonetti stradali viene fornito un elenco di contenitori e la
mappa con l’itinerario da seguire.
Un’altra cosa
importante è come questo elenco e la mappa possano essere modificate
velocemente dal tecnico gestionale. Per es. per inserire una serie di nuove
strade che necessitano di uno spazzamento urgente.
Lavorare con
BI permette soprattutto di acquisire
tutti i dati necessari per il
dimensionamento tecnico del servizio, ad es. calcolare la lunghezza totale delle
strade assegnate ad un certo spazzamento (vedremo questo in un prossimo blog).
Un esempio di
quello che può essere fatto è riportato qui sotto.
In sostanza, per visualizzare la mappa,
abbiamo bisogno di un indirizzo url. L’indirizzo è costruito come richiesto
da Bing Maps REST Services. Per visualizzare la mappa in una finestra Web sul
foglio Excel procedere nel modo seguente:
1.
Dotarsi di una versione di Excel 2013 o 2010. Io
utilizzo la versione di prova di Excel 2013.
2.
Ottenere una chiave di prova di Bing Maps. Il
codice della chiave andrà poi inserito nella stringa finale dell’indirizzo url.
Inserire nella colonna verde un elenco di indirizzi, dove “wp.0” è l’indirizzo di partenza, “wp.6” indirizzo di arrivo (nel ns. es.) e “to” indirizzi di fermate intermedie (max 10). Nella colonna “J” troviamo la codifica URL dell’indirizzo, ottenuto con la funzione CODIFICA.URL (). Nella colonna “P” troviamo la lat e long dell’indirizzo ottenute con una funzione.
4. Ottenere le stringhe della colonna “M”,
necessarie perché parti della stringa finale. Io ho fatto questo in una seconda
tabella concatenando le colonne “I” e “B” (che utilizzano dati della prima
tabella).
5.
In una terza tabella, definire le dimensioni
della mappa, il livello di zoom e l’area della mappa.
6.
Concatenare http://dev.virtualearth.net/REST/v1/Imagery/Map/Road/Routes?
Con le stringhe della colonna “M” della seconda tabella e con i dati della
terza tabella.
La stringa finale è tipo:
Nella stringa io non ho inserito il
livello di zoom e la map area (opzionali).
Cliccando sull’indirizzo url trasformato
in link otteniamo il file xml di risposta. Se però vogliamo visualizzare la
mappa in una finestra Web sul foglio Excel continuare con la procedura:
7. Attivare il controllo “Microsoft WebBrowser”. In
Excel 2013, il controllo “Microsoft WebBrowser”, che permette di inserire una
finestra Web direttamente nel foglio Excel, è disattivato. Seguire le
istruzioni http://support.microsoft.com/kb/2793374
per attivarlo.
8. Per inserire una finestra Web nel foglio Excel,
dalla barra multifunzione: Sviluppo →
Inserisci → Controlli ActiveX → Altri controlli → WebBrowser.
9.
Scrivere un modulo VBA con un frammento di
codice tipo
'visualizza un itinerario sulla mappa
'con webbrowser1.navigate
Option Explicit
Public Sub bingroutecode()
Dim myurladdr As String
myurladdr =
Sheets("bingroute").Range("bingrouteurl")
Sheets("bingroute").WebBrowser1.Navigate
(myurladdr)
Sheets("bingroute").WebBrowser1.Height
= 700
Sheets("bingroute").WebBrowser1.Width
= 700
End
Sub
10. Associare infine un pulsante al codice. Sviluppo
→ Inserisci → Controlli ActiveX →
Pulsante di Comando. Premendo il pulsante si visualizza la mappa di inizio
pagina.
Questo esempio permette di visualizzare
solo mappe statiche (Imagery, mappe
non interattive, non hanno le funzioni zoom, visualizza schermo intero, pan,
ecc.). Visualizzare mappe interattive sarà oggetto di un altro blog.
Tutto (quel poco) che conosco lo devo al
blog di Chris Webb e al suo libro “Power Query for Power BI and Excel“. Un
ringraziamento speciale va all’Ing. Stefano Pocci e a Claudio della Team
Computer, per i preziosi consigli. Buon Lavoro a tutti. Daniele.