Logistica con mappoint
Transcript
Logistica con mappoint
Logistica con MapPoint Gian Paolo Calzolaro www.infologis.biz La conoscenza a dimensione d’impresa Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz I GIS, quali benefici per la logistica? .................................................................................................................. 2 Quale GIS per la mia azienda ? .......................................................................................................................... 3 MapPoint: Panoramica e funzionalità ............................................................................................................... 5 Esempi di utilizzo di MapPoint ........................................................................................................................ 11 Rappresentare la supply chain su carta geografica ..................................................................................... 12 La matrice delle distanze ............................................................................................................................. 14 Il problema del commesso viaggiatore ....................................................................................................... 17 I GIS, quali benefici per la logistica? La logistica si occupa della gestione dei flussi fisici ed informativi, tali flussi si realizzano in uno spazio che ha come punto di riferimento la geografia del nostro pianeta. I flussi si differenziano per i mezzi utilizzati per trasferire i materiali o le informazioni nello spazio (autostrade, ferrovie, aria e acqua per i materiali, linee telefoniche per le informazioni). Entrambi i flussi ed in modo particolare quello fisico non possono prescindere dallo spazio geografico, pertanto nelle scelte (sia strategiche che operative) bisogna inglobare informazioni di tipo geografico che oggi sono facilmente reperibili tramite i GIS (sistemi informativi geografici). L’utilizzo del GIS è utile a livello strategico per le decisioni di localizzazioni di depositi, siti produttivi e punti di distribuzione; a livello operativo un GIS è utile per la gestione delle consegne sia per la pianificazione che per il controllo. L’utilizzo di un sistema GIS può essere di grande aiuto anche per una piccola e media impresa, in quanto consente di prendere decisioni più precise senza limitarsi decidere in base misure spanno metriche di più vicino e più lontano, chiaramente per una piccola impresa andranno bene soluzioni software di fascia bassa in quanto le problematiche da gestire saranno meno complesse ed anche il volume dei dati minore, inoltre sono presenti sul mercato diverse soluzioni open source molto valide. Lo stesso Google maps può essere di grande aiuto per una micro impresa se utilizzato in maniera 2 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz intelligente e sfruttando tutte le funzionalità. Il primo passo per poter utilizzare un GIS nelle scelte logistiche è la georeferenziazione dei dati aziendali che consiste nell’abbinare i dati (anagrafiche clienti, fornitori, depositi) con un punto geografico presente nel database del GIS. Molto spesso queste informazioni non sono omogenee tra di loro, ad esempio l’indirizzo può essere gestito in maniera differente soprattutto quando è previsto un solo campo nel gestionale per inserire questa informazione lasciando grande libertà nell’inserimento dei dati, questa libertà diventa poi lavoro aggiuntivo quando dobbiamo importare questi dati in un sistema GIS dovendo provvedere ad una pulitura dei dati, quindi quando si predispone il proprio archivio clienti e fornitori è opportuno darsi delle regole per la scrittura degli indirizzi in modo da facilitare il lavoro successivamente, meglio ancora se è possibile mettere dei controlli nel nostro programma gestionale. Quale GIS per la mia azienda ? Sul mercato esistono diversi programmi GIS alcuni commerciali ed altri open source, vediamo una veloce panoramica dei software più diffusi e le loro principali caratteristiche. La scelta del programma più adatta alla propria azienda dipende dalla tipologia di problematiche che si intende gestire con il GIS. Arcgis ArcGIS comprende un insieme di applicazioni integrate: ArcMap, ArcCatalog e ArcToolbox. Utilizzando tutte e tre queste applicazioni è possibile svolgere qualsiasi operazione GIS, dalla più semplice alla più avanzata, inclusi la produzione cartografica, la gestione di dati, l’analisi geografica, l’editing di dati e l’elaborazione di dati geografici. ArcView consente anche di utilizzare una grande quantità di dati spaziali e risorse disponibili su Internet attraverso i servizi di ArcIMS. L’interfaccia di ArcMap è comune alle altre due applicazioni desctop di Arc GIS (ArcEditor e ArcInfo), solamente ha delle estensioni che sono di uso limitato o inutilizzabili a seconda del tipo di licenza installata. 3 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz MapInfo MapInfo è un software di mapping ricco di funzioni e facile da usare. MapInfo permette di associare i dati a delle mappe geografiche, per ottenere una rappresentazione cartografia delle informazioni, ma anche e soprattutto per analizzarli geograficamente sulla base dei concetti di vicinanza e appartenenza. MapInfo non è solo un'applicazione per costruire mappe tematiche ma offre una quantità di strumenti che consentono di guardare in modo nuovo i dati, mettendoli in relazione fra loro e con il territorio, e di analizzare la realtà attuale e i possibili scenari futuri; inoltre, con MapInfo si ha a disposizione svariate opzioni per presentare i risultati della vostra analisi, che potete poi stampare o portare in altre applicazioni o su Internet. MapInfo, consente di vedere in modo più semplice e intuitivo le relazioni fra i dati, prendere decisioni basate su analisi più approfondite, scoprire nuove opportunità per le attività, e presentare in modo diretto ed efficace. TransCAD TransCAD è un Sistema Informativo Geografico (GIS) sviluppato specificamente ad uso dei professionisti dei trasporti per archiviare, visualizzare, gestire ed analizzare i dati trasportistici. TransCAD unisce il GIS ed i modelli di trasporto in una unica piattaforma integrata. TransCAD può essere usato per tutti i modi di trasporto, ad ogni scala geografica o livello di dettaglio. TransCAD fornisce: Un potente motore GIS con speciali estensioni ai trasporti e gli strumenti per la creazione di mappe, di visualizzazione ed analisi specifici per le applicazioni trasportistiche GRASS GIS GRASS è un potente elaboratore di immagini tridimensionali sulle quali è possibile effettuare diversi tipi di analisi a partire da quelle vettoriali. Oltre questo punto forte bisogna aggiungerne altri due: la possibilità di lavorare su dati vettoriali multiformato (diverse linee, punti e poligoni presenti sullo stesso foglio di analisi e a cui il programma associa specifiche categorie) e la possibilità di utilizzare altri software grazie al sistema dei moduli. Quantum GIS Quantum GIS è un client GIS con licenza GNU General Public License mantenuto come progetto ufficiale dell'Open Source Geospatial Foundation (OSGeo). Quantum GIS implementa un gran numero di funzioni e plugins . Attraverso l'interfaccia molto 4 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz intuitiva si possono gestire, modificare e analizzare dati geografici, accedere ai servizi geografici e creare layout di stampa. Sono inoltre disponibili procedure di accesso ai più diffusi geodatabase (GRASS, postgis, SpatiaLite, MySQL, ORACLE, ESRI personal geodatabase) e di geprocessing vettoriale e raster (Buffer, intersezione, unione , dissolvenza...). Gis per i trasporti Esistono dei GIS dedicati al mondo dei trasporti sviluppati specificamente per archiviare, visualizzare, gestire ed analizzare i dati trasportistici. Questi sistemi integrano il motore GIS ed i modelli di trasporto in un’unica piattaforma. Questi software forniscono un set di strumenti in grado di risolvere diversi problemi legati ai percorsi di distribuzione e raccolta delle merci, risolvendo molte variazioni del classico problema dei percorsi, includendo limitazioni sul tempo di servizio, sulla possibilità di effettuare fermate, sull’utilizzo dei veicoli da più depositi e sull’uso di flotte non omogenee. Una altra classe di problemi risolti da questi software sono i problemi di Arc Routing legati all’uso efficiente della rete stradale, trovando larga applicazione nel porta a porta. Infine i gis per i trasporti sono di grande aiuto per risolvere i problemi legati ai flussi di rete quali l’efficiente consegna di beni o servizi presenti nei trasporti o in altri contesti. È evidente che tale classi di problemi sono tipici delle medie e grandi imprese di trasporto, un piccolo autotrasportatore può trarre già dei grandi benefici da un GIS open source od entry level come può essere MapPoint, un GIS dedicato ai trasporti sarebbe eccessivamente oneroso, considerando anche le competenze necessarie per utilizzarlo. MapPoint: Panoramica e funzionalità MapPoint è un programma Microsoft che può essere considerato come un software GIS elementare, il programma infatti contiene nella versione europea la cartografia stradale dell’Europa, i punti geografici rilevanti e la suddivisione amministrativa degli stati. In MapPoint è possibile caricare dei dati e vederne la loro rappresentazione geografica in diversi formati, è possibile caricare i dati da Excel o Access. Inoltre il programma consente di calcolare il tragitto tra diversi punti sulla carta, inoltre è in grado dato un serie di soste da effettuare di ottimizzare il percorso. Impostati gli 5 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz opportuni parametri è possibile calcolare il tempo di guida ed il suo costo. Il programma inoltre permette di disegnare sulla carta e di misurare gli oggetti disegnati, ad esempio se si disegna un rettangolo è possibile calcolare la sua superficie, se viene disegnato un cerchio è possibile calcolare il suo raggio. Altre funzionalità del programma sono l’area di tempo guida che consente a partire da un punto indicato sulla mappa di individuare l’area all’interno della quale ricadono i punti che sono ad una determinata distanza di tempo dal punto di origine, inoltre il programma consente di individuare i luoghi all’interno di un raggio chilometrico (ad esempio ponendo come centro la stazione di Milano è possibile avere l’elenco di tutti gli alberghi che si trovano nel raggio di due KM). La funzione aggiunta guidata dati alla carta consente di importare i dati presenti in un foglio Excel o in database sulla carta geografica. La procedura guidata richiede nella prima maschera il file da cui prelevare i dati, successivamente richiede di abbinare per ogni colonna della tabella con un tipo di dati, è importante che ci sia almeno una colonna contenente un dato geografico come comune, provincia, regione, latitudine o longitudine. La procedure prosegue abbinando ogni record ad un punto geografico, la procedura evidenza i record che non è riuscita ad abbinare in automatico suggerendo diverse opzioni. A questo punto è possibile selezionare tra nove diverse rappresentazioni grafiche dei dati, la procedura per ogni tipo di grafico indica le caratteristiche e per quale tipo di dati è più adattato. Successivamente viene richiesto il campo dati che deve essere rappresentato sulla carta e si possono selezionare eventuali raggruppamenti (ad esempio se i dati sono indicati in relazione è possibile effettuare raggruppamenti per provincia e regione), 6 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz infine viene richiesta la scala con cui rappresentare i dati sulla carta. 7 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz 8 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz La funzione pianifica itinerario permette di selezionare dei punti sulla carta e calcolare l’itinerario stradale da percorrere. Per creare dei punti dell’itinerario abbiamo due possibilità: selezionare un dato aggiunto con la funzione aggiunta guidata dati alla carta, oppure cliccare un punto qualsiasi della carta. Un volta individuato il punto da aggiungere all’itinerario clicchiamo con il pulsante destro e clicchiamo sulla voce di menù itinerario ed abbiamo tre possibilità: aggiungi come fine, inizio o sosta. Per poter calcolare un itinerario sono necessari almeno due punti uno come inizio e uno come fine. A questo punto clicchiamo su pianifica itinerario che apre una finestra con l’elenco dei punti dell’itinerario, nel caso esistono più tre soste è bene utilizzare la funzione ottimizza soste cliccando sull’apposito pulsante in modo da organizzare le soste nel modo più efficiente in termini di tempi. A questo punto clicchiamo su crea indicazioni ed il programma evidenzia l’itinerario sulla carta e apre una finestra con le indicazioni stradali, inoltre 9 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz il programma calcola la distanza ed il tempo totale e se sono stati impostati i costi del carburante ed i suoi consumi calcola il costo totale del viaggio. La funzione creazione area tempo guida consente di tracciare una linea sulla carta che unisce tutti i punti che sono distanti lo stesso tempo da un punto centrale. Questa funzione ad esempio può essere utile individuare i potenziali clienti infatti se ad esempio i nostri clienti sono disposti a compiere al massimo 30 minuti per raggiungere il nostro punto vendita, se tracciamo l’area tempo guida possiamo individuare i clienti situati all’interno di questa area. Per utilizzare questa funzione basta selezionare un punto sulla carta, cliccare con il pulsate destro del mouse e selezionare la voce di menù crea area tempo guida, si apre una finestra che richiede il numero di minuti per cui calcolare l’area ed il programma disegna la linea sulla carta. 10 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz Esempi di utilizzo di MapPoint MapPoint consente di personalizzare il programma creando dei componenti aggiuntivi che possono essere installati nel programma per aumentarne le funzionalità. Sul mercato sono presenti diversi addons, molti dei quali sono in lingua inglese anche se esistono alcune soluzione per il mercato italiano. L’altra possibilità è quella di utilizzare il modello ad oggetti di MapPoint all’interno di MS Access, la tecnologia ActiveX si basa sul Component Object Model (COM) di Microsoft e permette ai programmi di interagire e, in particolare permette a un programma di accedere agli oggetti di un altro programma e di manipolarli all’esterno di quell’applicazione. L’uso dell’automazione è un modo efficace per creare e per estendere le applicazioni. L’automazione può ridurre notevolmente il tempo di sviluppo, perché, anziché sviluppare dal nulla e collaudare una funzionalità, potete prenderla in prestito da un’altra applicazione. In Access è possibile importare i dati del proprio gestionale per poter fare elaborazioni ed inoltre è possibile realizzare rapidamente delle maschere per gestire l’interfaccia utente, pertanto l’utilizzo 11 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz integrato di Access e MapPoint può essere una soluzione efficiente da realizzare in casa per risolvere semplici problematiche. Per poter utilizzare il modello ad oggetti di MapPoint è necessario conoscere il modello che è possibile reperire nella guida in linea di MapPoint. La guida spiega in maniera semplice è chiara quali sono gli oggetti che si possono utilizzare, le loro caratteristiche e come utilizzarli, inoltre riporta diversi esempi di codice da cui prendere spunto per realizzare le proprie applicazioni. Per poter utilizzare il modello è necessario creare un riferimento in MS Access, pertanto apriamo un modulo VBA, andiamo nel menù strumenti e clicchiamo su riferimenti, si apre una finestra con l’elenco delle librerie e dei programmi installati sul proprio PC, tra questi bisogna scegliere il programma MapPoint e cliccare sul tasto OK. Rappresentare la supply chain su carta geografica La supply chain esiste e muove i materiali all’interno di uno spazio geografico che è necessario conoscere per valutare i suoi vincoli ed opportunità. Vediamo quindi come rappresentare su una cartina geografica una supply chain utilizzando il 12 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz software MapPoint. La prima operazione da effettuare è l’individuazione dei nodi della rete, in questo caso noi rappresenteremo i fornitori (unicamente quelli legati al core business), i siti produttivi (sia interni che subfornitori), i magazzini ed i punti di distribuzione (in questo caso utilizziamo i punti di distribuzione in quanto abbiamo ipotizzato che la supply chain fornisca un bene di consumo di massa, pertanto non avrebbe senso rappresentare i clienti che sarebbero miglia di nodi). Una volta individuati i nodi andremo a compilare in un foglio Excel le seguenti informazioni:ID NODO, LOCALITA, PROVINCIA, TIPO, PROPRIETA, VALORE FLUSSO, VOLUME FLUSSO, DIMENSIONE. ID NODO, LOCALITA e PROVINCIA sono informazioni reperibili in anagrafica clienti fornitori, mentre per tipo intendiamo Fornitore, Produzione, Magazzino, Distributore, mentre con proprietà intendiamo se il nodo è di proprietà dell’azienda oppure no. Per gli altri dati dobbiamo effettuare una elaborazione statistica sui movimenti di magazzino per i quali consideriamo gli ultimi dodici mesi. Per i fornitori il valore del flusso è dato dal valore della merce acquistata, mentre per i siti produttivi il valore del flusso è dato dalla differenza del valore delle materie prime utilizzate e quello dei prodotti o semilavorati realizzati, per i magazzini i valore è uguale alla differenza della merce in ingresso con quello della merce in uscita, infine per i distributori il valore è uguale alla merce venduta. Analogamente andiamo a definire il volume del flusso utilizzando in questo caso non la moltiplicazione tra QT e COSTO ma tra QT e VOLUME (nel caso non fosse disponibile l’informazione del volume unitario, basterà considerare il volume totale indicato nel DDT) Per dimensione intendiamo la giacenza media a valore del materiale conservato nel nodo nel corso degli ultimi dodici mesi, tale informazione ha senso per i magazzini e per i siti produttivi. A questo punto abbiamo tutte le informazioni necessarie e possiamo quindi importare i dati del foglio excel su una cartina di MapPoint ed 13 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz analizzare la distribuzione dei nodi sul territorio, la distribuzione dei flussi in volume ed in valore. La matrice delle distanze Consideriamo il caso in cui abbiamo bisogno di calcolare la distanza tra n deposti di partenza e m deposti di arrivo. Le operazioni da realizzare per ottenere quanto desiderato sono le seguenti: 1. Geocodifica dei dati 14 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz 2. Creazione della matrice delle distanze 3. Calcolo della distanza Con la prima operazione andiamo a trasformare l’indirizzo dei nostri deposti in coordinate geografiche, come abbiamo visto in un post precedente possiamo utilizzare la macro del foglio di calcolo excel2kml-address.xls per ottenere la latitudine e la longitudine dei nostri deposti, tale operazione non sempre è perfetta pertanto è necessario verificare i dati che non sono stati geocodificati correttamente, una buona base di partenza sicuramente potrebbe essere di scrivere in maniera corretta ed omogenea tutti i dati all’interno del proprio gestionale. Con la seconda operazione andiamo ad incrociare la tabella con i depositi di partenza con quella dei depositi di destinazione in modo da avere tutte le combinazioni possibili di partenza ed arrivo. Su questa tabella poi applicheremo la funzione per il calcolo della distanza. Per ottenere la matrice delle distanze utilizziamo una query di creazione tabella: SELECT [DEPOSITI PARTENZA].[DEPOSITO PARTENZA], [DEPOSITI PARTENZA].LATPAR, [DEPOSITI PARTENZA].LONPAR, [DEPOSITI DESTINAZIONE].[DEPOSITO DESTINAZIONE], [DEPOSITI DESTINAZIONE].LATDES, [DEPOSITI DESTINAZIONE].LONDES, 0.0001 AS DISTANZA INTO [Matrice Distanze] FROM [DEPOSITI DESTINAZIONE], [DEPOSITI PARTENZA]; L’ultima operazione è quella che ci consente di calcolare la distanza nella matrice delle distanze, per quesa operazione abbiamo due opzioni, la prima consiste nell’utilizzare una funzione trigonometrica chiamata del seno inverso una formula in trigonometria sferica utile alla navigazione per calcolare le distanze tra due punti su una sfera, in questo caso però otteniamo una distanza in linea d’aria che può essere utile se non ci serve sapere i km effettivi tra due località ma il loro ordine di grandezza. Se invece siamo interessati ad avere un dato preciso dobbiamo ricorrere all’utilizzo di MapPoint che consente il calcolo chilometrico delle distanze tra due 15 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz punti. Per poter utilizzare il motore cartografico di MapPoint in Access è necessario inserire nei riferimenti nel modulo VBA il riferimento alla libreria di MapPoint, in questo modo possiamo utilizzarne gli oggetti per costruire la funzione che permette il calcolo della distanza. La funzione seguente scrive sulla tabella della matrice delle distanze le distanze tra due punti, per poterla utilizzare bisogna passargli come argomenti il nome della tabella della matrice delle distanze, il nome del campo con la latitudine di partenza, il nome del campo con la longitudine di partenza, il nome del campo con la latitudine di destinazione, il nome del campo con la longitudine di destinazione ed il nome del campo in cui verrà scritta la distanza. Public Function distanza(TabellaDistanze, CampoLATPAR, CampoLONPAR, CampoLATDES, CampoLONDES, CampoDISTANZA) Dim objApp As New MapPoint.Application Dim objMap As MapPoint.Map Dim objRoute As MapPoint.Route Dim inizio As MapPoint.Location Dim fine As MapPoint.Location Dim db As DAO.Database Dim tabella As DAO.Recordset Dim campo As DAO.Field Set objMap = objApp.ActiveMap Set objRoute = objMap.ActiveRoute objApp.Visible = False objApp.UserControl = False Set db = CurrentDb Set tabella = db.OpenRecordset(TabellaDistanze, dbOpenDynaset) Set campo = tabella.Fields(CampoDISTANZA) Do Until tabella.EOF LATPAR = tabella.Fields(CampoLATPAR) LONPAR = tabella.Fields(CampoLONPAR) LATDES = tabella.Fields(CampoLATDES) LONDES = tabella.Fields(CampoLONDES) Set inizio = objMap.GetLocation(LATPAR, LONPAR) Set fine = objMap.GetLocation(LATDES, LONDES) objRoute.Waypoints.Add inizio objRoute.Waypoints.Add fine objRoute.Calculate distanza = objRoute.Distance tabella.Edit campo = distanza tabella.Update objRoute.Waypoints.Item(1).Delete objRoute.Waypoints.Item(1).Delete tabella.MoveNext Loop objMap.Saved = True objApp.Quit End Function 16 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz Il problema del commesso viaggiatore il problema del commesso viaggiatore può essere definito come segue: siano assegnate n città A, B, C,…, e le distanze dij fra esse esistenti , il problema consiste nella determinazione di una sequenza di città da visitare in modo che ogni città venga visitata una sola volta, minimizzando il percorso seguito e ritornando alla città di partenza. Vediamo come risolvere questo problema attraverso l’utilizzo del software MapPoint prima direttamente con il programma e poi attraverso il codice. Consideriamo che con il nostro automezzo dobbiamo effettuare dieci consegne in una giornata presso nostri clienti con partenza e ritorno presso la nostra azienda. Utilizzando il programma MapPoint, importiamo i dati sulla posizione dei clienti inseriti in un file Excel attraverso il menù Dati, aggiunta guidata dati alla carta, selezioniamo l’opzione simboli, premiamo su avanti, poi selezioniamo importa dati da aggiungere alla carta, proseguiamo e selezioniamo il file da cui importare i dati ed importiamo i dati sulla carta, a questo punto selezioniamo l’area della carta su cui sono stati aggiunti i simboli, clicchiamo con il pulsante destro sull’area e selezioniamo l’opzione aggiungi simboli come soste, a questo punto clicchiamo sul deposito di partenza con il pulsante destro e selezioniamo l’opzione itinerario aggiungi come inizio e poi aggiungi come fine. Clicchiamo quindi su ogni punto della carta che rappresenta un nostro cliente e andiamo sull’opzione itinerario pianifica sosta ed indichiamo la durata della sosta. A questo punto andiamo nel menù itinerario e clicchiamo sul tasto ottimizza soste, in questo modo MapPoint risolve il problema del commesso viaggiatore, infine clicchiamo su pianifica itinerario per avere la durata del viaggio e le indicazioni stradali. Se vogliamo risolvere il problema tramite codice partiamo da una tabella in Access con i seguenti campi: CLIENTE, LONGITUDINE, LATITUDINE, DURATA SOSTA. Successivamente utilizziamo la seguente funzione per ottenere un vettore che ci restituisce l’elenco delle soste. Public Function TPS(TabellaDati, CampoCliente, CampoLAT, CampoLON, CampoSosta) 17 Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz Dim objApp As New MapPoint.Application Dim objMap As MapPoint.Map Dim objRoute As MapPoint.Route Dim db As DAO.Database Dim tabella As DAO.Recordset Set db = CurrentDb Set tabella = db.OpenRecordset(TabellaDati, dbOpenDynaset) tabella.MoveLast NumeroRighe = tabella.RecordCount tabella.MoveFirst Set objMap = objApp.ActiveMap Set objRoute = objMap.ActiveRoute objApp.Visible = False objApp.UserControl = False ReDim Point(NumeroRighe) As MapPoint.Location Do Until tabella.EOF c=c+1 CLIENTE = tabella.Fields(CampoCliente) LAT = tabella.Fields(CampoLAT) LON = tabella.Fields(CampoLON) SOSTA = tabella.Fields(CampoSosta) Set Point(c) = objMap.GetLocation(LAT, LON) objRoute.Waypoints.Add Point(c), CLIENTE objRoute.Waypoints.Item(c).StopTime = SOSTA * geoOneMinute tabella.MoveNext Loop tabella.Close db.Close objRoute.Waypoints.Optimize objRoute.Calculate NSOSTE = objRoute.Waypoints.Count ReDim SOSTE(NSOSTE) For x = 1 To NSOSTE SOSTE(x) = objRoute.Waypoints.Item(x).Name Next x TPS = SOSTE objMap.Saved = True objApp.Quit End Function 18