def __init__(self, depart, arrivee, heure_debut, date_format="%Y-%m-%d %H:%M:%S"): self.depart = depart self.arrivee = arrivee self.heure_debut = heure_debut # Préparation de l'URL pour l'API base = "https://maps.googleapis.com/maps/api/distancematrix/json?" origine = "origins=" + str(depart["lat"]) + "," + str(depart["lon"]) destination = "&destinations=" for lieu in arrivee: destination = destination + str(lieu["lat"]) + "," + str(lieu["lon"]) + "|" departure_time = "&departure_time=" + str(round(utile.convert_date(heure_debut, date_format))) fin_url = "&traffic_model=best_guess&mode=driving&language=fr-FR&key=AIzaSyCQnaoaMu6GVo3AwRzN62l0onao2TPN_u0" # Concaténation des éléments de l'URL url = base + origine + destination + departure_time + fin_url response = utile.requete_http(url) json_response = json.loads(response) trajet = [] i = 0 # Récupération des distances et des temps de parcours des trajets for element in json_response["rows"][0]["elements"]: temp = arrivee[i] temp["distance"] = round(element["distance"]["value"] / 1000, 2) temp["temps"] = round(element["duration_in_traffic"]["value"] / 60, 2) trajet.append(temp) i = i + 1 self.trajet = trajet
def __init__(self, depart, arrivee, heure_debut, date_format="%Y-%m-%d %H:%M:%S"): self.depart = depart self.arrivee = arrivee self.heure_debut = heure_debut # Préparation de l'URL pour l'API base = 'https://maps.googleapis.com/maps/api/distancematrix/json?' origine = 'origins=' + str(depart["lat"]) + "," + str(depart["lon"]) destination = '&destinations=' for lieu in arrivee: destination = destination + str(lieu["lat"]) + "," + str( lieu["lon"]) + "|" departure_time = '&departure_time=' + str( round(utile.convert_date(heure_debut, date_format))) fin_url = '&traffic_model=best_guess&mode=driving&language=fr-FR&key=AIzaSyCQnaoaMu6GVo3AwRzN62l0onao2TPN_u0' # Concaténation des éléments de l'URL url = base + origine + destination + departure_time + fin_url response = utile.requete_http(url) json_response = json.loads(response) trajet = [] i = 0 # Récupération des distances et des temps de parcours des trajets for element in json_response["rows"][0]["elements"]: temp = arrivee[i] temp["distance"] = round(element['distance']['value'] / 1000, 2) temp["temps"] = round(element['duration_in_traffic']['value'] / 60, 2) trajet.append(temp) i = i + 1 self.trajet = trajet
def __init__(self, depart, arrivee, heure_debut, date_format="%Y-%m-%d %H:%M:%S"): self.depart = depart self.arrivee = arrivee self.heure_debut = heure_debut base = 'https://maps.googleapis.com/maps/api/directions/json?' origine = 'origin=' + str(depart["lat"]) + "," + str(depart["lon"]) destination = '&destination=' + str(arrivee["lat"]) + "," + str( arrivee["lon"]) departure_time = '&departure_time=' + str( round(utile.convert_date(heure_debut, date_format))) fin_url = '&traffic_model=best_guess&mode=driving&language=fr-FR&key=AIzaSyCQnaoaMu6GVo3AwRzN62l0onao2TPN_u0' '''Ajouter l'heure de depart à l'url''' url = base + origine + destination + departure_time + fin_url reponse = utile.requete_http(url) data_response = json.loads(reponse) self.distance = round( data_response['routes'][0]['legs'][0]['distance']['value'] / 1000, 2) self.temps = round( data_response['routes'][0]['legs'][0]['duration_in_traffic'] ['value'] / 60, 2)
def geocoder(adresse): ''' Geocoder une adresse en (latitude, longitude) grâce à l'API de Nominatim. ''' base = 'http://nominatim.openstreetmap.org/search?' \ 'format=json&polygon_geojson=1&q=' texte = utile.nettoyer(adresse) mots_cles = '+'.join(texte.split()) url = ''.join((base, mots_cles)) reponse = utile.requete_http(url) try: adresse = json.loads(reponse)[0] latitude = float(adresse['lat']) longitude = float(adresse['lon']) return { 'statut': 'succes', 'lat': latitude, 'lon': longitude } # L'adresse n'est pas valide except: return { 'statut': 'echec' }
def distance(depart, arrivee): if len(depart)<3 or len(arrivee)<3: return None else: base = 'https://maps.googleapis.com/maps/api/distancematrix/json?' origine = 'origins=' + formatage_url(depart) destination = '&destinations=' + formatage_url(arrivee) fin = '&mode=driving&language=fr-FR&key=AIzaSyCQnaoaMu6GVo3AwRzN62l0onao2TPN_u0' url = base + origine + destination + fin reponse = requete_http(url) return json.loads(reponse)
def calculer(self): # Concaténation des éléments de l'URL response = utile.requete_http(self.url) json_response = json.loads(response) trajet = [] # Récupération des distances et des temps de parcours des trajets for i, element in enumerate(json_response["rows"][0]["elements"]): temp = self.arrivee[i] temp["distance"] = round(element['distance']['value'] / 1000, 2) temp["temps"] = round(element['duration_in_traffic']['value'] / 60, 2) trajet.append(temp) self.trajet = trajet
def parcours(depart, arrivee, heure_debut): '''Fonction permettant de formater l'url et de calculer les distances Attention à la key qu'il faudra changer''' base = 'https://maps.googleapis.com/maps/api/directions/json?' origine = 'origin=' + utile.formatage_url(depart) destination = '&destination=' + utile.formatage_url(arrivee) departure_time = '&departure_time=' + str(round(utile.convert_date(heure_debut))) fin_url = '&traffic_model=pessimistic&mode=driving&language=fr-FR&key=AIzaSyCQnaoaMu6GVo3AwRzN62l0onao2TPN_u0' '''Ajouter l'heure de depart à l'url''' url = base + origine + destination + departure_time + fin_url reponse = utile.requete_http(url) return json.loads(reponse)
def calculer(self): """ Calculer la durée et la distance d'un parcours à partir d'une URL. """ # Construire l'URL de trajet self.construire() # Requêter l'URL reponse = utile.requete_http(self.url) informations = json.loads(reponse) # Extraction de la distance self.distance = informations["rows"][0]["elements"][0]["distance"]["value"] # Extraction de la durée self.duree = informations["rows"][0]["elements"][0]["duration_in_traffic"]["value"]
def calculer(self): ''' Calculer la durée et la distance d'un parcours à partir d'une URL. ''' # Construire l'URL de trajet self.construire() # Requêter l'URL reponse = utile.requete_http(self.url) informations = json.loads(reponse) # Extraction de la distance self.distance = informations['rows'][0]['elements'][0]['distance'][ 'value'] # Extraction de la durée self.duree = informations['rows'][0]['elements'][0][ 'duration_in_traffic']['value']
def __init__(self,depart, arrivee, heure_debut, date_format = "%Y-%m-%d %H:%M:%S"): self.depart = depart self.arrivee = arrivee self.heure_debut = heure_debut base = 'https://maps.googleapis.com/maps/api/directions/json?' origine = 'origin=' + str(depart["lat"]) + "," + str(depart["lon"]) destination = '&destination=' + str(arrivee["lat"]) + "," + str(arrivee["lon"]) departure_time = '&departure_time=' + str(round(utile.convert_date(heure_debut,date_format))) fin_url = '&traffic_model=best_guess&mode=driving&language=fr-FR&key=AIzaSyCQnaoaMu6GVo3AwRzN62l0onao2TPN_u0' '''Ajouter l'heure de depart à l'url''' url = base + origine + destination + departure_time + fin_url reponse = utile.requete_http(url) data_response = json.loads(reponse) self.distance= round(data_response['routes'][0]['legs'][0]['distance']['value'] / 1000,2) self.temps= round(data_response['routes'][0]['legs'][0]['duration_in_traffic']['value'] / 60,2)