Qu'est-ce qu'un Stream Service ?<\/STRONG><\/P> <\/P>En plus des Map- & Feature Services connus et existants depuis longtemps, il existe depuis quelques années (première version avec 10.3.) un nouveau type de service dans le monde ArcGIS, développé principalement pour la visualisation efficace des données en temps réel - le Stream Service.<\/P> <\/P>Le Stream Service est couplé au ArcGIS GeoEvent Server, la solution logicielle d'Esri pour intégrer les flux de données en temps réel, effectuer des analyses événementielles en temps réel sur les données entrantes et les distribuer ensuite, c'est-à-dire les rendre utilisables à l'intérieur et à l'extérieur de la plateforme ArcGIS. Bien sûr, l'exigence de traiter les données en temps réel mais aussi de les visualiser joue un rôle important. En raison de cette exigence, l'équipe de développement autour du GeoEvent Server a réfléchi à la manière de réduire la latence lors de la visualisation des données dynamiques afin de ne pas seulement montrer OÙ quelque chose se passe mais aussi QUAND cela se passe !<\/P> <\/P>Un exemple d'un Stream Service qui interroge et visualise la position actuelle de la International Space Station via une API peut être consulté ici<\/A> <\/STRONG>.<\/P> <\/P> <\/A><\/P> <\/P>Un nouveau concept pour la visualisation des données dynamiques !<\/STRONG><\/P> <\/P>Classiquement, les données sous-jacentes à un dynamic Feature Services sont stockées dans une Enterprise Geodatabase (EGDB) ou une autre forme de stockage de données comme par exemple le Spatiotemporal Big Data Store (SBDS*). Cela signifie que lors de la visualisation, le client, par exemple notre application Web, doit interroger régulièrement l'état actuel du stockage des données pour mettre à jour la visualisation des features sur la carte. Dans ce contexte, on parle de polling qui correspond à un intervalle de mise à jour, ce qui entraîne un délai dans le traitement des flux de données en temps réel après que le GeoEvent Server les ait traités et écrits dans la base de données.<\/P> <\/P><\/P><\/P>Pour minimiser cette latence, le Stream Server repose sur un concept où les données ne sont pas d'abord écrites dans une base de données mais directement poussées vers le client. Pour cela, des connexions WebSocket sont établies directement entre le Stream Server et le Stream Layer dans le client, via lesquelles les features sont transmises et visualisées sans aucun délai !<\/SPAN><\/P> <\/P> <\/P>Persistance des données<\/STRONG><\/P> <\/P>Peut-être vous demandez-vous ce qui se passe lorsqu'un client se connecte initialement au Stream Server et que les données existantes n'ont pas été sauvegardées ? Cela signifierait que le client ne pourrait visualiser les features existants que lorsqu'un nouvel événement, c'est-à-dire une mise à jour d'état pour ce feature, est traité par le GeoEvent Server et transmis au Stream Server. Ce n'est bien sûr pas un scénario idéal, surtout si tous les features ne sont pas mis à jour à intervalles courts et réguliers et pourraient donc ne pas apparaître dans l'application pendant une longue période.<\/P> <\/P>C'est pourquoi il existe pour les Stream Servers le concept d'un "Store Latest" Feature Service, qui peut être publié parallèlement au Stream Service et où, comme son nom l'indique déjà, les états les plus récents des features respectifs sont stockés en parallèle. Si cette option est choisie, les informations concernant le "Store Latest" Feature Service sont enregistrées dans la description du Stream Service. Ainsi, lors de la connexion initiale au Stream Server, les clients peuvent effectuer parallèlement une requête pour obtenir les états actuels des features depuis le Feature Service et les visualiser sur la carte. Ensuite, le Stream Layer prend à nouveau le relais et visualise immédiatement en temps réel les nouveaux événements !<\/P> <\/P>Jointure des géométries et attributs statiques dans le client<\/STRONG><\/P> <\/P>Idéalement, seules les informations dynamiques d'un feature doivent être mises à jour constamment ; dans le cas par exemple de capteurs statiques dans un réseau de capteurs, il s'agit généralement de valeurs mesurées toujours actualisées ; cependant, des informations telles que la géométrie ou d'autres propriétés du capteur sont majoritairement statiques. C'est pourquoi un concept a également été intégré dans le Stream Server pour ces cas d'utilisation, permettant de référencer un Feature Service avec des "Related Features". Avec ces informations, qui sont également mises à disposition du client via la description du Stream Server, des informations statiques peuvent être ajoutées directement dans le client à l'événement entrant via un ID unique (Track ID).<\/P> <\/P>Possibilités pour les développeurs<\/STRONG><\/P> <\/P>Le Stream Server ainsi que le Stream Layer dans les applications offrent également aux développeurs des possibilités intéressantes pour exploiter davantage cette technologie. Depuis la version initiale de cette technologie en version 10.3., le Stream Layer est utilisable dans des applications Web basées sur JavaScript via l'ArcGIS API for JavaScript et est continuellement intégré aux autres composants et API ArcGIS. Une possibilité intéressante est ici d'utiliser l'événement "onMessage" (JS API) / "on_features" (Python API) du Stream Layer, qui permet d'analyser chaque événement envoyé au format Esri JSON avant sa visualisation sur la carte.<\/P> <\/P>Dans la démonstration ISS<\/A> déjà mentionnée, j'utilise par exemple l'événement "onMessage" d'un StreamService qui envoie lors du survol de l'ISS au-dessus d'un pays ou d'un océan ce dernier comme GeoTag afin de mettre à jour l'affichage texte lors du "changement de territoire".<\/P> <\/P>Amusez-vous bien à explorer et utiliser ce nouveau type de couche dans vos applications en temps réel ! <\/P> <\/P>Tom<\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/>
<\/P>
Un nouveau concept pour la visualisation des données dynamiques !<\/STRONG><\/P> <\/P>Classiquement, les données sous-jacentes à un dynamic Feature Services sont stockées dans une Enterprise Geodatabase (EGDB) ou une autre forme de stockage de données comme par exemple le Spatiotemporal Big Data Store (SBDS*). Cela signifie que lors de la visualisation, le client, par exemple notre application Web, doit interroger régulièrement l'état actuel du stockage des données pour mettre à jour la visualisation des features sur la carte. Dans ce contexte, on parle de polling qui correspond à un intervalle de mise à jour, ce qui entraîne un délai dans le traitement des flux de données en temps réel après que le GeoEvent Server les ait traités et écrits dans la base de données.<\/P> <\/P><\/P><\/P>Pour minimiser cette latence, le Stream Server repose sur un concept où les données ne sont pas d'abord écrites dans une base de données mais directement poussées vers le client. Pour cela, des connexions WebSocket sont établies directement entre le Stream Server et le Stream Layer dans le client, via lesquelles les features sont transmises et visualisées sans aucun délai !<\/SPAN><\/P> <\/P> <\/P>Persistance des données<\/STRONG><\/P> <\/P>Peut-être vous demandez-vous ce qui se passe lorsqu'un client se connecte initialement au Stream Server et que les données existantes n'ont pas été sauvegardées ? Cela signifierait que le client ne pourrait visualiser les features existants que lorsqu'un nouvel événement, c'est-à-dire une mise à jour d'état pour ce feature, est traité par le GeoEvent Server et transmis au Stream Server. Ce n'est bien sûr pas un scénario idéal, surtout si tous les features ne sont pas mis à jour à intervalles courts et réguliers et pourraient donc ne pas apparaître dans l'application pendant une longue période.<\/P> <\/P>C'est pourquoi il existe pour les Stream Servers le concept d'un "Store Latest" Feature Service, qui peut être publié parallèlement au Stream Service et où, comme son nom l'indique déjà, les états les plus récents des features respectifs sont stockés en parallèle. Si cette option est choisie, les informations concernant le "Store Latest" Feature Service sont enregistrées dans la description du Stream Service. Ainsi, lors de la connexion initiale au Stream Server, les clients peuvent effectuer parallèlement une requête pour obtenir les états actuels des features depuis le Feature Service et les visualiser sur la carte. Ensuite, le Stream Layer prend à nouveau le relais et visualise immédiatement en temps réel les nouveaux événements !<\/P> <\/P>Jointure des géométries et attributs statiques dans le client<\/STRONG><\/P> <\/P>Idéalement, seules les informations dynamiques d'un feature doivent être mises à jour constamment ; dans le cas par exemple de capteurs statiques dans un réseau de capteurs, il s'agit généralement de valeurs mesurées toujours actualisées ; cependant, des informations telles que la géométrie ou d'autres propriétés du capteur sont majoritairement statiques. C'est pourquoi un concept a également été intégré dans le Stream Server pour ces cas d'utilisation, permettant de référencer un Feature Service avec des "Related Features". Avec ces informations, qui sont également mises à disposition du client via la description du Stream Server, des informations statiques peuvent être ajoutées directement dans le client à l'événement entrant via un ID unique (Track ID).<\/P> <\/P>Possibilités pour les développeurs<\/STRONG><\/P> <\/P>Le Stream Server ainsi que le Stream Layer dans les applications offrent également aux développeurs des possibilités intéressantes pour exploiter davantage cette technologie. Depuis la version initiale de cette technologie en version 10.3., le Stream Layer est utilisable dans des applications Web basées sur JavaScript via l'ArcGIS API for JavaScript et est continuellement intégré aux autres composants et API ArcGIS. Une possibilité intéressante est ici d'utiliser l'événement "onMessage" (JS API) / "on_features" (Python API) du Stream Layer, qui permet d'analyser chaque événement envoyé au format Esri JSON avant sa visualisation sur la carte.<\/P> <\/P>Dans la
Amusez-vous bien à explorer et utiliser ce nouveau type de couche dans vos applications en temps réel ! <\/P>
Tom<\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/>
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.