Microsoft Excel

Microsoft Excel

domenica 18 settembre 2016

Codificare una polilinea e visualizzarla in mappa

In un post precedente abbiamo visto come inserire marcatori su una mappa di google. Per aggiungere un marcatore alla mappa è necessario conoscere le coordinate lat e lng del punto. Le coordinate dell'oggetto [da segnalare con il marcatore] possono essere ottenute in più modi: con uno strumento gps sul territorio; utilizzando un servizio di geocodifica; o più semplicemente possono essere ricavate dalla mappa di google usando la funzione "Che cosa c'è qui?" (tasto dx del mouse nel punto desiderato). Le coordinate rilevate possono essere  trascritte su un foglio di calcolo. Per poter "visualizzare" sul web una mappa completa di marcatori, dobbiamo procedere come già visto nel post precedente, cioè "lanciare" nel browser il file eseguibile Javascript (riconosciuto perché incorporato nel browser) contenente precise istruzioni per la "visualizzazione". Il file contiene anche una funzione di "richiamo" (spesso detta callback function), che "legge i dati" di un foglio di calcolo [precedentementedistribuito come applicazione web. La funzione di callback ci permette dunque di lavorare direttamente sul foglio di calcolo, inserendo semplicemente le coordinate nella singola cella. 
Quando invece si vuol inserire in mappa una polilinea (ad es. un tratto di strada di una rotta), è necessario rilevare almeno due coppie di coordinate lat e lng (per strade non rettilinee sono necessarie più di due coppie). Nel foglio di calcolo le coordinate vengono trascritte su più celle adiacenti, come nel caso precedente. Il codice di implementazione in questo caso diventa più difficoltoso: i tratti non rettilinei sono composti da un numero variabile di segmenti e questo implica l’utilizzo di routine con cicli di lunghezza variabile con "step" per "saltare" le colonne. 
Per ovviare a questo problema si può, partendo dalle coordinate, codificare la polilinea corrispondente, cioè ottenere una unica stringa che rappresenta il tratto di strada da disegnare. Per capire di cosa si tratta prova ad utilizzare la seguente utility: 
Il problema si riduce quindi alla codifica della polilinea. Per codificare la polilinea: 
La procedura per la codifica illustrata all'indirizzo sopra, può essere automatizzata scrivendo una funzione (metodo migliore) oppure con l'utilizzo delle formule. 
In sostanza, partendo da un foglio di calcolo excel del tipo (fig.1):


Immagine


Vogliamo ottenere il disegno in mappa delle strade spazzate (fig.2):

Immagine

Per arrivare a questo risultato procedere come segue: 
  1. Trascrivere iun file excel un elenco di strade e le relative coordinate dei singoli tratti, rilevate con uno dei metodi ricordati sopra, come in fig.1. Inserire nelle colonne adiacenti le formule per la codifica della polilinea. Trovate il file in excel 2016, completo di formule all’indirizzo: 
  1. Copiare il contenuto del foglio di calcolo in excel su un foglio di calcolo di google (copiare la parte che interessa con la polilinea decodificata [colonna 45]) 

  1. Distribuire il file come applicazione web, seguendo la stessa procedura già vista nei post precedenti. 

  1. In un editor di testo (es. Notepad), scrivere un file con le istruzioni precise per la codifica e la visualizzazione della polilinea sulla mappa. Il file deve contenere anche la funzione di “chiamata” (callback function). Le istruzioni sono in linguaggio Javascript. Lo script è “incapsulato” in un file html per poter essere “lanciato” nel browser, con il risultato di fig.2. Il file, in formato docs, è allegato al seguente indirizzo: 

ed è simile a quelli già visti nei post precedenti, con la variante fondamentale delle istruzioni seguenti: 

Immagine

Le coordinate latlng dei punti possono essere anche ottenute utilizzando strumenti di disegno avanzati sviluppati da alcuni informatici come Google Maps Advanced drawing” di Ilya Radchenko 
Il codice di Ilya, integrato con quello necessario per creare una textbox di dati, permette di leggere le coordinate di ogni tratto di strada disegnato all’interno della “finestra” 
Il codice modificato è del tipo: 
Occorre precisare che: 
Il codice è adatto per disegnare linee ma non cerchi e poligoni. 
Utilizzando le formule (anziché una funzione), il numero di tratti della singola strada è limitato dal numero delle colonne di Excel (16384). 
Le formule utilizzate sono state testate e la codifica della polilinea risulta corretta. 
Le formule utilizzate possono essere sicuramente migliorate.  

Buon Lavoro 
Daniele Paolinelli