はじめに
2018年10月17日から、クラウド連携をサポートするSORACOM Funnelの Partner Hosted Adapterが、ESRIジャパン株式会社のArcGIS Onlineに連携を開始しました。
それに伴いまして、「IoT通信プラットフォーム「SORACOM」とクラウドGISプラットフォーム「ArcGIS Online」の連携」シリーズで、3回にわたり連携手順をお伝えしています(1回目、2回目)。
SORACOMとArcGIS Onlineの連携イメージ
参考:「位置情報をマップ上で可視化・分析できるArcGIS Online が株式会社ソラコムのSORACOM Funnelと連携開始」
SORACOMのSORACOM Funnelアダプターを使用して、SORACOM 対応デバイスからArcGIS Onlineのフィーチャ サービス(フィーチャ レイヤー)へのデータ転送が可能になりました。転送されたセンシングデータは、ArcGIS Onlineにて可視化・共有・解析することができます。
第3回、いよいよ最終回となる今回は、デバイスからGISへのクラウド連携を完了させます。「第2回 ArcGIS Online の設定」の完了が前提です。下図のステップ1~3を行っていきます。
オレンジの丸部分が今回の設定箇所
① デバイスの購入とデバイス設定
SORACOM を使った通信を始めるにあたり、手っ取り早いのは、SORACOM認定デバイス一覧から、要件にマッチする、あるいは十分に近いデバイスを探すことです。見つからない場合は調達からし直すことになります。
デバイス側にしなければならない設定としては、データ送信先を SORACOM Funnel のエンドポイントに固定することです。エンドポイントのアドレスは「funnel.soracom.io:23080」です。具体的な設定方法は各デバイスのマニュアルに記載されているはずです。
送信先エンドポイントの設定例
ここで、デバイスが送信するデータの形式を確認しておいてください。マニュアルに記載されているはずです。重要な確認項目は下記の3点です。
② グループの作成とデバイスの割り当て
デバイスを購入したら、そのデバイスが SORACOM にデータを送信したのち、そこからどうするのか、を設定することになります。SORACOM ではデバイスの設定を一括で行えるよう、グループを作成して設定を適用します。各基地局や交換局から SORACOM までセキュアに集まった情報が、SORAOCM のグループに振り分けられて、グループ設定毎にクラウドやサーバーに転送されるという仕組みです。
デバイスからのデータ転送イメージ
実際にはグループはSIMとLoRaとSigfoxの3種類それぞれに存在するため、通信種類が異なるグループに所属することはできません(2018年10月現在)。グループの作成方法とデバイスの割り当て方法は、株式会社ソラコムのWebサイト「ユーザーコンソールの使い方」に掲載されています。新しいグループを1つ作成し、ArcGIS Online 向けと分かるような名前を付けます。
グループの作成画面
なお、SORACOM Air設定時に既にグループ割り当てがされている場合、新たにグループ作成する必要はありません。Air の設定と Funnel の設定は同居可能です。
③ グループの SORACOM Funnel 設定
グループを作成し、SIM または デバイス(SORACOM Air for ○○)をグループに割り当て終わったら、そのグループの Funnel 設定を行います。
SORACOM ユーザーコンソールでメニューから設定したいグループを選択し、グループ一覧のなかから作成したグループ名をクリックし、グループ設定画面を開きます。開いた設定画面の中の [SORACOM Funnel 設定] を選択し、パネルを開いた状態にします。
左上の [OFF] 部分をクリックし、[ON] に切り替えると、転送先サービスが選択可能になります。転送先サービスのドロップダウン リストのなかから「Esri Japan ArcGIS Online」を選択します。
SORACOM Funnel の設定画面
選択すると設定可能な箇所が増えるので、設定箇所を埋めていきます。[転送先URL] には前回作成した2つ目のフィーチャ サービスのURLを貼り付けます。
SORACOM Funnel の設定画面
[転送データ設定] にはJSONの設定情報を貼り付ける必要があります。デバイスから送信されるデータと、ArcGIS Online のフィーチャ サービスのフィールドを紐づける設定になります。まずは、下記のJSON文字列をメモ帳などのテキスト エディタに貼り付けて編集します。
{ "sendType": "", "delimiter": "", "encode": "", "d_id": "", "lat": "", "lng": "", "D_TIME": "", "v_dbl_1": "", "v_dbl_2": "", "v_dbl_3": "", "v_dbl_4": "", "v_int_1": "", "v_int_2": "", "v_str_1": "", "v_str_2": "" }
それぞれの項目の内容と、フィーチャ サービスの転送先フィールドとの対応表は下記になります。(*)は必須設定です。
設定項目 設定値 転送先フィーチャサービスのフィールド名
sendType(*) | “json“: デコード後の内容がJSON形式 “text”: デコード後の内容が区切り形式 | ― |
delimiter | “text”の場合のみ有効の区切り文字を指定 “,”: CSVということ “”: JSON形式の場合未設定 | ― |
encode | “base64”: 送信されてくるデータがBase64エンコードされている場合に設定するとデコードする “”: エンコードされていない場合は空に設定 | ― |
d_id(*) | デバイス固有のID情報を設定 ”ABCDE”: JSONの場合はKey名称を設定 “1”: CSV等のText形式の場合、分割後の位置を指定、数値は0からカウントアップ “#imei”: 固有IDを送信しない場合、IMEI番号を利用可能 “#imsi”: 固有IDを送信しない場合、IMSI番号を利用可能 | device_id (String型) |
lat | GPSなどで位置が取れるデバイスは、緯度(Latitude, Breite)が送信されてくる場合はここに設定する。 逆に位置が無い、静止デバイスの場合は、ここは未設定。 ※ NMEA文字列を飛ばす場合は、lat, lng の両方にNMEA文字列をセットすること | ― |
lng | GPSなどで位置が取れるデバイスは、経度(Longitude, Lange)が送信されてくる場合はここに設定する。 逆に位置が無い、静止デバイスの場合は、ここは未設定。 ※ NMEA文字列を飛ばす場合は、lat, lng の両方にNMEA文字列をセットすること | ― |
D_TIME | 送信したいデータのKey名称 or 区切った際のデータ格納位置 ”ABCDE”: JSONの場合はKey名称を設定 “1”: CSV等のText形式の場合、分割後の位置を指定、数値は0からカウントアップ “”: ない場合は空のまま ※ UNIXTIMEか文字列型に対応、エラーが出る場合はいったんv_str_1 or 2に格納してから加工すること | device_time (DateTime型) |
v_dbl_1~4 | 送信したいデータのKey名称 or 区切った際のデータ格納位置 ”ABCDE”: JSONの場合はKey名称を設定 “1”: CSV等のText形式の場合、分割後の位置を指定、数値は0からカウントアップ “”: ない場合は空のまま “#imei”: IMEI番号を格納したい場合 “#imsi”: IMSI番号を格納したい場合 | value_double_1~4 (Double型) |
v_int_1~2 | 送信したいデータのKey名称 or 区切った際のデータ格納位置 ”ABCDE”: JSONの場合はKey名称を設定 “1”: CSV等のText形式の場合、分割後の位置を指定、数値は0からカウントアップ “”: ない場合は空のまま | value_integer_1~2 (Integer型) |
v_str_1~2 | 送信したいデータのKey名称 or 区切った際のデータ格納位置 ”ABCDE”: JSONの場合はKey名称を設定 “1”: CSV等のText形式の場合、分割後の位置を指定、数値は0からカウントアップ “”: ない場合は空のまま “#imei”: IMEI番号を格納したい場合 “#imsi”: IMSI番号を格納したい場合 | value_string_1~2 (String型) |
設定サンプルは下記のとおりです。
1.TR313Jからの情報登録 (移動体)
{ "sendType": "text", "delimiter": ",", "encode": "base64", "d_id": "1", "lat": "10", "lng": "9", "D_TIME": "", "v_dbl_1": "11", "v_dbl_2": "12", "v_dbl_3": "13", "v_dbl_4": "", "v_int_1": "", "v_int_2": "", "v_str_1": "", "v_str_2": "" }
2.Sens’it (Sigfox) からの情報登録 (静止デバイス)
{ "sendType": "json", "delimiter": "", "encode": "", "d_id": "device", "lat": "", "lng": "", "D_TIME": "time", "v_dbl_1": "tempC", "v_dbl_2": "humidity", "v_dbl_3": "battery", "v_dbl_4": "rssi", "v_int_1": "mode", "v_int_2": "", "v_str_1": "station", "v_str_2": "modeText" }
デバイスに応じたJSONの設定ができあがったら、SORACOM Funnel 設定画面上の [転送データ設定] ブロックに貼り付けます。
次に、認証情報を設定します。前回のブログでフィーチャ サービス(プロキシ サービス)に設定した、リファラ―URLを設定します。
前回設定したリファラ―URL
SORACOM Funnel 設定画面の [認証情報] 一覧から選択するか、ドロップダウンリスト横の+ボタンをクリックして、新たにリファラ―URLを設定します。
[登録] ボタンで認証情報を登録すると、SORACOM Funnel 設定画面に戻ります。
最後に [送信データ形式] を設定します。[転送データ設定] に設定済みの JSON 内で “encode” を指定する場合は「バイナリ」を、それ以外は「JSON」か「テキスト」を、設定内容にあわせて選択します。
すべての設定が終わったら、SORACOM Funnel 設定パネルの左下にある [保存] ボタンをクリックして設定は終了です。
設定の保存後はすぐに SORACOM Funnel が動き出し、デバイスからの転送にあわせて ArcGIS Online 上のフィーチャ サービスにデータが格納されます。これで IoT デバイスから GIS へのクラウド連携が完了となります。
データがフィーチャ サービスに到達したかどうか、また、データをマップ上でどのように表現するか、などについては、「ArcGIS Online 逆引きガイド」に掲載されています。
3回にわたりお伝えしてきた “IoT通信プラットフォーム「SORACOM」とクラウドGISプラットフォーム「ArcGIS Online」の連携” ですが、連携方法をお伝えしたのみです。
ダッシュボードによる可視化、Web アプリケーションによる可視化、そしてマップ ビューアーが備える強力な解析機能を使って、はじめて IoT と GIS の連携に価値が出てきます。ダッシュボードの設定方法については、また別の機会にお伝えしたいと思います。
お急ぎの方はぜひ、下記のオンライン ラーニング サイトや、ダッシュボードの作成にチャレンジして、ArcGIS Online の機能に触れてみてください。
■関連リンク