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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
WaterIT
User
Beiträge: 1
Registriert: Dienstag 8. Februar 2022, 09:26

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
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe mir mal erlaubt, Deinen Post zu bearbeiten. Der API-key muss geheim bleiben!
imonbln
User
Beiträge: 191
Registriert: Freitag 3. Dezember 2021, 17:07

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.
Antworten