Logistica con mappointinfologis.biz/wp-content/uploads/2011/06/Logistica-con...spanno metriche di...

18
Logistica con MapPoint Gian Paolo Calzolaro www.infologis.biz La conoscenza a dimensione d’impresa

Transcript of Logistica con mappointinfologis.biz/wp-content/uploads/2011/06/Logistica-con...spanno metriche di...

  • Logistica con MapPoint

    Gian Paolo Calzolaro

    www.infologis.biz

    La conoscenza a dimensione d’impresa

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    2

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    3

    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.

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    4

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    5

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    6

    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),

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    7

    infine viene richiesta la scala con cui rappresentare i dati sulla carta.

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    8

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    9

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    10

    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.

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    11

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    12

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    13

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    14

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    15

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    16

    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

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    17

    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)

  • Gian Paolo Calzolaro - Logistics & Automation Consultant – www.infologis.biz

    18

    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