import pandas as pd import osmnx as ox import panel as pn import param import colorcet as cc import autoroute transformer = autoroute.to_Lambert93() pn.extension() class Pars(param.Parameterized): orig_adr= param.String(label="Origine") dest_adr= param.String(label="Destination") precision = param.Integer(label="Granularité routes", bounds=(2, 6), default=4) par=Pars() calcul=pn.widgets.Button(button_type= "primary", name="Calculer parcours") carte=pn.pane.plot.Folium(min_height=1000, sizing_mode='stretch_both') def calculs(dummy): calcul.disabled=True orig_coo=ox.geocoder.geocode(par.orig_adr) dest_coo=ox.geocoder.geocode(par.dest_adr) calcul.name="Téléchargement carte" G=autoroute.download_graph(orig_coo, dest_coo, par.precision) calcul.name="Calcul itinéraires" Gc=autoroute.add_tarifs(G) orig_lamb=transformer.transform(*orig_coo) dest_lamb=transformer.transform(*dest_coo) orig_id=ox.nearest_nodes(Gc, *orig_lamb) dest_id=ox.nearest_nodes(Gc, *dest_lamb) df=autoroute.tariftimedf(Gc, orig_id, dest_id) calcul.name="Affichage résultats" gpfs=pd.concat([autoroute.clean_gfast(autoroute.ox.routing.route_to_gdf(Gc, row["path"], weight= "travel_time")) for _, row in df.iterrows()]) carte.object=gpfs.explore(column="legend", tooltip= ["poids", "rue"], cmap=cc.b_glasbey_category10, map_kwds={"font_size": 12}, style_kwds={"weight": 3}, highlight_kwds={"weight": 5}) calcul.disabled=False calcul.on_click(calculs) app=pn.template.MaterialTemplate( title="Autoroute v0.2.0", sidebar=[pn.Param(par, name="Paramètres"), calcul], main=carte, ) app.servable()