Distanza STRADALE tra due punti
Hai un problema con Excel? 
Distanza STRADALE tra due punti
di fiocco87 data: 18/11/2015 12:16:26
Ciao a tutti,
ritorno alla carica con distanze, coordinate&co.
Esiste una bella macro per avere la distanza STRADALE tra due punti geografici?
I punti sono identificati da latitudine e longitudine.
Anyone?
Grazie come sempre!!
di gdito data: 18/11/2015 12:59:52
Ciao Fiocco84, se ti dico come fare quanto mi dai?
Scherzi a parte, ovviamente per sapere quanto ti serve devi rivolgerti ad un servizio di mappe, Excel non ha modo di sapere quali sono le strade. Puoi quindi usare (di nuovo) Google, nello specifico Google Maps. Per farlo devi prima di tutto creare una API Key per la tua applicazione, puoi farlo da qui cliccando su "Get A Key", devi avere un account Google (gmail se preferisci)
h t t p s ://developers.google.com/maps/documentation/distance-matrix/intro
Nella stessa pagina trovi anche le indicazioni su come fare, in breve comunque devi inviare una richiesta al server composta in questo modo
h t t p s://maps.googleapis.com/maps/api/distancematrix/xml?origins=45.4641900,9.1938100&destinations=41.8995260,12.4895720&mode=driving&language=it-IT&key=[TUA API KEY]
Il risultato sarà in XML che dovrai quindi analizzare in VBA, il formato è quello che trovi sotto
OK
Via Pattari, 5, 20122 Milano, Italia
Via Milano, 8, 00184 Roma, Italia
OK
20658
5 ore 44 min
572972
573 km
Può esserti utile come punto di partenza?
di gdito data: 18/11/2015 13:01:53
Purtroppo il sito mi elimina i tag XML... uff...
trovi qui l'esempio h t t p ://justpaste.it/esempio_distanza_xml
di scossa data: 18/11/2015 14:03:11
Ciao,
cit.gdito: ".... devi prima di tutto creare una API Key per la tua applicazione"
una precisazione: la key non è indispensabile e può essere omessa.
output xml: maps.googleapis.com/maps/api/distancematrix/xml?origins=45.4641900,9.1938100&destinations=41.8995260,12.4895720&mode=driving&language=it-IT
output json: maps.googleapis.com/maps/api/distancematrix/json?origins=45.4641900,9.1938100&destinations=41.8995260,12.4895720&mode=driving&language=it-IT
| scossa's web site |
| Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
output json:
{
"destination_addresses" : [ "Via Milano, 8, 00184 Roma, Italia" ],
"origin_addresses" : [ "Via Pattari, 5, 20122 Milano, Italia" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "573 km",
"value" : 572972
},
"duration" : {
"text" : "5 ore 44 min",
"value" : 20658
},
"status" : "OK"
}
]
}
],
"status" : "OK"
} |
di gdito data: 19/11/2015 07:34:58
Sicuro che può essere omessa? Un paio di anni fa era diventata obbligatoria da quando avevano limitato il numero di quel per App nella versione free.
Per la scelta dell'output in vba credo sia più semplice manipolare XML rispetto a json
di scossa data: 19/11/2015 09:04:23
cit.: "Sicuro che può essere omessa?"
Sì, serve per mode=transit (mezzi pubblici).
N.B.: ho solo fatto una prova veloce nel browser e non da Excel, ma non credo che cambi (non ho tempo di provare).
| scossa's web site |
Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw) |
di gdito data: 19/11/2015 10:35:21
@scossa
Grazie per il test . Io l'avevo usata in un app e senza API Key non voleva sapere di andare quindi ho dato per scontato che anche con Excel doveva essere così. Proverò anche io a vedere cosa succede senza AK all'interno di un APP e da una macro
di fiocco87 data: 20/11/2015 10:11:54
Grazie a tutti per gli input preziosi.
Purtroppo speravo in una soluzione più easy e veloce (una bella macro e via XD).
Visto che questa funzionalità non ha tutto sommato una grande urgenza, penso che per ora accantonerò l'idea, per riprenderla magari in futuro con più tempo da dedicarci ;)
grazie ancora a tutti per l'aiuto!
Vuoi Approfondire?