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