Le blog francophone consacré
aux technologies Esri

Intégration ArcGIS OpenData/Vélib - 1. Intégration au niveau API


Cet article inaugure une série qui aura pour thème l'intégration de données OpenData et temps réel sur la plateforme ArcGIS.

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.

Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article:

6 comments :

Anonyme a dit…

Bonjour,

Bel article. Une mise à jour toute les minutes des 1200 stations, ca fait 1.7 millions d'updates par jour. Combien cela coute t-il en nombre de crédit ArcGIs Online ?

Fred.

Christophe Tourret a dit…

Bonsoir Fred,

Dans le cas qui nous intéresse (service d'entités ArcGIS Online), la consommation de crédit se fait sur 2 critères :
1) Stockage : ici, le stockage de la couche de 1227 stations fait 133 Ko, soit un coût annuel de 4 crédits (soit 0,8€).
2) Bande passante sortante : dans ce cas la bande passante est consommée par deux usages :
- les utilisateurs du site. Si on considère qu'une session utilisateur moyenne fait "sortir" 200 ko d'ArcGIS Online, cela correspond à 12 credits pour 10000 sessions (2,5€)
- le script de mise à jour. Celui requête toutes les stations et donc consomme 130 ko de bande passante par itération, cela correspond à une consommation de crédits de 400 crédits annuels avec une fréquence d'une mise à jour toutes les minutes. Soit un coût annuel de 80€, qui descendrait à 8 € si on choisissait une fréquence de 10 mn par exemple...

Les mises à jours en tant que telles, comme toutes les transactions ne "coûtent" pas de crédit.

Une stratégie plus économe en crédits serait de ne pas mettre à jour les stations existantes, mais de supprimer l'état précédent puis d'ajouter de nouvelles stations. Il n'y aurait plus de coût de bande passante ié aux transactions, uniquement 0,8€ annuels de stockage et 2,5€ pour 10000 sessions utilisateur (et en plus on gérerait l'ajout de nouvelles stations dynamiquement...) je vais revoir ce script !

Cartographie a dit…

Bravo pour cet article très complet et pour le complément d'information fourni en commentaire. Je pense que je ne serais pas le seul à m'en servir pour mes prochains développements et pour estimer les coûts en crédit Arcgis online

Unknown a dit…

Bonjour,
Je vous remercie pour cet article, je tiens tout d'abord à préciser que je suis vraiment une débutante dans le arcgis online, et je m'intéresse vivement à l'API Rest, cependant je n'arrive pas à trouver le meilleur moyen pour l'utiliser, j'utilise le notebook jupyter, est ce que vous pensez qu'il peut être efficace pour lire le code que vous avez développé ? sinon avez vous d'autres alternatives à me conseiller?
Bien à vous

Gaëtan Lavenu a dit…

Bonjour,

Cet article est déjà très ancien. Connecter ArcGIS à des API JSON ou GeoJSON peut s'effectuer de différentes manières, sans obligatoirement écrire de code Python. Tout dépend de la manière dont vous souhaitez intégrer ses données (connexion dynamique au flux JSON, copie des données dans une base SIG, ...). Jupyter Notebook est tout cas une excellente interface de scripting pour Python, et pour cette raison elle a été intégrée en standard dans ArcGIS Pro, ArcGIS Enterprise et ArcGIS Online.

Unknown a dit…

Bonjour,
Je suis désolée de vous embêter avec toutes ces questions, je suis étudiante et j'ai comme objectif de stage de planifier une mise à jour automatique des hauteurs et débits des eaux sauf que je ne peux pas la planifier directement sur le compte entreprise (ayant juste le mapviewer classique) il n'a pas cette option contrairement au compte developper, donc je cherche une autre façon d'aboutir à ça.
Je vous remercie par avance pour toute réponse ou suggestion.
bonne journée :)