Microsoft Excel

Microsoft Excel

martedì 4 novembre 2014

Ottenere una mappa con un itinerario con Bing Maps




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.