Intégration ArcGIS OpenData/Vélib - 1. Intégration au niveau API
Pour ce faire, j'ai choisi d'utiliser les données du réseau Vélib, publiées par JC Decaux en Open Data depuis 2 semaines sur le site developer.jcdecaux.com.
Cet article présentera une stratégie pour intégrer le flux de données temps réel de capacité des stations Vélib en vélos et en emplacements libres sur ArcGIS Online à des fins de cartographie temps réel des disponibilités.
L'intégration est réalisée avec un script Python, environnement tout à fait adapté à l'input (REST/Json) et à l'output (REST/Json) du process.
Le script Python (velib_arcgis_online.py) est disponible sur le tout nouveau site Github Esri France, dans le repo arcOrama-Velib. Vous y retrouverez aussi de quoi mettre en place les données cartographiques des stations Vélib, qui seront ensuites mises à jours par le script Python (cf. le README du repo).
Stratégie d'implémentation :
- Récupérer l'état courant des stations Velib sur l'API JCDecaux. celle se présentent sous la forme d'un flux Json du type :
Les données en jaunes sont celles qui nous intérressent pour une mise à jour en temps réel dans la base cartographique. Last_update correspond à la date/heure de la mise à jour en nb de millisecondes depuis "Epoch" (01/01/1970 à 00:00:00,000). Ce mode de gestion de la date est parfaitement adapté à une utilisation dans un contexte Json/JavaScript.
- Se connecter à ArcGIS Online via le processus d'authentification à base de token pour accéder au service d'entités des stations. Celui-ci est public, mais éditable uniquement par un utilisateur authentifié particulier (en général le propriétaire des données au sens ArcGIS Online).
- Récupérer via l'API REST ArcGIS les données des stations dans leur état actuel sur ArcGIS Online
- Mettre à jour ces données dans le contexte du script Python avec les dernières infos récupérées de l'API JC Decaux.
- Effectuer la mise en à jour en une fois sur ArcGIS Online avec une requête Post HTTP sur l'API Rest ArcGIS.
Commentaires du script Python velib_arcgis_online.py :
Ces modules permettent :
- requests : d'emettre des requêtes HTTP dans le script Python
- Json : d'encoder et décoder de données vers/de Json
Récupération des données temps réel à partir de l'API JC Decaux. Si vous implémentez ce script, vous devrez remplacer les "xxxxx" par votre API Key JC Decaux.
Ce bloc de code permet de récupérer le jeton (token) qui vous identifie sur la plateforme ArcGIS Online lorsque vous accéderez aux données à mettre à jour. Pour utiliser ce code dans votre contexte, substituez par votre nom d'utilisateur ArcGIS Online et son mot de passe...
Ce code permet l'interrogation du service ArcGIS Online des stations pour récupérer, à travers un flux Json, une liste Python des stations et de leurs caractéristiques ("features"). Pour l'implémenter vous même, vous devrez remplacer les "xxxxx" de l'URL du service par votre propre URL.
Ce bloc de code est la boucle principale : pour chaque station, on recherche ses données mises à jour, on vérifie que ces données ont bien évolué depuis la dernière mise à jour, et si c'est le cas, on empile les données modifiées dans une nouvelle liste Python.
Enfin, l'étape finale du script envoie une requête HTTP Post sur l'URL de mise à jour du service ArcGIS Online avec la version Json de la liste des stations mises à jour précédemment.
Ce script peut facilement être exécuté régulièrement par un planificateur de tâches. Il s'exécute en une dizaine de secondes et dans notre cas, nous l'avons planifié pour une exécution toutes les minutes.
Vous pouvez consulter les données à l'aide de l'application Web ArcGIS Online suivante dans laquelle vous pouvez facilement rechercher une station par son nom et obtenir les infos de disponibilité en cliquant sur la station.
Cet exemple montre combien l'intégration de données du Web (Json) est simple dans ArcGIS Online, notamment grâce à l'API Rest ArcGIS, candidate actuellement à la normalisation coté OGC.
Dans les prochains jours, nous poursuivrons la série en regardant comme ces données, désormais (pseudo) temps réel sur ArcGIS Online, peuvent s'intégrer dans un tableau de bord dynamique de l'offre Vélib.