QNTNKSR

OpenData & Mobilité – démonstration

Posted in développement, opendata, script by Quentin Kaiser on 4 janvier 2011

Suite au billet concernant l’ouverture des données dans le secteur de la mobilité et en particulier de la TEC, j’ai réalisé quelques recherches dans le but de faire une démo.

Le tiroir du fond

Lors de mes recherches sur l’infrastructure qu’utilise la TEC pour ces données je suis tombé sur le site DAMIER et en particulier sur ce document pdf listant tous les arrêts en province de Luxembourg.

Extraction des données

La première chose à faire est obtenir des données lisibles et parsables. J’ai donc utilisé pdftohtml qui permet de transformer un document pdf en document html navigable par page.
La commande est très simple :

pdftohtml votredocument.pdf -enc Latin1

Le Latin1 vous permet d’utiliser des caractères accentués.

J’obtiens donc un document html contenant le contenu du tableau mais en ayant un élément par ligne comme ceci :

Numéro
Localité
Rue
Arrêt
Lignes

Ni une ni deux j’écris un script php me permettant de transformer le tout en fichier csv comme ceci :

Numéro; Localité; Rue; Arrêt; Lignes

Heureux du résultat après plusieurs modifications, il faut maintenant réaliser quelque chose de visuel mais quoi ? L’idée la plus utile et la plus visuelle est de réaliser une carte de ces arrêts mais pour cela il faut les coordonnées de ceux-ci.

Geocoding

Il existe plusieurs outils de geocoding : GMap en premier, Nominatim d’OSM et une multitude d’outils bidons traînant sur le web. L’accès à ces outils est limité (pas plus de 2500 requêtes par jour et moins de x requêtes par secondes pour GMap), il faut donc trouver une parade pour obtenir les coordonnées. Je repart donc sur du php avec obtention des coordonnées en json via le serveur GMap mais pause d’une seconde après chaque obtention via la fonction sleep.  Je permet également à mon script de s’exécuter assez longtemps pour obtenir toutes les coordonnées via la directive set_time_limit.

Je vais donc prendre un café le temps de l’exécution…

Et un 4ème…

J’obtiens finalement ~60% des coordonnées, certaines adresses étant imprécises ou tout simplement introuvables (« XHOUT-SI-PLOUT Centre » – private belgian joke inside -).

Marker and Geopoint

J’ai donc à ma disposition les références des arrêts, leur adresse, leur localité, les lignes qui passe à ses arrêts et leurs coordonnées géographique. Let’s practice !
Voici le code que j’ai utilisé pour ajouter les markers à la carte depuis les données du fichier csv généré :

Le résultat en image :

Carte arrêts TEC opendata

Que c'est beeeaaau

Il n’y a même pas un tiers des arrêts indiqués (pour des raisons de navigation, sinon c’est très lourd). On peut remarquer quelques erreurs au niveau de la géolocalisation, assez logique étant donné la précision des adresses. On peut presque deviner la frontière de notre belle province😀

Note : j’aurais très bien pu utiliser OSM, Bing ou Yahoo map mais comme j’ai de l’expérience avec GMap j’ai foncé.
Fichiers : je les mets en ligne aussi vite que possible, promis !

Voilà comment, en moins de 2h et à partir d’un vulgaire fichier pdf, on peut obtenir une carte interactive des arrêts de bus.

Les autres mises en valeurs possibles serait d’ajouter des check-box pour afficher/masquer les arrêts en fonction des lignes, tracer les lignes avec des Polyline ou encore ajouter des markers de couleurs différentes en fonctions des lignes. Et augmenter la précision des données de géolocalisation bien entendu😉

3 Réponses

Subscribe to comments with RSS.

  1. Denis said, on 5 janvier 2011 at 11:13

    Vu que tu sais quelles lignes passent où, tu devrais être en mesure de tracer les itinéraires de chaque lignes (en prenant comme principe que le prochain arrêt est le plus proche).

    • Quentin Kaiser said, on 5 janvier 2011 at 10:19

      J’y pensais justement, j’avais peur que cela donne des données erronnées mais comme les arrêts sont assez proches ça peut le faire.

      Je vais construire une bd avec ce que j’ai actuellement mais d’abord : exams !😉

      • Denis said, on 5 janvier 2011 at 10:33

        Oui, ca donnera des données erronées vu qu’il te manque des arrêts, mais au moins t’auras déjà un algorithme si tu reçois (un jour peut-être) les données officielles.


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :