ArcGIS Velocity est une plate-forme en ligne adossée à ArcGIS Online permettant de collecter des flux de données temps réel et de les analyser à la volée. Cette plate-forme IoT très complète permet aussi la diffusion en temps réel ou le stockage vers d'autres formats. C’est également une plate-forme 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 en temps réel des bus de la métropole d'Angers.
Pas-à-Pas réalisé par Gaëtan Lavenu (Esri France), en partenariat avec le blog arcOrama.fr
Pas-à-Pas réalisé par Gaëtan Lavenu (Esri France), en partenariat avec le blog arcOrama.fr
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 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- À partir de la page d'accueil d'ArcGIS Velocity, vous pouvez configurer trois types d'éléments : des flux temps réel, des analyses temps réels et des analyses Big Data. Les flux correspondent aux messages temps réel (IoT) entrant sur la plate-forme 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 retrouvez les options les plus utilisées comme les protocoles HTTP, Web Socket, Kafka, RSS, RabbitMQ, MQTT, etc. À noter 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 », vous pouvez 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 du jeu de donnée (les informations). 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
Cliquez ensuite sur le bouton « Suivant » pour poursuivre le paramétrage du flux.
https://data.angers.fr/api/records/1.0/search/?dataset=bus-tram-position-tr&q=&facet=novh
Cliquez ensuite sur le bouton « Suivant » pour poursuivre le paramétrage du flux.
6- Cette étape permet de configurer la structure des données reçues. Indiquez le format des données (s'il n'est pas reconnu automatiquement), ici le format « JSON » (a.). Spécifiez 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, cliquez sur le bouton « Dériver la structure » (d.) pour afficher l'ensemble des champs disponibles dans le message. Vous pourrez 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, choisissez 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 devez indiquer le champ contenant d'identifiant unique de chaque objet (chaque bus), ici le champ "fields_idvh". Il 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 limites 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, donnez un nom et une description à votre flux. Ces dernières informations seront utilisées pour créer l'élément correspondant (la couche de flux) dans vos contenus sur le portail ArcGIS Online. Enfin, cliquez sur le bouton « Terminer » pour finaliser la configuration de votre flux.
11- Votre flux est créé et démarré. Vous voyez sa description apparaître dans l'interface d'ArcGIS Velocity. Une interface cartographique vous est proposée 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. À noter que seul le propriétaire du flux peut démarrer ses flux. Un bouton « Journaux » (b.) permettra de visualiser les logs relatifs aux messages reçus. On notera 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.