Newsgroup: it.lavoro.informatica
Titolo: [Sviluppo] Calcolo tempi di percorrenza tra due località

Ciao a tutti,
per un software che devo sviluppare devo calcolare i tempi di percorrenza
tra due localitą, conosciute tramite le loro coordinate geografiche. Il
tragitto deve essere calcolato sul percorso ottimale, indipendentemente
dalla tipologia di strada (autostrada, mulattiera, etc)
Avete idea se esistono web services che forniscono tale funzionalitą, anche
a pagamento ovviamente ? In alternativa anche un software desktop
interfacciabile via COM andrebbe bene. I vari servizi web tipo ViaMichelin
o Virgilio Mappe forniscono questa informazione (peraltro partendo da un
indirizzo), ma tramite pagina web "manuale".
Ciao
PaF

Il Wed, 15 Apr 2009 10:42:38 +0200, PaF ha scritto:
[cut]
Mi rispondo da solo: il servizio di ViaMichelin è anche disponibile tramite 
web services. Mi chiedo solo la velocità di calcolo, dovendo creare una 
matrice isocronica dei comuni italiani (oltre 65 milioi di record)
PaF

 matrice isocronica dei comuni italiani (oltre 65 milioi di record)
Beh, è lo stesso calcolo che fa un qualsiasi navigatore satellitare quando
imposti un percorso, no? Quindi l'ordine di grandezza di velocità è
quello, semmai avendo maggiore potenza di calcolo a disposizione potrà
essere più veloce.

 essere più veloce.
Vero.
Stavo anche considerando un'altra soluzione: usare via COM un software come
Microsoft MapPoint, del quale è uscita la versione 2009 (scaricabile anche
in versione trial). 
Se ci fosse una funzione chiamabile con i parametri che ho a disposizione
il tutto sarebbe ancora più comodo e sicuramente a costo inferiore.
Ho già iniziato il download per studiarlo :-)
PaF

 source)?
L'algoritmo sarà banale ma la quantità di soldi da dargli sicuramente no!

 quello che spenderebbe.
Mi fai i conti in tasca ? :-P
Non č che avendo il fatturato che ho mi posso permettere di non valutare
nel dettaglio il rapporto prezzo/prestazioni. 
Se con MapPoint 2009, al costo circa 350 euro, riesco a fare quello che mi
serve di sicuro non vado a spendere di piů. Dalle ricerche che sto facendo
sembra proprio che l'interfaccia COM esposta da MapPoint faccia quello che
mi serve.
PaF

 mi serve.
Io comunque andrei di WS. COM è ormai anacronistico :P anche se poi dipende 
dal tipo di installazione e altri requisiti.
-- 
Vide

 dal tipo di installazione e altri requisiti.
Il software sarebbe "usa e getta", una volta creata la matrice butto via
tutto. Anche il vecchio, anacronistico e puzzolente VB6 mi andrebbe
benissimo, anzi, meglio ancora del COM Interop :-)
PaF

 benissimo, anzi, meglio ancora del COM Interop :-)
Da questo e da un msg precedente si capisce che tu debba "ricostruirti" 
tutte le possibili mappe per collegare due qualsiasi punti in Italia.
Ti consiglio di leggere bene le istruzioni e la licenza del software dal 
quale vuoi trarre le info perché potresti non poterlo (legalmente) fare...
In pratica ricostruisci la base dati cartografica... che č in pratica il 
99% del valore di un navigatore...

 99% del valore di un navigatore...
Grazie del suggerimento, appena installerò la trial approfondisco. Però con
quanto ho scritto sopra non credo di abusare dell'applicazione.
PaF

 Non esattemnete, mi serve solo la distanza, non il percorso.
Ma la distanza E' funzione del percorso, non puoi determinare la prima
se non hai prima determinato il secondo!

 dipende dal tipo di installazione e altri requisiti.
Cioè per un programma che si esegue in locale è meglio un WS???? Ormai
è una mania :-)



Si ma non devo memorizzare *il percorso*, ma solo il tempo di percorrenza,
per cui è vero che uso l'oggetto COM in modo ripetuto (e già qui devo
vedere se c'é qualche limitazione) ma non salvando tutta l'elaborazione.
PaF

 PaF
Andrea

 è una mania :-)
Quale parte di "dipende dal tipo di installazione" non hai capito? :P
-- 
Vide

Il Wed, 15 Apr 2009 19:46:23 +0200, PaF ha scritto:
[cut]
Ho fatto dei test con MapPoint 2009, utilizzato tramite COM, ci impiega
circa 3.5 secondi per query, considerando che ne devo fare qualche milione
temo non sia la strada giusta :-(
PaF

 anche a pagamento ovviamente ? 
Google maps.
L'API JavaScript ha tutto quello che ti serve:
http://code.google.com/apis/ajax/playground/
?
exp=maps#map_directions_advanced
Non so se però l'accesso al calcolo dei tragitti sia disponibile anche 
tramite un API non JavaScript.
Ciao  Manlio

 source)?
ciao, mi dici questo algoritmo A* che vantaggi ha su quello di Dijkstra?
ho fatto una ricerca veloce su internet e non ho trovato nulla di 
approfondito, mi sapresti indirizzare verso qualche link?
ANche sui miei libri di Algoritmi e strutture dati e ricerca operativa 
non l'ho trovato, ma da quello   che ho letto su wikipedia mi sembra 
interessante.
Grazie.

Vide wrote:

Oh, certo. Come dire: io ti consiglio il giaccone imbottito a 3 strati,
certo potrebbe dipendere se fuori fa -40 o +40... :-)
 

 qualche milione temo non sia la strada giusta :-(
Bisogna anche vedere quanto ci impiega la chiamata al WS su internet.
Di meno?

 certo potrebbe dipendere se fuori fa -40 o +40... :-)
Se stiamo parlando di "software che sviluppo" io che ne so che software è? 
Ok, poi parla di COM però c'è pure gente abbastanza pazza da scrivere 
applicazioni web in ambiente MS :)
(ok, in .net COM non dovrebbe più esistere però non si sa mai :P)
-- 
Vide

 (ok, in .net COM non dovrebbe più esistere però non si sa mai :P)
Considerando che Microsoft Office è pesantemente strutturato con oggetti
COM e che Windows stesso funziona anche con COM sarà difficile liberarsi di
questa tecnologia...
PaF


Dunque, tu vuoi calcolarti una matrice con tutti i tempi di
percorrenza tra tutti
gli oltre 8000 comuni italiani, quindi se non erro, devi calcoare
circa 8000*(8000-1)/2 valori,
cioè circa  32 milioni di valori. Tu giustamente hai detto 65 milioni,
ma in generale
credo che dal comune X al comune Y e viceversa sia uguale.
Anche mettendo 1 secondo a elaborazione arrivi a quasi 9000 ore, cioè
più
di un anno.
Secondo me un modo per farlo qualcuno l'ha trovato e l'ha fatto, forse
ti conviene cercare direttamente se qualcuno vende la matrice.
Saluti
 Cristian

 di questa tecnologia...
dipende dai punti di vista.
da un altro punto di vista, microsoft office è *l'unico* strumento 
pesantemente strutturato con oggetti com, considerato che nel web 2 tutto 
il resto del mondo usa altre tecnologie semmai si può dire che non sarà 
difficile liberarsi di office... :P

 ti conviene cercare direttamente se qualcuno vende la matrice.
Ciao,
nella prima stima brutale avevo indicato oltre 65 milioni, in realtà come
hai giustamente scritto sono poco meno della metà.
Sul fatto di cercare qualcuno che abbia già fatto il lavoro non mi
conviene, piuttosto rinuncio alla commessa (come praticamente ho già
deciso, il valore era comunque basso rispetto allo sbattimento)
Ciao
PaF



Certamente, ma poiché si stava parlando di Windows e soprattutto di una
tecnologia desktop è chiaro che il punto di vista considerato è
Windows-centrico, l'osservazione sul web in questo contesto è poco
attinente. 
Ti dirò di più: sempre mantenendo questo punto di vista considerando la
mole di applicazione COM based sviluppate dai milioni di sviluppatori
Windows (VB6 su tutti) ribadisco che sarà difficile liberarsi a breve da
questa tecnologia *nel mondo Windows*.
Chi usa Linux ne è sempre stato libero :-)
PaF

 più di un anno.
Oppure mette su una VM che ne fa 1/400, la clona 400 volte (i.e.
tramite Amazon et similia), genera 400 file di configurazione per
partizionare le query, ed in un paio di giorni ha finito (io faccio in
maniera simile per i system test automatici, spendo 2 giorni per oltre
1 mese di computazioni).
BTW hai comunque ragione sulle conclusioni ;)
--
ale
http://ale.riolo.co.uk

Non ho chiaro cosa devi fare ma prima di abbandonare prova a vedere se 
qui trovi informazioni che ti possano tornare utili:
http://wiki.navit-project.org/index.php/Main_Page



Ti ringrazio per le info: il punto non è la fattibilità tecnica (ho già
sviluppato il programma che mi estrae le informazioni di cui ho bisogno) ma
i tempi di calcolo.
PaF

 i tempi di calcolo.
Hai provato a vedere che la cpu sia effettivametne al 100% e che proprio 
per evitare dei brute-force non abbiano "rallentato" l'algoritmo ?
Forse si può parallelizzare, sia sulla stessa macchina (più istanze del 
tuo programma che fanno le interrogazioni) o più VM ognuna con una istanza.
Ti posso "prestare" un paio di 24 core che dovrò installare fra qualche 
giorno.....



Ti ringrazio per la proposta :-)
Avevo già controllato il carico, il collo di bottiglia è proprio l'oggetto
COM di MapPoint, quando esegue il calcolo della distanza sul mio Core2 Duo
P7300 (non recentissimo ma per il resto va benissimo) il carico va al 100%.
Quello che ho fatto è un semplice studio di fattibilità pre-offerta,
sapendo che in ogni caso il valore della commessa sarebbe stato basso (sui
2000/3000 euro), con un limite temporale di presentazione dell'offerta di
pochi giorni (ho lavorato alla sera, caro Osid a volte capita...)
 
Poiché prevedo troppe complicazioni rispetto al tempo che ho a disposizione
(pochissimo per nuovi progetti) preferisco non impelagarmi, anche perché mi
auguravo che questo progetto andasse avanti un po' da solo (della serie pc
messo ad elaborare per qualche giorno da solo), invece tra test etc etc sto
già sforando.
Ciao
PaF