Archives de
Étiquette : Distances routières

Quelques réflexions sur le permis de conduire

Quelques réflexions sur le permis de conduire

J’ai eu mon permis de conduire il y a quelques semaines et je n’ai même pas fêté ça. Si j’avais eu quelques potes sous la main, nul doute que nous nous serions emparés du prétexte mais doit on se réjouir d’avoir englouti une énergie considérable et des flots d’euros pour avoir le droit de devenir un pollueur actif et de jouir d’une illusion de liberté que l’on paye cher à l’industrie pétrolière ? Comme je n’était pas un élève très doué la petite blague m’aura en tout coûté plus de 2000 euros. Voici quelques enseignements que j’ai pu tirer de cette expérience dont je me serais volontiers passé. Je les partage avec vous, souhaitant bonne chance à ceux qui devront en passer par là…

Martin Gommel on Flickr (CC BY-NC-ND)

Ne comptez par sur votre banquier (surtout à la Banque Postale)

Tout le monde le sait, le permis ça coûte un bras. Certains s’en tirent pas trop mal et puis il y a les boulets de mon espèce qui ratent l’examen et à qui il faut quinze heures de leçon pour arriver à passer les rapports… Dans tout les cas arrive le moment douloureux où il faut sortir le chéquier. Comme la plupart des candidats sont des jeunes souvent désargentés, l’État a mis en place le « Permis à 1 euro ». Ça ne veut pas dire qu’on va vous faire le permis à un euro faut pas déconner quand même ! Ça veut juste dire qu’une banque vous fait un prêt que vous remboursez 1 euro/jour et l’État paye les intérêts à la banque. Le principe est pas mal, voyons la pratique.

Je suis à la Banque Postale, je me pointe la gueule enfarinée au guichet. La fille ne comprends rien, elle n’a jamais vu le document que je lui tends. Finalement un responsable m’explique que je dois prendre rendez vous avec mon conseiller financier. Deux jour plus tard je me pointe au rendez-vous, ça dure plus de deux heures pendant lesquels le type me ré-explique toute la procédure puis fait le tour de mes comptes, puis demande des documents sur mon garant. A la fin il me dit que naturellement ce n’est pas lui qui va prendre la décision de m’accorder le prêt. Il téléphone à Paris, et me passe une fille qui à nouveau me repose 50 questions… Je sors du bureau, dubitatif. C’était comme si je leur demandais un prêt de 250000 euros. Au bout d’une semaine la grosse blague, je reçois un courrier me notifiant qu’après simulation et examen de mon dossier la banque me refuse ma demande de prêt. Mon conseiller m’explique qu’il en est désolé mais qu’il ne peut rien pour moi. Tout ça se décide à Paris dans des conditions pour le moins opaque.

C’est juste un scandale, ces abrutis de banquiers me refuse un prêt de 1200 euros alors qu’il font joujou avec des millions sur les marchés financiers. Précisons que j’étais leur client depuis plus de cinq ans et que durant tout ce temps je n’ai pas été dans le rouge plus de cinq fois. Mon garant était fonctionnaire de catégorie A avec un revenu fixe et largement suffisant pour un tel prêt. Autrement dit un paquet de gens doivent se pointer avec un moins bon dossier et se faire gentiment remballer. Ironique quand on sait que ces mesures ont été prises pour aider ceux qui ont le moins de moyens…

Jouer à GTA ou à Need for Speed ne vous servira à rien

C’est bien malheureux mais les heures que j’ai pu passer au volant dans les rues de Liberty City et les tournois endiablés à bord de monstrueuses caisses couvertes de néons n’ont pas fait de moi un as de la route. En fait ces jeux ont même plutôt tendance à donner de mauvais réflexes car écraser une mamie est éliminatoire le jour de l’examen. Mais que cela ne vous dissuade pas de vous amuser ! J’ai remarqué qu’après une leçon épuisante de conduite, une petite course sur NFS atteint un niveau de fun record.

Misez sur vos facultés intellectuelles à défaut de savoir conduire

Le permis est avant tout une question de maîtrise technique que l’on acquiert au fur et à mesure des leçons. Comme partout, certain sont plus doués et apprennent plus vite. D’autres (comme moi) galèrent beaucoup ! A ceux là je conseille de ne pas se décourager et d’envisager la conduite accompagnée (voir point suivant) mais aussi de compenser avec leur neurones. Car dans le permis aussi il y a de la théorie. L’examen du code par exemple est uniquement basé sur la connaissance du code de la route et l’interprétation de situations. Il y a des gens qui mettent des années à avoir leur code en enchaînant les échecs à l’examen et les auto-école en profitent à fond avec plein de petites lignes glissées dans le contrat, qui à la fin, coûtent beaucoup d’argent. La solution que j’ai adoptée est simple : travail intensif ! Je me suis mangé leur bouquin immonde et tout leurs cours vidéo en 2 semaines, puis pendant une semaine j’ai enchainé les tests (attention de veiller à ce que l’auto-école donne accès à une banque de tests en ligne). Y a que ça qui marche, au bout de 400 questions on voit venir tout les pièges. J’ai donc eu mon code en 3 semaines au tarif minimum.

Pour l’épreuve pratique de conduite les choses se corsent mais là aussi un peu de travail à la maison permet de gratter quelques points. Connaitre les commandes, effectuer les vérifications et s’installer correctement dans le véhicule, ça peut rapporter jusqu’à 9 points (sur 30). Au passage je vous conseille ce site bien foutu pour réviser.

Tablez sur la conduite accompagnée et restez vous-même (i.e. un gros geek)

La conduite accompagnée permet de prendre confiance au volant et de terroriser son accompagnateur. Il serait donc dommage de s’en priver. En plus pour les majeurs, il existe une formule light : la conduite supervisée.

En ouvrant mon livret d’apprentissage je constate que je dois relever chaque trajet avec la date et la distance parcourue. Hahaha je vais te faire ça avec Excel ça va être rigolo en plus d’être joli. Mais je me rends vite compte que ça me soule d’aller chercher les distances sur google map. R peut nous faire tout ça tout seul et ça va être très rigolo en plus d’être très joli. Maintenant vous savez comment j’en suis arrivé à développer les fonctions présentées dans mon dernier billet. Pour les exploiter dans le cadre de la conduite accompagnée, il suffit de remplir un tableau comme ça :

DATE FROMCITY FROMDEP TOCITY TODEP AR
24/03/2012 LYON 69 GRENOBLE 38 NO

On précise le n° de département pour lever les ambiguïtés lors de la résolution d’adresse. La colonne AR est utilisée pour préciser si le trajet est un aller-retour.

source("script_mapquest.R")
tab <- read.table("conduite.txt", h=T)
tab$FROMDEP <- sprintf("%02.0f", tab$FROMDEP)
tab$TODEP <- sprintf("%02.0f", tab$TODEP)

from.cont <- paste(tab$FROMCITY, tab$FROMDEP, sep="+")
to.cont <- paste(tab$TOCITY, tab$TODEP, sep="+")

DIST <- mapq.distance(from.cont, to.cont, print=FALSE)
DIST <- DIST*ifelse(tab$AR=="NO", 1, 2)
sum(DIST)

DATE <- strptime(tab$DATE, format="%d/%m/%Y")
plot(DATE,cumsum(DIST), type="b", pch=20, ylab="Distance Cumulée (Km)", xlab="Date")
abline(h=c(1000), lty="dashed")

La commande source sert à charger les fonctions que l’on trouve ici. On utilise sprintf pour formater les chiffres car R à la fâcheuse habitude de supprimer les 0 qui précèdent les nombres. La ligne 11 renvoie le nombre total de km parcourus et on peut faire un petit graphique de son expérience, qui va croissante.

Distance cumulée en fonction du temps. Ojectif 1000 km atteint :p

En guise de conclusion : réformez moi ce système à la con

Voilà ma conclusion. Le permis de conduire en France a grand besoin d’être réformé en profondeur. Et ça beaucoup de gens le disent sans que ça bouge pour autant. Pourtant je suis d’avis qu’il ne faut pas y aller avec le dos de la cuillère. Je rêve d’une nationalisation des auto-écoles que l’on intégrerait aux lycées. Mon immersion au sein de la mafia des auto-écoles et mes mésaventures à la banque ne m’ont pas transformé en communiste… mais presque ! L’apprentissage de la conduite pourrait être une option facultative (mais fortement conseillée), pour laquelle des créneaux serait réservés dans l’emploi du temps. Le prix de la formation serait fixe, indexé sur le QF et l’évaluation serait continue. Ce ne sont que quelques idées lancées en l’air et ça peut sonner un peu extrême mais si on maintient que le permis de conduire est un facteur important pour l’accès à l’emploi, il serait temps de remettre un peu d’égalité dans ce bazar.

Facebooktwitter
Distances routières avec R et l’API Mapquest

Distances routières avec R et l’API Mapquest

Voilà un petit bout de code que j’avais écrit pour obtenir rapidement la distance par la route entre deux lieux géographiques avec R. On utilise les librairies RCurl et XML pour interroger l’API Mapquest basée elle même sur les données d’OSM. Le code est constitué de trois fonctions :

  • mapq.loc() renvoie un certain nombre d’infos sur un lieu (y compris ses coordonnées géographiques)
  • mapq.dist() renvoie la distance entre deux points géographiques spécifiés par leurs coordonnées
  • mapq.distance() : renvoie la distance routière entre deux points géographiques spécifiés par leurs noms. Choix de l’unité possible (« k » pour km ou « m » pour miles)

Une petite application de ces fonction est prévue pour le prochain billet 😉
On peut noter qu’une fonction équivalente est désormais fournie avec le package ggmap, basée elle sur le service Google Maps.

library (RCurl)
library (XML)

mapq.loc &lt;- function(query, format=&quot;xml&quot;, limit=1, details=1)
  {
  urlroot &lt;- &quot;http://open.mapquestapi.com/nominatim/v1/search?&quot;
  url &lt;- paste(urlroot, &quot;format=&quot;, format, &quot;&amp;q=&quot;, query, &quot;&amp;addressdetails=&quot;, details, &quot;&amp;limit=&quot;, limit, sep=&quot;&quot;)

  xmllocinfo &lt;- getURL(url)
  xmllocinfo &lt;- htmlParse(xmllocinfo)
  xmllocinfo &lt;- xmlRoot(xmllocinfo)
   
  verif &lt;- function(express) tryCatch(express, error=function(e) NULL)
  locinfo &lt;- list()
  locinfo$lat &lt;- verif(as.numeric(unlist(xpathApply(xmllocinfo, &quot;/html/body/searchresults/place/@lat&quot;))))
  locinfo$lon &lt;- verif(as.numeric(unlist(xpathApply(xmllocinfo, &quot;/html/body/searchresults/place/@lon&quot;))))
  locinfo$city &lt;- verif(as.character(xpathApply(xmllocinfo, &quot;/html/body/searchresults/place/city&quot;, xmlValue)))
  locinfo$county &lt;- verif(as.character(xpathApply(xmllocinfo, &quot;/html/body/searchresults/place/county&quot;, xmlValue)))
  locinfo$state &lt;- verif(as.character(xpathApply(xmllocinfo, &quot;/html/body/searchresults/place/state&quot;, xmlValue)))
  locinfo$country &lt;- verif(as.character(xpathApply(xmllocinfo, &quot;/html/body/searchresults/place/country&quot;, xmlValue)))
  locinfo$countrycode &lt;- verif(as.character(xpathApply(xmllocinfo, &quot;/html/body/searchresults/place/country_code&quot;, xmlValue)))
  return(locinfo)
  }


mapq.dist &lt;- function(Alat, Alon, Blat, Blon, format=&quot;xml&quot;, unit=&quot;k&quot;)
  {
  urlroot &lt;- &quot;http://open.mapquestapi.com/directions/v0/route?&quot;
  url &lt;- paste(urlroot, &quot;outFormat=&quot;, format, &quot;&amp;unit=&quot;, unit, &quot;&amp;from=&quot;, Alat, &quot;,&quot;, Alon, &quot;&amp;to=&quot;, Blat, &quot;,&quot;, Blon, sep=&quot;&quot;)
  
  xmldistinfo &lt;- getURL(url)
  xmldistinfo &lt;- htmlParse(xmldistinfo)
  xmldistinfo &lt;- xmlRoot(xmldistinfo)
  
  verif &lt;- function(express) tryCatch(express, error=function(e) NULL)
  distance &lt;- verif(as.numeric(xpathApply(xmldistinfo, &quot;/html/body/response/route/distance&quot;, xmlValue)))
  return(distance)
  }

mapq.distance &lt;- function(from, to, unit=&quot;k&quot;, print=TRUE)
  {
  from.f &lt;- chartr(&quot; &quot;,&quot;+&quot;, from)
  to.f &lt;- chartr(&quot; &quot;,&quot;+&quot;, to)
  from.info &lt;- mapq.loc(from.f)
  to.info &lt;- mapq.loc(to.f)
  distance &lt;- mapq.dist(from.info$lat, from.info$lon, to.info$lat, to.info$lon, unit=unit)
  if(unit==&quot;k&quot;) unit.print &lt;- &quot;Km&quot;
  if(unit==&quot;m&quot;) unit.print &lt;- &quot;Miles&quot;
  if (print==TRUE){
    cat(&quot;Distance between&quot;, &quot;\n&quot;)
    cat(from, &quot;,&quot;, from.info$state, &quot;,&quot;, toupper(from.info$countrycode), &quot;and&quot;, to, &quot;,&quot;, to.info$state, &quot;,&quot;, toupper(to.info$countrycode), &quot;\n&quot;)
    cat(distance, unit.print, &quot;\n&quot;)
  } else {
    invisible(distance)
  }
  }
Facebooktwitter