Le blog francophone consacré
aux technologies Esri

Pas à Pas - Configurer un flux de données temps-réel avec ArcGIS Velocity

Depuis les premiers numéros du magazine SIGMAG, arcOrama collabore chaque trimestre à la rédaction d'un article didactique focalisé sur une fonctionnalité ou une application clé du système ArcGIS. Je reprends ci-dessous l'article publié dans le numéro 29 paru en juin 2021, il présente en quelques étapes comment ajouter et paramétrer un flux de données temps-réel avec ArcGIS Velocity.    




ArcGIS Velocity est une plateforme en ligne adossée à ArcGIS Online qui vous permet de collecter des flux de données temps-réel et de les analyser à la volée. Cette plateforme IoT très complète permet également la diffusion en temps-réel ou le stockage vers d'autres formats. ArcGIS Velocity est également une plateforme de stockage et d'analyse des données Big Data archivées à partir de ces flux temps-réel. Dans ce pas à pas, nous allons focaliser sur un premier usage simple de collecte de données. Vous apprendrez comment, en quelques clics, configurer et cartographier un flux de données sur les positions temps-réel des bus de la métropole d'Angers. 

1. La première étape consiste tout d'abord à se connecter à l'interface d'ArcGIS Velocity avec un compte disposant d'un rôle administrateur ou de privilèges permettant de créer des flux Velocity ("administrateur" par exemple). L'interface de Velocity est accessible à partir de l'url http://velocity.arcgis.com ou depuis le lanceur d'applications de votre portail ArcGIS Online. ArcGIS Velocity étant intégré à votre portail ArcGIS Online, elle s'appuie entièrement sur la gestion des utilisateurs et des groupes de votre portail.


2. A partir de la page d'accueil d'ArcGIS Velocity, vous pouvez configurer trois types d'élément :
- des Flux temps-réel,
- des analyses temps-réels,
- des analyses big-data.

Les flux correspondent aux messages temps-réel (IoT) entrant sur la plateforme ArcGIS Velocity. Ils peuvent provenir de sources très variées, dans des formats de données et des protocoles de communication divers. Nous allons donc créer notre premier flux en cliquant sur le bouton "Créer un flux".


3. Dans notre cas, il s'agit de nous connecter au serveur Open Data de la métropole d'Angers qui diffuse la position des bus à partir d'une API que l'on peut interroger via des requêtes HTTP et qui revoit les informations relatives aux bus en tant que chaîne de caractère au format JSON. Nous allons donc créer un flux de type "Web et messagerie" en cliquant sur le bouton "Tout afficher" pour pouvoir affiner les options.


4. Il existe plusieurs méthodes et protocoles pour 'interroger des flux d'information via des services web ou des services de messagerie. Vous retrouverez les options les plus utilisées comme les protocoles HTTP, Web Socket, Kafka, RSS, RabbitMQ, MQTT,… A noter également que vous pourrez ici simuler un flux en lisant des informations dans un fichier CSV (très pratique pour réaliser des tests). Dans notre cas, nous devons utiliser le protocole HTTP avec des requêtes de type GET (Interrogation HTTP). 


5. Après avoir cliqué sur le bouton "Suivant", on vous proposera de définir l'URL de la requête permettant l'interrogation HTTP des données du flux. Celle-ci est fournie et documentée par le fournisseur de données, en particulier ici les paramètres permettant de définir le jeu de données souhaité (la position des bus) et la facette (les informations) du jeu de donnée souhaitée. Dans notre cas, l'URL à saisir est la suivante :  https://data.angers.fr/api/records/1.0/search/?dataset=bus-tram-position-tr&q=&facet=novh

Cliquer ensuite sur le bouton "Suivant" pour poursuivre le paramétrage du flux.


6. L'étape suivante permet de configurer la structure des données reçues. Vous indiquerez tout d'abord le format des données (s'il n'est pas reconnu automatiquement), ici le format "JSON" (a.). Vous spécifierez ensuite la racine du JSON à considérer pour chaque message (chaque bus), ici la balise "records" (b.). Si certaines balises sont hiérarchisées (imbriquées), vous pouvez aplatir le modèle de données (c.), c'est souvent le cas pour les informations relatives aux coordonnées des positions. Enfin, vous cliquerez sur le bouton "Dériver la structure" (d.) pour afficher l'ensemble des champs disponibles dans le message. Vous pourrez alors modifier leur type et décider de ceux que vous conservez ou pas. Vous noterez que des exemples de valeur permettent de valider la bonne lecture des informations.
 

7. L'étape suivante consiste à définir (le cas échéant) les dimensions spatiales et temporelles des messages. Pour la localisation, vous choisirez l'option qui correspond à la manière dont la localisation des données est stockée dans les messages de votre flux. Ici, nous disposons tout simplement de 2 champs "fields_x" et "fields_y" avec des coordonnées exprimées dans le système de coordonnées "Lambert 2 étendu". Les options sont donc celles figurant sur la copie d'écran.


8. Pour l'horodatage des données, les options à définir sont également liées à la manière et au format de stockage des dates/heures dans votre flux. Ici, les positions ont un horodatage stocké dans un champ "record_timestamp" de type "Chaîne de caractères" selon un format que l'on précise à l'aide de la chaine suivante : yyyy-MM-dd'T'HH:mm:ss.SSS'Z' (l'aide en ligne vous aidera à définir votre propre format). Pour terminer, vous devrez également indiquer le champ contenant d'identifiant unique de chaque objet (chaque bus), ici le champ "fields_idvh". Cet identifiant est essentiel pour rattacher chaque message à l'objet correspondant et mettre à jour les informations le concernant en temps-réel dans la couche de flux ArcGIS résultante. Les options sont donc celles figurant sur la copie d'écran.


9. L'étape suivante consiste à définir à quelle fréquence le service web doit être interrogé ou, autrement dit, à quelle fréquence les données seront actualisées dans la couche de flux ArcGIS résultante. Dans notre cas, nous souhaitons actualiser les données toutes les 10 secondes sans limite dans le temps. Ainsi dès que le flux sera démarré, l'API Open Data sera requêtée toutes les 10 secondes et les informations de chaque bus seront actualisées. 


10. Pour terminer, vous donnerez un nom et une description à votre flux. Ces derniers seront utilisés pour créer l'élément correspondant (la couche de flux) dans vos contenus sur le portail ArcGIS Online. Vous cliquerez sur le bouton "Terminer" pour finaliser la configuration de votre flux.


11. Votre flux est maintenant créé et démarré, vous voyez sa description apparaître dans l'interface d'ArcGIS Velocity. Velocity vous propose une interface cartographique pour suivre la localisation des informations remontées via le flux.

Un bouton "Démarrer/Arrêter" (a.) vous permet de stopper ou de redémarrer le flux selon vos besoins. A noter que seul le propriétaire du flux peut démarrer ses flux. Un bouton "Journaux" (b.) vous permettra de visualiser les logs relatifs aux messages reçus.  On notera également un bouton "Métriques" (c.) pour suivre et analyser la volumétrie des données de ce flux. Enfin, depuis cette page vous pourrez créer une nouvelle carte web pour exploiter la nouvelle couche de flux dans différentes apps ArcGIS. Cliquez sur le bouton "Ouvrir dans Map Viewer".


12. La visionneuse de carte classique (Map Viewer Classic) s'ouvre alors pour vous permettre de configurer les options de rendu de votre couche de flux et ajouter potentiellement d'autres couches SIG dans la carte web. Dans les options de symbologie de la couche, vous pourrez par exemple demander à voir les positions précédentes de chaque bus ou encore la trace correspondante. Dans notre cas, nous avons également utilisé des étiquettes basées sur le nom de la ligne de bus récupéré dans les champs du flux temps-réel. 



Partager cet article:

Rejoindre la discussion

    Les commentaires à propos de cet article: