File size: 1,705 Bytes
a02a3e4
30daa5a
6eb98a7
30daa5a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a02a3e4
30daa5a
 
 
 
 
 
 
 
 
 
 
 
6eb98a7
a02a3e4
 
 
 
 
 
6eb98a7
30daa5a
6eb98a7
 
30daa5a
a02a3e4
30daa5a
 
6eb98a7
 
30daa5a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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()