先日リリースした ArcGIS 10.3 for Server のエクステンションとして新たに追加された ArcGIS GeoEvent Extension for Server を使うことでセンサーや SNS などから取得した様々なデータをリアルタイムに GIS データとして配信することができます。この配信方法の 1 つとしてストリーム サービスと呼ばれる新しい GIS データ配信用の Web サービスが追加されました。これはリアルタイム双方向通信を可能にする WebSocket と呼ばれる通信規格を採用しています。このストリーム サービスが配信するデータを取得して地図上に表示するための機能であるストリーム レイヤーが ArcGIS API for JavaScript に用意されています。ストリーム レイヤーを使うことで ArcGIS GeoEvent Extension for Server がデータを配信してから、アプリケーションがそれを取得する流れもまたリアルタイムに行えるようになりました。
■ストリーム サービスとストリーム レイヤー(サンプル アプリを閲覧する )
ArcGIS API for JavaScript にはすでに StreamLayer というクラスが提供されており、これを使うことでストリーム サービスが配信するデータを取得・表示することができます。ストリーム サービスは WebSocket を使ってデータを送信するため、Web アプリ側は一度サーバーに接続すると、それ以降はサーバーにリクエストを送ることなく、ArcGIS for Server が接続元のクライアントにデータをプッシュ送信し続けます。
従来であれば、レイヤーを定期的にリフレッシュすることで、データベースの更新内容を地図に反映するフローになっており、常に最新情報を表示するためには定期的にサーバーにリクエストを送信する必要がありました。一方、ストリーム サービスとストリーム レイヤーの組み合わせでは、コネクションを一度確立すれば、サーバーが取得したデータが即座に配信されるため、レイヤーのリフレッシュを行うことなく常に最新の状況を地図上に反映することが可能となります。
※本サンプルでは 80 番以外のポートを使用しているため、環境によっては正常に表示されない場合がありますのであらかじめご了承ください。
なお、ストリーム レイヤーは WebSocket を利用するため、モダン ブラウザーでのみ動作します。ストリーム レイヤーを採用される際にはブラウザーで動作確認を行うことをお奨めします。
参考:Can I use…(https://caniuse.com/#search=websocket )
Web GIS アプリケーションで地図上にリアルタイム データ表示を実現したい場合はぜひ ArcGIS GeoEvent Extension for Server の導入をご検討ください。
■関連リンク
ESRIジャパン Web サイト:
・ArcGIS for Developers
・ArcGIS API for JavaScript
・ArcGIS for Server
・ArcGIS GeoEvent Extension for Server
Esri 社(米国)Web サイト:
・ArcGIS for Developers
・ArcGIS API for JavaScript
・ArcGIS for Server
・ArcGIS GeoEvent Extension for Server