Stream Serviceとは何ですか?<\/STRONG><\/P> <\/P>既存で長く存在するMap & Feature Servicesに加え、ここ数年(最初のリリースは10.3)ArcGISの世界に新たなサービス種別が登場しました。これは主にリアルタイムデータの効率的な可視化のために開発されたStream Serviceです。<\/P> <\/P>Stream ServiceはArcGIS GeoEvent Serverと連携しており、EsriのソフトウェアソリューションであるGeoEvent Serverはリアルタイムデータストリームを統合し、受信したデータに対してリアルタイムのイベントベース分析を行い、その後配信します。つまり、ArcGISプラットフォーム内外で利用可能にします。この際、データをリアルタイムで処理するだけでなく可視化することも重要な要件となります。この要件を踏まえ、GeoEvent Serverの開発チームは動的データの可視化時のレイテンシーを減らし、「どこで」だけでなく「いつ」何が起きているかを直接示す方法を検討しました。<\/P> <\/P>APIから国際宇宙ステーションの現在位置を取得し可視化するStream Serviceの例は、こちら<\/A><\/STRONG>でご覧いただけます。<\/P> <\/P> <\/A><\/P> <\/P>動的データ可視化の新しいコンセプト!<\/STRONG><\/P> <\/P>従来、動的Feature Servicesの基盤となるデータはEnterprise Geodatabase(EGDB)やSpatiotemporal Big Data Store(SBDS*)などのデータストアに保存されていました。これはクライアント、例えばWebアプリケーションが定期的にデータストアから最新状態を問い合わせて地図上のフィーチャー表示を更新する必要があることを意味します。この仕組みはポーリングと呼ばれ、更新間隔が存在するため、GeoEvent Serverが処理しデータベースに書き込んだ後でもリアルタイムデータストリーム処理に遅延が生じます。<\/P> <\/P><\/P><\/P>このレイテンシーを最小化するために、Stream Serverはデータをまずデータベースに書き込むのではなく直接クライアントへプッシュするコンセプトを採用しています。そのためにStream Serverとクライアント側のStream Layer間でWebSocket接続が直接確立され、この接続を通じてフィーチャーが遅延なく送信・可視化されます!<\/SPAN><\/P> <\/P> <\/P>データの永続化<\/STRONG><\/P> <\/P>ここで疑問になるかもしれません。もしクライアントが初めてStream Serverに接続した際に既存データが保存されていなかったらどうなるのでしょうか?その場合、クライアントは新しいイベント(つまりFeatureの状態更新)がGeoEvent Serverによって処理されStream Serverへ送られるまで既存フィーチャーを表示できません。これは理想的なシナリオではありません。特に全てのフィーチャーが短い間隔で更新されない場合、長期間アプリケーション上に現れない可能性があります。<\/P> <\/P>そこでStream Serverには「Store Latest」Feature Serviceというコンセプトがあります。これはStream Serviceと併せて公開可能で、その名の通り各フィーチャーの最新状態を並行して保存します。このオプションを選択すると、「Store Latest」Feature Serviceへの情報がStream Serviceの説明に記載されます。これによりクライアントは初回接続時にこの情報を基にFeature Serviceから現在状態をクエリし地図上に表示できます。その後は再びStream Layerが引き継ぎ、新しいイベントを即座にリアルタイムで可視化します!<\/P>クライアント側でジオメトリと静的属性の結合<\/STRONG><\/P> <\/P>理想的にはフィーチャーの動的情報のみが常時更新されるべきです。例えばセンサーネットワーク内の静的センサーの場合、多くは常時更新される測定値ですが、ジオメトリやその他センサー属性などは主に静的です。そのためStream Serverには「Related Features」を持つFeature Serviceを参照可能なコンセプトも組み込まれています。この情報もStream Server説明経由でクライアントへ提供され、固有ID(Track ID)によって受信イベントへ静的情報を直接追加できます。<\/P>開発者向け機能<\/STRONG><\/P> <\/P>Stream Serverおよびアプリケーション内のStream Layerは開発者にも興味深い機能を提供しています。この技術は10.3で初めてリリースされて以来、JavaScriptベースWebアプリケーション向けArcGIS API for JavaScriptで利用可能となり、他のArcGISコンポーネントやAPIにも継続的に統合されています。注目すべき機能として、Stream Layerの「onMessage」(JS API)/「on_features」(Python API)イベントがあります。これによりEsri JSON形式で送信される各イベントを地図上で可視化する前に解析できます。<\/P>ISS Demoでは例えば、「onMessage」イベントを使い、ISSが陸地または海洋上空を通過するときそれぞれGeoTagとして送信し、「陸地・海洋切替時」のテキスト表示更新に利用しています。 皆さんもぜひこの新しいLayerタイプをリアルタイムアプリケーションで探索・活用してみてください! Tom *PS:Spatiotemporal Big Data Storeについては今後のブログ記事で詳細をご紹介予定です!
<\/P>
動的データ可視化の新しいコンセプト!<\/STRONG><\/P> <\/P>従来、動的Feature Servicesの基盤となるデータはEnterprise Geodatabase(EGDB)やSpatiotemporal Big Data Store(SBDS*)などのデータストアに保存されていました。これはクライアント、例えばWebアプリケーションが定期的にデータストアから最新状態を問い合わせて地図上のフィーチャー表示を更新する必要があることを意味します。この仕組みはポーリングと呼ばれ、更新間隔が存在するため、GeoEvent Serverが処理しデータベースに書き込んだ後でもリアルタイムデータストリーム処理に遅延が生じます。<\/P> <\/P><\/P><\/P>このレイテンシーを最小化するために、Stream Serverはデータをまずデータベースに書き込むのではなく直接クライアントへプッシュするコンセプトを採用しています。そのためにStream Serverとクライアント側のStream Layer間でWebSocket接続が直接確立され、この接続を通じてフィーチャーが遅延なく送信・可視化されます!<\/SPAN><\/P> <\/P> <\/P>データの永続化<\/STRONG><\/P> <\/P>ここで疑問になるかもしれません。もしクライアントが初めてStream Serverに接続した際に既存データが保存されていなかったらどうなるのでしょうか?その場合、クライアントは新しいイベント(つまりFeatureの状態更新)がGeoEvent Serverによって処理されStream Serverへ送られるまで既存フィーチャーを表示できません。これは理想的なシナリオではありません。特に全てのフィーチャーが短い間隔で更新されない場合、長期間アプリケーション上に現れない可能性があります。<\/P> <\/P>そこでStream Serverには「Store Latest」Feature Serviceというコンセプトがあります。これはStream Serviceと併せて公開可能で、その名の通り各フィーチャーの最新状態を並行して保存します。このオプションを選択すると、「Store Latest」Feature Serviceへの情報がStream Serviceの説明に記載されます。これによりクライアントは初回接続時にこの情報を基にFeature Serviceから現在状態をクエリし地図上に表示できます。その後は再びStream Layerが引き継ぎ、新しいイベントを即座にリアルタイムで可視化します!<\/P>クライアント側でジオメトリと静的属性の結合<\/STRONG><\/P> <\/P>理想的にはフィーチャーの動的情報のみが常時更新されるべきです。例えばセンサーネットワーク内の静的センサーの場合、多くは常時更新される測定値ですが、ジオメトリやその他センサー属性などは主に静的です。そのためStream Serverには「Related Features」を持つFeature Serviceを参照可能なコンセプトも組み込まれています。この情報もStream Server説明経由でクライアントへ提供され、固有ID(Track ID)によって受信イベントへ静的情報を直接追加できます。<\/P>開発者向け機能<\/STRONG><\/P> <\/P>Stream Serverおよびアプリケーション内のStream Layerは開発者にも興味深い機能を提供しています。この技術は10.3で初めてリリースされて以来、JavaScriptベースWebアプリケーション向けArcGIS API for JavaScriptで利用可能となり、他のArcGISコンポーネントやAPIにも継続的に統合されています。注目すべき機能として、Stream Layerの「onMessage」(JS API)/「on_features」(Python API)イベントがあります。これによりEsri JSON形式で送信される各イベントを地図上で可視化する前に解析できます。<\/P>
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.