Condividi:        

Distanze chilometriche con Google

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Distanze chilometriche con Google

Postdi Marius44 » 24/10/18 15:38

Buon pomeriggio a tutti

Qualche tempo fa conservai gelosamente il suggerimento di Anthony47 in questa discussione
http://www.pc-facile.com/forum/viewtopic.php?f=26&t=107671&p=631461&sid=cacdb6997ede9f29b6761c843668d0ff#p631461

Oggi mi accorgo che non funziona più. Probabilmente Google ha cambiato qualcosa (e, forse, anche tanto).
Come si può rimediare? Ovviamente ho provato ma senza alcun risultato.

Grazie per l'attenzione e ciao a tutti,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Sponsor
 

Re: Distanze chilometriche con Google

Postdi Anthony47 » 25/10/18 01:37

Google ha cambiato politica, e ora per le query tramite http://maps.google.com/maps/api/geocode e' necessaria una "chiave" subordinata a un contratto a pagamento, ma con franchigia di N operazioni gratuite.
Io ho una mia chiave (key=AizaSyCbErs.........) associata a un mio contratto, ma non mi sento tanto sicuro a pubblicarla, visto che la carta di credito e' mia...
Vedi https://developers.google.com/maps/docu ... eGeocoding

Solo poche query sono ancora libere, es https://maps.googleapis.com/maps/api/directions, https://maps.googleapis.com/maps/api/place; quelle piu' "succose" sono soggette a chiave (che google assegna senza problemi, basta dare l'autorizzazione ad addebitare)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Distanze chilometriche con Google

Postdi Marius44 » 25/10/18 08:34

Ciao Anthony e grazie per la risposta.

Mi chiedevo ancora:
in quale modo è possibile calcolare la distanza tra due punti? Ho provato applicando una formula trigonometrica ai punti di cui si conosce Lat e Long ma, ovviamente, il chilometraggio non è "reale" poichè la formula calcola in "linea retta" e non seguendo un percorso stradale. Faccio un esempio: se voglio la distanza tra Catania e Messina e Catania e Reggio Calabria la prima "appare" più distante della seconda essendo la sua posizione più bassa (latitudine).

Se utilizzo il percorso per avere la mappa di Google questa mi appare con in bella evidenza sia la traccia stradale (o le tracce se ci sono percorsi alternativi) sia, in una Label, l'indicazione dei Km e del tempo occorrente. Ma non riesco a "leggere" il contenuto di queste Label. Queste le righe di codice che utilizzo:

Codice: Seleziona tutto
partenza = Range("AA" & rg1) & "+" & Range("AB" & rg1) & "/"
destinazione = Range("AA" & rg2) & "+" & Range("AB" & rg2) & "/"
perc = partenza & "+" & destinazione
Shell ("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe http://www.google.it/maps/dir/" & perc)

in cui le variabili rg1 e rg2 si riferiscono alle righe in cui ci sono Latitudine e Longitudine della città di partenza e di arrivo.

Sai se esiste un modo per avere la distanza e il tempo di percorrenza?

Come avrai capito, sto lavorando per realizzare un file del genere (la richiesta di un Utente di altro Forum era di calcolare la distanza tra due CAP) e, ovviamente, è ancora incompleto e mi sono arenato. Se pensi possa servire, chiedimelo e lo allego.

Ancora grazie e ciao,
Mario

PS - gli ultimi due indirizzi da te segnalati non sono raggiungibili
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Distanze chilometriche con Google

Postdi Marius44 » 25/10/18 11:11

Ciao
Ho commesso un errore
in cui le variabili rg1 e rg2 si riferiscono alle righe in cui ci sono Latitudine e Longitudine della città di partenza e di arrivo

Non è Lat e Long ma il nome e la provincia delle città di partenza e di destinazione.

Scusa. Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Distanze chilometriche con Google

Postdi Anthony47 » 25/10/18 15:17

L'unico url accessibile e' quello "Vedi https://etc etc", gli altri sono url delle classi di query cui facevo riferimento.
Ti avevo scritto che le API/directions sono ancora fruibii senza codice, avevo trovato la Function G_DISTANCE che le usa; vedi http://oco-carbon.com/coding/distance-f ... gle-excel/

Non l'ho mai provata, ma non ho dubbi che funzioni anche per i Cap; come tutte le query libere (senza chiave) e' soggetta a limiti di utilizzo per cui spesso ti troverai con errori tipo Requestor has exceeded limit oppure OVER_QUERY_LIMIT

Comunque Google concede una chiave a chiunque ne faccia richiesta, salvo che se l'uso eccede la franchigia bisogna pagare (il contratto autorizza ad addebitare sull carta di credito); ma se e' per un uso business le pretazioni potrebbero valere il costo.

Quanto al tuo codice, potresti slegarti dall'indicare l'applicazione da usare, tramite la libreria "shell32.dll". In testa al modulo dichiari la libreria:
Codice: Seleziona tutto
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long


Poi potrai usare l'istruzione
Codice: Seleziona tutto
  lngx = ShellExecute(vbNull, "Open", "http://www.google.it/maps/dir/" & perc, "", "", vbNormalFocus)

lngx e' una variabile long (conterra' il PID creato).
In questo modo verra' usata l'applicazione di default associata al comando, quindi il browser prescelto.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Distanze chilometriche con Google

Postdi Marius44 » 26/10/18 11:46

Ciao
scusa se non ho risposto prima ma sono stato impegnato ... coi nipotini.

Grazie per le dritte. Vedrò di farne tesoro per il futuro.

Ho dichiarato "in testa al Modulo" la libreria indicata e sostituito la riga di codice per aprire la mappa.
Ovviamente (e che dubbi ci potevano essere :) ), TUTTO OK.

Mi rimane però un problema. Una volta apparsa la mappa appare quanto segue:
a) la mappa con il percorso evidenziato ovvero i percorsi se sono più di uno;
b) nella parte sinistra della schermata le indicazioni riguardanti il/i percorso/i con le relative indicazioni circa il tempo di percorrenza e il chilometraggio.

Come faccio a "leggere" detti risultati? Non riesco a capire se trattasi di "tb" o di "li" o che altro.

Puoi essere così gentile da indirizzarmi. Grazie di cuore,

Ciao,
Mario

PS - Per quanto riguarda "le distanze fra CAP" l'ho abbandonato in quanto credo che non sia possibile in quanto ho notato che alcuni Comuni hanno lo stesso CAP (per esempio Mascalucia e Pedara in Provincia di Catania) e, pertanto, la distanza sarebbe zero cosa che non è vera.
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Distanze chilometriche con Google

Postdi Anthony47 » 27/10/18 17:53

Anche io ho avuto giorni intensi, per impegni familiari ma anche oltre...

Non so come e' organizzato il tuo lavoro, ma questa macro ad esempio attiva una query e poi riporta sul foglio attivo, che viene preventivamente AZZERATO SENZA PREAVVISO nel Range("A1:C100"), la sintesi dei risultati:
Codice: Seleziona tutto
Sub GetGGLDirections2()
Dim IE As Object, I As Long, J As Long
Dim myTrip As Object, myInTrip As Object
'
myURL = "https://www.google.it/maps/dir/45.9538683,8.5451756/45.9542775,8.5785703/@45.947931,8.5313553,14z"     '<<<<
Set IE = CreateObject("InternetExplorer.Application")
'
Range("A1:C100").ClearContents
'Naviga e attendi:
With IE
    .navigate myURL
    .Visible = True
    Do While .Busy: DoEvents: Loop    'Attesa not busy
    Do While .readyState <> 4: DoEvents: Loop 'Attesa documento
End With
'
myStart = Timer  'attesa addizionale
Do
    DoEvents
    If Timer > myStart + 2 Or Timer < myStart Then Exit Do
Loop
rePATH:
AppActivate ("Internet Explorer")
Stop             '111
'Ie document ora pronto:
k = Cells(Rows.Count, 1).End(xlUp).Row + 1
'Percorso:
Cells(k, 1) = ">>>> Da: " & IE.document.getelementbyid("directions-searchbox-0").getElementsByTagName("input")(0).Value
Cells(k + 1, 1) = ">>>> A:  " & IE.document.getelementbyid("directions-searchbox-1").getElementsByTagName("input")(0).Value
'
'Elementi:
For I = 0 To 10
    Set myTrip = Nothing: On Error Resume Next
    Set myTrip = IE.document.getelementbyid("section-directions-trip-" & I)
    On Error GoTo 0
    If myTrip Is Nothing Then Exit For
    k = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(k, 1) = myTrip.getElementsByClassName("section-directions-trip-title")(0).innerText
    Cells(k, 2) = myTrip.getElementsByClassName("section-directions-trip-duration")(0).innerText
    On Error Resume Next
    Cells(k, 3) = myTrip.getElementsByClassName("section-directions-trip-distance section-directions-trip-secondary-text")(0). _
       getElementsByTagName("div")(0).innerText
    Cells(k, 4) = myTrip.getElementsByTagName("div")(0).getAttribute("aria-label")
    On Error GoTo 0
Next I
rispo = MsgBox("Vuoi fare una nuova ricerca?", vbYesNo)
If rispo = vbYes Then
    GoTo rePATH
End If
'Chiusura IE
GoOut:
IE.Quit
Set IE = Nothing
End Sub
Con l'ovvia precisazione che questo "funziona oggi, domani è un altro giorno, si vedrà", perche' google puo' cambiare facilmente la composizione del codice html (magari cosi' vende piu' licenze delle sue API :D )

Noterai una istruzione Stop; l'ho inserita per poter eseguire manualmente piu' ricerche, i cui dati saranno elencati nel foglio Attivo (azzerato all'inizio, come detto prima). Questo accoppiato al msgbox con risposta Yes /No.
Per eseguire altre ricerche bastera' quindi modificare i dati di ricerca (partenza, Arrivo, tipo di viaggio) e poi riprendere l'esecuzione della macro dopo lo Stop

Volendo potresti migliorare l'interattivita' con Excel, ad esempio prevedendo di compilare gli "<input>" con valori prelevati da celle Excel e subordinare l'attesa della macro a qualche indicazione sempre inserita nel foglio; vedi dove e' piu' pratico arrivare...

Vedi se puoi farne uso nel tuo progetto.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Distanze chilometriche con Google

Postdi Marius44 » 28/10/18 18:11

Ciao Anthony

ancora grazie per il tuo intervento e per il codice fornitomi (ci stavo impazzendo sopra da un bel po')

Vedo di completare quello che sto cercando di portare avanti e poi pubblico il tutto. Ancora qualche ... messa a punto :lol:

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Distanze chilometriche con Google

Postdi Marius44 » 16/11/18 18:49

Buonasera a tutti
un saluto particolare ad Anthony (senza i suoi suggerimenti sarei ancora in ... alto mare).

Penso di aver fatto un buon lavoro (sicuramente migliorabile, ma io sono arrivato a tanto).
Se nel file allegato si inseriscono i dati (nelle celle bianche) e si clicca sui pulsanti si ottiene quanto richiesto e cioè:
- la distanza in chilometri sia stradali sia in linea d'aria;
- la mappa delle località o dei CAP inseriti con possibilità di scelta su eventuali omonimie o località col medesimo CAP
- le località entro un certo raggio dalla località o dal CAP richiesto.

Ho previsto anche la possibilità di inserire nuovi dati o correggere qualche dato esistente. L'unico problema è che bisogna inserire anche le coordinate. Ovviamente è anche possibile eliminare una località.

ecco il file: http://www.filedropper.com/distancesandmap
Oppure https://www.dropbox.com/s/kgpjjke58563s ... .xlsm?dl=0

Fate delle prove e fatemi sapere se ci sono (e ci saranno :lol: ) errori o malfunzionamenti.
Sarò assente per qualche giorno. Al rientro conto di ... contarvi numerosi.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Distanze chilometriche con Google

Postdi raimea » 16/11/18 20:04

ciao
all apertura da subito errore run time 1004

ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1408
Iscritto il: 11/02/10 07:33
Località: lago

Re: Distanze chilometriche con Google

Postdi Anthony47 » 16/11/18 20:42

A prima vista sembra bello, grazie per la condivisione!
Anche io ho lo stesso errore segnalato da raimea, ma ignorandolo poi "si muove"
Ma non ho fatto praticamente nessuna prova seria, vedro' con calma e lo inseriro' tra "I nostri lavori"

Ti segnalero' certamente un paio di cose...
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Distanze chilometriche con Google

Postdi Anthony47 » 19/11/18 13:11

Ho guardato il file, che presenta numerose originalita', complimenti.

Pero' secondo me stai sottoutilizzando Google.
Nel senso che Google Maps accetta tranquillamente richieste con indirizzi, non solo con nomi di citta'.
Ad esempio puoi benissimo chiedere il percorso Vicolo Lavatoio, Milano /Via Broletto 34, Milano, e Google te lo calcolera' senza problemi. E puoi anche fare a meno del foglio con le anagrafiche dei comuni.

Se ti limiti solo alla citta', l'utilita' del tool viene sminuita: tutti sanno arrivare a Milano, poi arrivare a Via Broletto 34, per togliersi il cappello e parlare sottovoce, e' la parte per cui mi serve il navigatore.

Come pure Google Maps e' multilingue, puoi benissimo chiedergli il percorso Fishergasse, Auer /Laurinstrasse 2, Bolzano; o le altre combinazioni linguistiche, es Fishergasse, Auer /Via Laurin 2, Bozen

E (per inciso) e' pure possibile fare richieste usando il solo Cap; tipo da 20144 a 20121 (ma conviene almeno aggiungervi a citta': 20144, Milano; soprattutto per risolvere i numerosi casi di Cap che comprendono vari Comuni anche distanti tra loro)

Ovviamente in questi casi ottenere la distanza in linea d'aria e' meno immediata (se contemporaneamente hai eliminato il foglio Anagrafica dei Comuni); ma se guardi il mio file vedrai che del primo sito Goggle resttuisce anche le coordinate geografiche, potresti valutare se usare quella stessa tecnica (vedi il ciclo che comprende aAt = InStr(1, rUrl, "/@", vbTextCompare))

L'uso dell'elenco Comuni restringe inoltre il tool al territorio Italiano; mentre potresti benissimo poter cercare il percorso Caesar Atlantic City, New Jersey /500 Sunset Boulevard, Cape May, New Jersey
O piu' semplicemente Rimini /Via Piana, Citta' di San Marino

Mi permetto anche di giudicare superflue le opzioni Misura o Mappa, nel senso che per ottenere i Km stradali devi accedere al calcolo percorso=Mappa; quindi la diversificazione non comporta nessun vantaggio ne' per l'utente ne' per la programmazione.

Immagino che dietro la voce "Altri Lavori" ci sia la possibilita' di inserire proprie Localita' o qualcosa come "Preferiti"; comunque io porterei in altra posizione queste attivita' di manutenzione, semplificando l'interfaccia per le attivita' piu' comuni.

Si potrebbe anche azzerare i Cap quando cambia la localita', per evitare di doverlo fare manualmente.

Un saluto
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Distanze chilometriche con Google

Postdi Marius44 » 19/11/18 15:42

Ciao Anthony
sono ancora fuori ma ... ti leggo.

Grazie per il tempo che hai voluto dedicarmi e doppio grazie per la sensibilità.
In poche adattissime parole hai "smontato" il mio lavoro (che, comunque, mi è servito per imparare tante cose nuove per me) dando anche suggerimenti su come "migliorarlo".

Ti assicuro che ci proverò.
Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Distanze chilometriche con Google

Postdi Anthony47 » 19/11/18 15:50

No no no, non lo voglio smontare: volevo solo suggerire alcuni miglioramenti, anzi suggerire di togliere dei freni che limitano inutilmente l'elaborato.
Con stima.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Distanze chilometriche con Google

Postdi Marius44 » 22/11/18 17:09

Ciao Anthony

grazie per la stima che mi sprona a sviscerare e capire il tuo codice e cercare di "rubarlo".

In merito al mio lavoro, hai ragione tu, si può semplificarlo (ed anche tanto) facendo ricorso ed attingendo dalle risposte di GoogleMaps.

L'unica cosa che, ritengo, non possa ottenersi, inserendo il solo indirizzo di partenza e senza una anagrafica adeguata, è l'elenco delle località entro un certo raggio.
Sì, si potrebbe fare il calcolo per sapere a quanti gradi corrisponde una certa distanza in Km ma da qui ad ottenere le località o, peggio ancora, i CAP entro quel raggio la vedo molto dura, se non impossibile.

Tu cosa ne pensi?

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Distanze chilometriche con Google

Postdi Anthony47 » 23/11/18 10:17

Si, calcolare le localita' entro un certo raggio la vedo dura, senza una anagrafica Localita' /Coordinate geografiche...
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Distanze chilometriche con Google

Postdi raimea » 21/05/19 17:37

ciao
sono interessato a questo file ,

ho scaricato la vers. sopra ed in parte funziona correttamente
ma se premo poi il pulsante - mappa -
la macro si ferma allo >>> stop come da immagine 2

esiste una vers successiva funzionante del file ?
sarei interessato

grazie

1
Immagine

2
Immagine
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1408
Iscritto il: 11/02/10 07:33
Località: lago

Re: Distanze chilometriche con Google

Postdi Marius44 » 22/05/19 06:27

Ciao
è un refuso dopo tante prove. Metti un apostrofo ( ' ) davanti allo stop a salva il file.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00


Torna a Applicazioni Office Windows


Topic correlati a "Distanze chilometriche con Google":

Google vocale
Autore: crisge73
Forum: Discussioni
Risposte: 19

Chi c’è in linea

Visitano il forum: Nessuno e 60 ospiti