Seite 1 von 1

Google Maps API - Variable Ziele je nach Zwischenzielen wählen

Verfasst: Dienstag 8. Februar 2022, 09:42
von WaterIT
Hallo alle Zusammen,

ich habe ein Projekt, indem ich optimale Routen bestimmen soll. Dabei gibt es immer eine feste Startadresse, feste Zwischenziele und mehrere Endziele. Je nach den Zwischenzielen soll aus einer Liste von Zieladressen das nahgelegenste Ziel ausgewählt werden. Hat jemand eine Idee wie ich das realisieren kann?

Ich verwende ich die Directions API von Google Maps. Ich habe soweit ein Programm geschrieben, in dem ich die Startadresse und Zwischenziele eingeben kann. Jetzt soll wie gesagt zusätzlich aus einer Liste von Endzielen das nahegelegenste ausgewählt werden.

Code: Alles auswählen

import gmaps
import gmaps.datasets
import requests
import urllib
gmaps.configure(api_key='Fooo')
url = "https://maps.googleapis.com/maps/api/geocode/json?address="
key = "&key=AIz..........."

end_destinations = ["Aachen, Germany", "Wolfenbüttel, Germany", "Salzburg, Austria", "Bremen, Germany", "Frankfurt, Germany"]

origin = input("Ihre Startadresse: ")#z.B. "Stresemannstraße 10, 31135 Hildesheim"
waypoints = []
while 1:
    input_text = input("Ihre Ziel/e: ")
    if input_text != "": #Sobald man ohne etwas einzugeben Enter drückt, wird die Route berechnet (while-Loop verlassen)
        waypoints.append(input_text)
    else:
        break

adressen=[origin]
adressen.extend(waypoints)


locations = []
#In "Locations" wird in jedem Durchlauf eine Liste mit Längen- und Breitengrad der jeweiligen Adresse angehängt.
for adresse in adressen:
    lat_and_lng = []
    adresse = urllib.parse.quote_plus(adresse)
    response = requests.get(url+adresse+key)
    resp_json_payload = response.json()
    location = resp_json_payload['results'][0]['geometry']['location']
    lat_and_lng.append(location['lat'])
    lat_and_lng.append(location['lng'])
    locations.append(lat_and_lng)
    #print(location)



#Pro Liste in der Liste "Locations" gibt es ein Paar aus Längen, und Breitengrad
route = gmaps.directions_layer(locations[0], locations[-1], waypoints = locations[1:-1], travel_mode='DRIVING', optimize_waypoints=True)
print(route)
#Die Route auf Karte visualisieren
fig = gmaps.figure()
fig.add_layer(route)
fig

Re: Google Maps API - Variable Ziele je nach Zwischenzielen wählen

Verfasst: Dienstag 8. Februar 2022, 10:15
von __deets__
Ich habe mir mal erlaubt, Deinen Post zu bearbeiten. Der API-key muss geheim bleiben!

Re: Google Maps API - Variable Ziele je nach Zwischenzielen wählen

Verfasst: Dienstag 8. Februar 2022, 22:31
von imonbln
WaterIT hat geschrieben: Dienstag 8. Februar 2022, 09:42
ich habe ein Projekt, indem ich optimale Routen bestimmen soll. Dabei gibt es immer eine feste Startadresse, feste Zwischenziele und mehrere Endziele. Je nach den Zwischenzielen soll aus einer Liste von Zieladressen das nahgelegenste Ziel ausgewählt werden. Hat jemand eine Idee wie ich das realisieren kann?
Klingt nach ein typischen NP Problem, spontan fällt mir das Traveling Salesman Problem ein, Wikipedia schlägt zur https://de.wikipedia.org/wiki/Tourenplanung auch Sweep-Algorithmus, oder eine Savings-Heuristik vor.