| 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() |