Un pilote : Orléans Métropole
Cette sous-partie explique le processus de mise en place du prototype de l'algorithme. d'audit.
La situation d'Orléans
L'algorithme d'audit
Algorithme intégrant uniquement les données optimisées
import pandas as pd
from geopy.distance import geodesic # pour calculer la distance entre deux coordonnées
osm=pd.read_excel("C:/Users/lamranay/Desktop/OrleansOSM.xlsx") #fichier xl
ct=pd.read_excel("C:/Users/lamranay/Desktop/OrleansCT.xlsx")
osm['latitude'] = osm['latitude'].astype(str) #transformer en chaine de caracteres pour garder le plus d'info possible eviter les arrondis
osm['longitude'] = osm['longitude'].astype(str)
ct['longitude'] = ct['longitude'].astype(str)
ct['latitude'] = ct['latitude'].astype(str)
new_df=pd.DataFrame([],columns=[])
for i in range(len(ct)):
ct_city=(ct['latitude'][i], ct['longitude'][i]) # coordonnées issues de ct
for j in range(len(osm)):
osm_city=(osm['latitude'][j], osm['longitude'][j]) # coordonnées issues de osm
if(geodesic(ct_city,osm_city).miles <= 0.009):# changer pour augementer la distance; 0.009 miles = 15 m
cap=ct['Nombre de places'][i]
if(pd.isnull(cap)):
cap=osm['capacity'][j]
covered=ct['Couverture'][i]
if(pd.isnull(covered)):
covered=osm['covered'][j]
new_df = new_df.append({'Latitude' : osm['latitude'][j] , 'Longitude' : osm['longitude'][j], 'Commune' : ct['Commune'][i], 'Code INSEE': ct['Code INSEE'][i], 'Rue':ct['Rue'][i],'Capacité' : cap,'Couvert': covered,'Type':ct['Type'][i],'Geo shape': ct['geo_shape'][i],'Date' : ct['Maj'][i],'Num':ct['Numero'][i],'id':osm['@id'][j]}, ignore_index=True)
print(geodesic(ct_city,osm_city).miles)
i=0
for i in range(len(ct)):
if(ct['Numero'][i] in new_df['Num']):
pass
else:
new_df = new_df.append({'Latitude' : ct['latitude'][i] , 'Longitude' : ct['longitude'][i], 'Commune' : ct['Commune'][i], 'Code INSEE': ct['Code INSEE'][i], 'Rue':ct['Rue'][i],'Capacité' : ct['Nombre de places'][i],'Couvert': ct['Couverture'][i],'Type':ct['Type'][i],'Geo shape': ct['geo_shape'][i],'Date' : ct['Maj'][i]}, ignore_index=True)
i=0
for i in range(len(osm)):
if(osm['@id'][i] in new_df['id']):
pass
else:
new_df = new_df.append({'Latitude' : osm['latitude'][i] , 'Longitude' : osm['longitude'][i],'Capacité' : osm['capacity'][i],'Couvert': osm['covered'][i],'Type':osm['bicycle_parking'][i]}, ignore_index=True)
new_df=new_df.drop("id",axis=1)
new_df=new_df.drop("Num",axis=1)
new_df.to_excel(r'C:/Users/lamranay/Desktop/Orleans_CT_OSM.xlsx') # à changer pour stocker le fichier ailleurs ou modifier le nom du fichier
Algorithme intégrant les données optimisées et les données ne pouvant pas être croisées
Les points bloquants pour la réplicabilité
PreviousLa solution: un algorithme complétant le fichier national de référenceNextPhase 5: Responsabiliser l’usager pour rendre la démarche durable
Last updated
Was this helpful?