Wat is een Stream Service? <\/STRONG><\/P> <\/P>Naast de bekende en al lang bestaande Map- & Feature Services is er sinds een paar jaar (eerste release met 10.3.) een nieuw servicetype in de ArcGIS wereld, dat primair is ontwikkeld voor de efficiënte visualisatie van realtimegegevens - de Stream Service.<\/P> <\/P>De Stream Service is gekoppeld aan de ArcGIS GeoEvent Server, Esri's softwareoplossing om realtime datastromen te integreren, realtime eventgebaseerde analyses uit te voeren op binnenkomende gegevens en deze vervolgens te distribueren, oftewel binnen en buiten het ArcGIS platform bruikbaar te maken. Daarbij speelt natuurlijk de eis om de gegevens realtime niet alleen te verwerken maar ook te visualiseren een belangrijke rol. Vanwege deze eis heeft het ontwikkelingsteam rond de GeoEvent Server nagedacht over hoe de latentie bij de visualisatie van dynamische gegevens kan worden verminderd om niet alleen te tonen WAAR iets gebeurt maar ook direct WANNEER het gebeurt!<\/P> <\/P>Een voorbeeld van een Stream Service die de actuele positie van het International Space Station via een API opvraagt en visualiseert, kan hier<\/A> <\/STRONG>bekeken worden.<\/P> <\/P> <\/A><\/P> <\/P>Een nieuw concept voor de visualisatie van dynamische gegevens!<\/STRONG><\/P> <\/P>Traditioneel worden de gegevens die ten grondslag liggen aan een dynamische Feature Service opgeslagen in een Enterprise Geodatabase (EGDB) of een andere vorm van gegevensopslag zoals bijvoorbeeld de Spatiotemporal Big Data Store (SBDS*). Dit betekent dat bij de visualisatie de client, bijvoorbeeld onze webapplicatie, op regelmatige intervallen de actuele status uit de gegevensopslag moet opvragen om de visualisatie van de features op de kaart te actualiseren. In dit verband spreekt men van polling wat neerkomt op een update-interval, wat dus een vertraging veroorzaakt in de verwerking van realtime datastromen nadat de GeoEvent Server deze heeft verwerkt en in de database heeft geschreven.<\/P> <\/P><\/P><\/P>Om deze latentie te minimaliseren, bouwt de Stream Server voort op een concept waarbij de gegevens niet eerst in een database worden geschreven maar direct naar de client worden gepusht. Hiervoor worden WebSocket-verbindingen direct tussen de Stream Server en de Stream Layer in de client opgezet, waarover de features zonder enige vertraging worden overgedragen en gevisualiseerd!<\/SPAN><\/P> <\/P> <\/P>Persistente opslag van gegevens<\/STRONG><\/P> <\/P>Misschien rijst nu de vraag wat er gebeurt als een client zich initieel met de Stream Server verbindt en er geen bestaande gegevens zijn opgeslagen? Dit zou betekenen dat de client bestaande features pas kan visualiseren wanneer een nieuw event, dus statusupdate voor dit feature door de GeoEvent Server is verwerkt en doorgestuurd naar de Stream Server. Dit is natuurlijk geen ideaal scenario, vooral als niet alle features op korte regelmatige intervallen worden bijgewerkt en daardoor mogelijk voor langere tijd helemaal niet in de applicatie zouden verschijnen.<\/P> <\/P>Daarom is er voor de Stream Server het concept van een "Store Latest" Feature Service, die aanvullend op de Stream Service gepubliceerd kan worden en waar, zoals de naam al doet vermoeden, parallel aan het streamen ook steeds de meest actuele status van respectievelijke features wordt opgeslagen. Wanneer men deze optie kiest, worden deze informatie via de beschrijving van de Stream Service beschikbaar gesteld over de "Store Latest" Feature Service. Zo kunnen clients op basis van deze informatie bij het initiële verbinden met de Stream Server parallel een query uitvoeren voor actuele status van features uit die Feature Service en deze op kaart visualiseren. Daarna neemt weer de Stream Layer het over en visualiseert nieuwe events onmiddellijk realtime!<\/P> <\/P>Joinen van geometrieën en statische attributen in client<\/STRONG><\/P> <\/P>Natuurlijk moeten idealiter alleen dynamische informatie van een feature constant worden bijgewerkt, in het geval van bijvoorbeeld statische sensoren in een sensornetwerk zijn dit meestal steeds bijgewerkte meetwaarden, informatie zoals geometrie of andere sensoreigenschappen zijn echter voornamelijk statisch. Daarom is er ook voor deze gebruikssituaties een concept geïntegreerd in de Stream Server dat het mogelijk maakt om een Feature Service met "Related Features" te refereren. Met deze informatie, die ook aan clients via beschrijving van Stream Server wordt verstrekt, kunnen statische informatie direct in client aan binnenkomende events worden toegevoegd via een unieke ID (Track ID).<\/P> <\/P>Mogelijkheden voor ontwikkelaars<\/STRONG><\/P> <\/P>Stream Server respectievelijk Stream Layer in applicaties bieden ook interessante mogelijkheden voor ontwikkelaars om deze technologie verder te benutten. Sinds het oorspronkelijke release van deze technologie in versie 10.3 is Stream Layer beschikbaar in JavaScript-gebaseerde webapplicaties via ArcGIS API for JavaScript en wordt continu geïntegreerd in andere ArcGIS componenten en API's. Een interessante mogelijkheid is hier om je te richten op "onMessage" (JS API) / "on_features" (Python API) events van Stream Layer, waarmee elk event dat in Esri JSON-formaat wordt verzonden geanalyseerd kan worden voordat het op kaart wordt gevisualiseerd.<\/P> <\/P>In de eerder genoemde ISS Demo<\/A>, gebruik ik bijvoorbeeld het "onMessage" event van een StreamService die bij het overvliegen van ISS over land of oceaan dit als GeoTag meestuurt om zo tekstweergave bij "landwissel" te actualiseren.<\/P> <\/P>Veel plezier met het verkennen en gebruiken van dit nieuwe layertype in jullie realtime applicaties! <\/P> <\/P>Tom<\/P> <\/P>*: Meer details over Spatiotemporal Big Data Store zullen volgen in één van de volgende blogposts!<\ /BODY>
<\/P>
Een nieuw concept voor de visualisatie van dynamische gegevens!<\/STRONG><\/P> <\/P>Traditioneel worden de gegevens die ten grondslag liggen aan een dynamische Feature Service opgeslagen in een Enterprise Geodatabase (EGDB) of een andere vorm van gegevensopslag zoals bijvoorbeeld de Spatiotemporal Big Data Store (SBDS*). Dit betekent dat bij de visualisatie de client, bijvoorbeeld onze webapplicatie, op regelmatige intervallen de actuele status uit de gegevensopslag moet opvragen om de visualisatie van de features op de kaart te actualiseren. In dit verband spreekt men van polling wat neerkomt op een update-interval, wat dus een vertraging veroorzaakt in de verwerking van realtime datastromen nadat de GeoEvent Server deze heeft verwerkt en in de database heeft geschreven.<\/P> <\/P><\/P><\/P>Om deze latentie te minimaliseren, bouwt de Stream Server voort op een concept waarbij de gegevens niet eerst in een database worden geschreven maar direct naar de client worden gepusht. Hiervoor worden WebSocket-verbindingen direct tussen de Stream Server en de Stream Layer in de client opgezet, waarover de features zonder enige vertraging worden overgedragen en gevisualiseerd!<\/SPAN><\/P> <\/P> <\/P>Persistente opslag van gegevens<\/STRONG><\/P> <\/P>Misschien rijst nu de vraag wat er gebeurt als een client zich initieel met de Stream Server verbindt en er geen bestaande gegevens zijn opgeslagen? Dit zou betekenen dat de client bestaande features pas kan visualiseren wanneer een nieuw event, dus statusupdate voor dit feature door de GeoEvent Server is verwerkt en doorgestuurd naar de Stream Server. Dit is natuurlijk geen ideaal scenario, vooral als niet alle features op korte regelmatige intervallen worden bijgewerkt en daardoor mogelijk voor langere tijd helemaal niet in de applicatie zouden verschijnen.<\/P> <\/P>Daarom is er voor de Stream Server het concept van een "Store Latest" Feature Service, die aanvullend op de Stream Service gepubliceerd kan worden en waar, zoals de naam al doet vermoeden, parallel aan het streamen ook steeds de meest actuele status van respectievelijke features wordt opgeslagen. Wanneer men deze optie kiest, worden deze informatie via de beschrijving van de Stream Service beschikbaar gesteld over de "Store Latest" Feature Service. Zo kunnen clients op basis van deze informatie bij het initiële verbinden met de Stream Server parallel een query uitvoeren voor actuele status van features uit die Feature Service en deze op kaart visualiseren. Daarna neemt weer de Stream Layer het over en visualiseert nieuwe events onmiddellijk realtime!<\/P> <\/P>Joinen van geometrieën en statische attributen in client<\/STRONG><\/P> <\/P>Natuurlijk moeten idealiter alleen dynamische informatie van een feature constant worden bijgewerkt, in het geval van bijvoorbeeld statische sensoren in een sensornetwerk zijn dit meestal steeds bijgewerkte meetwaarden, informatie zoals geometrie of andere sensoreigenschappen zijn echter voornamelijk statisch. Daarom is er ook voor deze gebruikssituaties een concept geïntegreerd in de Stream Server dat het mogelijk maakt om een Feature Service met "Related Features" te refereren. Met deze informatie, die ook aan clients via beschrijving van Stream Server wordt verstrekt, kunnen statische informatie direct in client aan binnenkomende events worden toegevoegd via een unieke ID (Track ID).<\/P> <\/P>Mogelijkheden voor ontwikkelaars<\/STRONG><\/P> <\/P>Stream Server respectievelijk Stream Layer in applicaties bieden ook interessante mogelijkheden voor ontwikkelaars om deze technologie verder te benutten. Sinds het oorspronkelijke release van deze technologie in versie 10.3 is Stream Layer beschikbaar in JavaScript-gebaseerde webapplicaties via ArcGIS API for JavaScript en wordt continu geïntegreerd in andere ArcGIS componenten en API's. Een interessante mogelijkheid is hier om je te richten op "onMessage" (JS API) / "on_features" (Python API) events van Stream Layer, waarmee elk event dat in Esri JSON-formaat wordt verzonden geanalyseerd kan worden voordat het op kaart wordt gevisualiseerd.<\/P> <\/P>In de eerder genoemde
Veel plezier met het verkennen en gebruiken van dit nieuwe layertype in jullie realtime applicaties! <\/P>
Tom<\/P>
*: Meer details over Spatiotemporal Big Data Store zullen volgen in één van de volgende blogposts!<\ /BODY>
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.