Co je Stream Service? <\/STRONG><\/P> <\/P>Kromě známých a již dlouho existujících Map- & Feature Services existuje od několika let (první vydání s 10.3.) nový typ služby ve světě ArcGIS, který byl primárně vyvinut pro efektivní vizualizaci dat v reálném čase - Stream Service.<\/P> <\/P>Stream Service je propojen s ArcGIS GeoEvent Serverem, softwarovým řešením Esri pro integraci toků dat v reálném čase, provádění eventově založených analýz na přicházejících datech v reálném čase a jejich následné distribuci, tedy využití uvnitř i mimo platformu ArcGIS. Při tom samozřejmě hraje důležitou roli požadavek nejen data v reálném čase zpracovávat, ale také vizualizovat. Na základě tohoto požadavku tým vývojářů kolem GeoEvent Serveru přemýšlel, jak snížit latenci při vizualizaci dynamických dat, aby bylo možné ukázat nejen KDE se něco děje, ale také PŘÍMO KDY se to děje!<\/P> <\/P>Příklad Stream Service, který dotazuje a vizualizuje aktuální pozici International Space Station z API, lze zhlédnout zde<\/A> <\/STRONG>.<\/P> <\/P> <\/A><\/P> <\/P>Nový koncept pro vizualizaci dynamických dat!<\/STRONG><\/P> <\/P>Klasicky jsou data, která stojí za dynamickými Feature Services, uložena v Enterprise Geodatabase (EGDB) nebo jiné formě úložiště dat jako například Spatiotemporal Big Data Store (SBDS*). To znamená, že při vizualizaci klient, tedy například naše webová aplikace, musí pravidelně dotazovat aktuální stav z úložiště dat, aby aktualizoval vizualizaci prvků na mapě. V tomto kontextu se mluví o Pollingu, což odpovídá intervalu aktualizace, který způsobuje zpoždění v procesu datových toků v reálném čase poté, co GeoEvent Server tato data zpracoval a zapsal do databáze.<\/P> <\/P><\/P><\/P>Pro minimalizaci této latence staví Stream Server na konceptu, kdy data nejsou nejprve zapisována do databáze, ale jsou přímo pushována ke klientovi. K tomu jsou mezi Stream Serverem a Stream Layerem na klientovi navázána WebSocket spojení, přes která jsou prvky přenášeny a vizualizovány bez jakéhokoliv zpoždění!<\/SPAN><\/P> <\/P> <\/P>Persistování dat<\/STRONG><\/P> <\/P>Možná nyní vyvstává otázka, co se stane, když se klient poprvé připojí ke Stream Serveru a existující data nebyla uložena? To by znamenalo, že klient může zobrazit existující prvky až poté, co GeoEvent Server zpracuje nové události neboli aktualizace stavu pro tento prvek a předá je Stream Serveru. To samozřejmě není ideální scénář, zvláště pokud nejsou všechny prvky aktualizovány v krátkých pravidelných intervalech a mohly by tak po delší dobu vůbec nezobrazovat v aplikaci.<\/P> <\/P>Proto existuje pro Stream Servery koncept "Store Latest" Feature Service, který může být publikován doprovodně ke Stream Service a kde jsou paralelně ukládány nejaktuálnější stavy jednotlivých prvků, jak už název napovídá. Pokud je tato volba zvolena, informace o "Store Latest" Feature Service jsou uloženy v popisu Stream Service. Klienti tak mohou na základě těchto informací při počátečním připojení ke Stream Serveru paralelně provést dotaz (Query) na aktuální stavy prvků z Feature Service a zobrazit je na mapě. Následně pak opět přebírá Stream Layer a okamžitě vizualizuje nové události v reálném čase!<\/P> <\/P>Spojení geometrií a statických atributů na klientovi<\/STRONG><\/P> <\/P>Samozřejmě by ideálně měly být neustále aktualizovány pouze dynamické informace prvku, například u statických senzorů v senzorové síti jde obvykle o stále se aktualizující měřené hodnoty, zatímco informace jako geometrie nebo další vlastnosti senzoru jsou převážně statické. Proto byl do Stream Serveru integrován koncept umožňující referencovat Feature Service s "Related Features" pro tyto případy použití. S těmito informacemi, které jsou klientovi rovněž poskytnuty přes popis Stream Serveru, mohou být statické informace přímo na klientovi přidány k příchozí události pomocí jednoznačného ID (Track ID).<\/P> <\/P>Možnosti pro vývojáře<\/STRONG><\/P> <\/P>Stream Server resp. Stream Layer v aplikacích nabízí také zajímavé možnosti pro vývojáře k dalšímu využití této technologie. Od původního vydání technologie ve verzi10.3 je Stream Layer využitelný v JavaScriptových webových aplikacích přes ArcGIS API for JavaScript a je průběžně integrován do dalších komponent a API ArcGISu. Zajímavou možností je zde věnovat se "onMessage" (JS API) / "on_features" (Python API) událostem Stream Layeru, které umožňují analyzovat každou událost zaslanou ve formátu Esri JSON před jejím zobrazením na mapě.<\/P> <\/P>V již zmíněné ISS Demo<\/_A>, používám například "onMessage" událost StreamService, která při přeletu ISS nad zemí nebo oceánem posílá tento GeoTag k aktualizaci textového zobrazení při "změně zeměpisné oblasti".<\/_p>
<\/P>
Nový koncept pro vizualizaci dynamických dat!<\/STRONG><\/P> <\/P>Klasicky jsou data, která stojí za dynamickými Feature Services, uložena v Enterprise Geodatabase (EGDB) nebo jiné formě úložiště dat jako například Spatiotemporal Big Data Store (SBDS*). To znamená, že při vizualizaci klient, tedy například naše webová aplikace, musí pravidelně dotazovat aktuální stav z úložiště dat, aby aktualizoval vizualizaci prvků na mapě. V tomto kontextu se mluví o Pollingu, což odpovídá intervalu aktualizace, který způsobuje zpoždění v procesu datových toků v reálném čase poté, co GeoEvent Server tato data zpracoval a zapsal do databáze.<\/P> <\/P><\/P><\/P>Pro minimalizaci této latence staví Stream Server na konceptu, kdy data nejsou nejprve zapisována do databáze, ale jsou přímo pushována ke klientovi. K tomu jsou mezi Stream Serverem a Stream Layerem na klientovi navázána WebSocket spojení, přes která jsou prvky přenášeny a vizualizovány bez jakéhokoliv zpoždění!<\/SPAN><\/P> <\/P> <\/P>Persistování dat<\/STRONG><\/P> <\/P>Možná nyní vyvstává otázka, co se stane, když se klient poprvé připojí ke Stream Serveru a existující data nebyla uložena? To by znamenalo, že klient může zobrazit existující prvky až poté, co GeoEvent Server zpracuje nové události neboli aktualizace stavu pro tento prvek a předá je Stream Serveru. To samozřejmě není ideální scénář, zvláště pokud nejsou všechny prvky aktualizovány v krátkých pravidelných intervalech a mohly by tak po delší dobu vůbec nezobrazovat v aplikaci.<\/P> <\/P>Proto existuje pro Stream Servery koncept "Store Latest" Feature Service, který může být publikován doprovodně ke Stream Service a kde jsou paralelně ukládány nejaktuálnější stavy jednotlivých prvků, jak už název napovídá. Pokud je tato volba zvolena, informace o "Store Latest" Feature Service jsou uloženy v popisu Stream Service. Klienti tak mohou na základě těchto informací při počátečním připojení ke Stream Serveru paralelně provést dotaz (Query) na aktuální stavy prvků z Feature Service a zobrazit je na mapě. Následně pak opět přebírá Stream Layer a okamžitě vizualizuje nové události v reálném čase!<\/P> <\/P>Spojení geometrií a statických atributů na klientovi<\/STRONG><\/P> <\/P>Samozřejmě by ideálně měly být neustále aktualizovány pouze dynamické informace prvku, například u statických senzorů v senzorové síti jde obvykle o stále se aktualizující měřené hodnoty, zatímco informace jako geometrie nebo další vlastnosti senzoru jsou převážně statické. Proto byl do Stream Serveru integrován koncept umožňující referencovat Feature Service s "Related Features" pro tyto případy použití. S těmito informacemi, které jsou klientovi rovněž poskytnuty přes popis Stream Serveru, mohou být statické informace přímo na klientovi přidány k příchozí události pomocí jednoznačného ID (Track ID).<\/P> <\/P>Možnosti pro vývojáře<\/STRONG><\/P> <\/P>Stream Server resp. Stream Layer v aplikacích nabízí také zajímavé možnosti pro vývojáře k dalšímu využití této technologie. Od původního vydání technologie ve verzi10.3 je Stream Layer využitelný v JavaScriptových webových aplikacích přes ArcGIS API for JavaScript a je průběžně integrován do dalších komponent a API ArcGISu. Zajímavou možností je zde věnovat se "onMessage" (JS API) / "on_features" (Python API) událostem Stream Layeru, které umožňují analyzovat každou událost zaslanou ve formátu Esri JSON před jejím zobrazením na mapě.<\/P> <\/P>V již zmíněné
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Nový zde? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.