1.概要
1-1.本レシピで実現できること
本レシピでは、高精度な位置情報を知ることができる端末(RTK-GNSS)を用いて、取得した位置情報をモバイル通信、ゲートウェイを介してクラウドサービスに送信し、クラウドからデータを取り出してGoogle Mapに位置情報の遷移を図示する方法をご紹介します。一般的な利用方法に限らず、人の安全確認や、物の正確な位置情報把握、赤坂ミニマラソンのランナーにつけることによる競走の可視化 など、エンタメにも活用され始めています。
1-2.所要時間
120分
1-3.所要費用
概算費用: 約7~21万円
- 概算費用: ハードウェアやdocomo IoT高精度GNSS位置情報サービスを始めとした各種サービスの概ねの費用 (送料などの付帯費用や無料枠適用は考慮しないものとしています)
1-4.使用するサービス
1-5.準備する物
本レシピを行うためには以下のものをご用意ください。
ハードウェア
品名 | 数量 | 価格 | 備考 |
---|---|---|---|
接続用インターネット (simもしくはWi-Fiルーター) |
1 | ― | 本レシピでは、IoT向けモバイルデータ通信サービス IoT Connect Mobile®Type S のsimを活用いたします。 |
パソコン(設定用) | 1 | ― | インターネット接続が可能でサイトへの接続が自由であること。 |
モバイルバッテリー(電源用) | 1 | ― | 電源として設定用のパソコンへの接続も可 |
GNSS受信機(RTK対応) | 1 | 数万円 | コア社qzneo |
GNSSアンテナ (RTK・2周波対応) |
1 | 約1万円 | u-blox アンテナ |
- 金額はレシピ作成時となります。金額は税込・送料別です。

(例)GNSS受信機(コア社)GNSS受信機(ublox社)
ご購入について
ハードウェアは以下よりお問い合わせください。
株式会社コアお問い合わせ
https://www.core.co.jp/site/contact
その他必要なもの
必要なもの | 費用 | 作成方法など |
---|---|---|
docomo IoT 高精度GNSS位置情報サービス アカウント | 3,000円(税抜)/月 | docomo IoT高精度GNSS位置情報サービス |
IoT Connect Mobile®Type S | 1,200円(税抜)/月 | IoT Connect MobileⓇType S |
IoT Connect Gateway | 42円(税抜)/月 (7GB想定) | IoT Connect Gateway |
AWS S3 | 31円(税抜) | Amazon S3の料金 |
AWS CloudShell | 0円 | AWS CloudShellの料金 |
- アカウント作成・維持の費用です。
2.作業の流れ
2-1.ICMS/ICGWを経由したAWSへの接続方法
位置情報の取得とICMS/ICGWへの接続は「IoTで高精度な位置情報取得~可視化編~」をご覧ください。本章では取得した位置情報をICMS/ICGWに接続し、AWSへデータを送信する方法をご紹介します。
QZNEO側の設定
QZNEO側でAWSのクラウドサーバへ送信するためにIPアドレスとポート番号を設定します。「IoTで高精度な位置情報取得~可視化編~」→「2-3 QZNEOからICMS/ICGWへ接続する」においてNMEA送信機能の設定を行いました。今回も同様にICMS/ICGWに転送するIPアドレスとポート番号を設定します。AWSへのデータ転送はICMS/ICGW側にて設定します。本レシピでは「IoTで高精度な位置情報取得~可視化編~」に加え、ICMS/ICGWへの負荷を減らすため、出力NMEAを下図赤枠のように「GNRMC(必要最小GNSSデータ)」のみに☑し、設定を反映します。

AWS側の設定
今回のレシピではストレージにAWS S3(Amazon Simple Storage Service)を用います。
1) AWS S3へのアクセス
下図赤枠の「すべてのサービスを表示」をクリックします

その後、「すべてのサービス」→「ストレージ」の欄からS3を選択します

2) バゲットの作成
汎用バゲット一覧から右上赤枠の「バゲットを作成」をクリックします

バゲット名を記載しバゲットの作成ボタンをクリックします。


ICGWの設定手順
IoT Connect Gateway では具体的に以下の手順で設定を行います。各手順についてご紹介いたします。
- 本機能はベータ機能となりますので、ご利用をご希望される場合は、製品IoT化パック_製品・サービス問い合わせページからお問合せくださいますようお願い申し上げます。
- 1) 認証情報の作成
- 2) グループの作成
- 3) データ転送設定の作成
1) 認証情報の作成
IoT Connect Gatewayを経由してお客さまが所有するS3バケットに対して、ファイルをアップロードするための認証情報を設定します。
左側メニューの【クラウドサービス接続】から【認証】を選択し、画面右側にある【新規作成】ボタンから認証情報の新規作成画面に移動します。

【絞り込み検索】からクラウドを【AWS】に設定し、以下の要領で設定内容を入力します。
設定名 | 内容 |
---|---|
証明書種別 (必須) | 【AWS 認証】を選択します |
認証名 (必須) | 任意の名前を設定します |
説明 | 任意の説明を設定します |
アクセスキーID (必須) | AWSで作成されたアクセスキーIDを設定します |
シークレットアクセスキー (必須) | AWSで作成されたシークレットアクセスキーを設定します |

設定内容の入力後に、画面右下にある【作成】ボタンを選択することで、作成された認証情報の詳細画面に移動します。設定内容に間違いが無いことを確認した上で次のステップに進みます。

2) グループの作成
IoT Connect Gatewayでは、データ転送設定の集まりをグループと呼びます。SIMをグループに所属させることで、グループ内に作成されたデータ転送設定に基づいた適切なクラウドサービスへのデータ転送を実現できます。
左側メニューの【クラウドサービス接続】から【グループ】を選択し、画面右側にある【新規作成】ボタンからグループの新規作成画面に移動します。

以下の要領で設定内容を入力します。
設定名 | 内容 |
---|---|
グループ名 (必須) | 任意のグループ名を設定します |
SIM設定 | グループに所属させたいSIMを選択します SIMは1つのグループにのみ所属させることができます |
仮想コネクション設定 | 今回は必須ではないため割愛します 仮想コネクションに関する詳細はこちらを参照してください |

設定内容の入力後に、画面右下にある【作成】ボタンを選択することで、作成されたグループの閲覧画面に移動します。グループ閲覧画面からさまざまな種類のデータ転送設定が作成可能です。具体的に設定可能な項目はこちらをご参照してください。

3) データ転送設定の作成
IoT Connect Gateway がデバイスからデータを受信し、クラウドサービスへデータを転送するためには、グループにデータ転送設定を作成する必要があります。スタンダード・イベント・ファンクション・ストレージなどさまざまなデータ転送サービス・通信プロトコル・転送先クラウドを選択でき、お客さまのユースケースに応じて柔軟な使い分けが可能です。今回は、QZNEOの使用プロトコルがTCPで、送信先クラウドサービスがAWS S3 なので、ストレージのデータ転送サービスを使用していきます。
②で作成したグループ画面から【ストレージ】タブを選択します。

画面右側にある【TCP新規作成】ボタンを選択します。
- TCP転送設定は、(データ転送サービス種別に関わらず)1グループに1つのみしか作成できません。

以下の要領で設定内容を入力します。
より詳細な設定内容はこちらを参照してください。
大項目 | 中項目 | 内容 |
---|---|---|
エントリーポイント | 設定名 | 任意の設定名を設定します |
有効 | 有効化します | |
宛先設定 | 転送先種別 | 【S3】を指定します |
エンドポイント | 【s3.ap-northeast-1.amazonaws.com】を指定します
|
|
認証選択 | 【X. 認証情報の作成】で作成した認証情報を指定します | |
バケット | 【ご自身で設定されたバゲット名】を指定します | |
ファイルパス | 【$imsi/$YYYY/$MM/$DD/$HH/$YYYY$MM$DD$HH$mm$ss.txt 】を指定
|
|
TCPレスポンス設定 | ステータスコード省略 | 有効化します |
レスポンスボディ省略 | 有効化します | |
終端文字 | 【¥n】を指定します | |
メタデータ操作 | ー | 今回は必須ではないため割愛します |
カスタムヘッダー | ー | 今回は必須ではないため割愛します |
カスタムタグ | ー | 今回は必須ではないため割愛します |

設定内容の入力後に、画面右下にある【作成】ボタンを選択することで、作成されたデータ転送設定の詳細画面に移動します。

ここまでが IoT Connect Gateway の設定手順になります。データ転送設定が正しく行われている場合、デバイスからのデータがIoT Connect Gatewayを通じてAWS S3にアップロードされていることを確認できるかと思います。
2-2.AWS S3へ送信されたデータの確認方法
AWS S3へ送信されたデータが位置情報データであると確認する方法をご紹介します。 QZNEOからICMS/ICGWを通じてAmazon S3へデータの送信が成功すると以下赤枠のように選択したバゲット内にフォルダが格納されています。


フォルダをクリックすると位置情報が格納されているオブジェクトの一覧が表示されます。下図は1秒ごとにテキストタイプで位置情報が格納されています。

オブジェクトのうちの1つを選択し、下図赤枠「開く」をクリックし、するとテキスト形式でデータの中身をダウンロードできます。

「072815.txt」内に格納されたデータを以下に示します。JSON形式として
{“payload”:”文字列”}
と表記されていますが、payloadは送信データの内、宛先などの制御情報を除いたデータ本体のことを指します。
{"payload":"JEdOUk1DLDAyMTUwMC4wMCxWLDM1NDAuMjM3ODkzNSxOLDEzOTQ0LjYxMTkzNTcsRSwyLjI5MSwyODEuODgsMDIwNzI0LCwsRixWKjBE"}
ペイロードの文字列部は
$GNRMC,021500.00,V,3540.2378935,N,13944.6119357,E,2.291,281.88,020724,,,F,V*0D
2-3.AWS S3からデータを抽出する方法
AWS S3のストレージに格納した位置情報データを抽出する方法としてAWS Cloud
Shellを用います。以下図のようにCloudShellコンソールにてaws s3 sync s3://「各自のバゲット名」 ./temp
を入力し、実行します。(「各自のバゲット名」は各々が位置情報を格納しているバゲット名を指定してください)
この操作により、CloudShell内に「temp」フォルダを作成し、位置情報を格納しているバゲットと同期します。

次のコマンドを実行し、同期した「temp」フォルダのオブジェクトを「temp.zip」という名前で圧縮します。
zip temp.zip -r temp/

作成したzipファイルをダウンロードします。画面右上の「アクション」タブをクリックし、「ファイルのダウンロード」を選択します。

その後、ダウンロードするファイルのパス指定の画面が表示され、以下図のように「temp.zip」を設定し、ダウンロードします。この操作により、PCのローカル環境にAWS S3に格納されていた位置情報データをダウンロードすることができます。

ダウンロード後、zipファイルを解凍することで、テキストファイルが得られます。
2-4.抽出したデータをGoogle Mapに図示する
AWS S3から抽出した位置情報データを形式変換し、位置情報の遷移をGoogle Mapへ図示する方法をご紹介します。
位置情報データの形式変換
Google Mapへ図示するために必要な位置情報データ形式の変換プロセスを下図に示し、各工程での操作をご紹介します。

①ICGW上での変換
QZNEOで取得した位置情報はNMEA形式としてICMS/ICGWを通じてAWS S3に送信します。このデータ変換に必要な操作はございません。送信されたデータはICGWにてJSON形式に変換され、txt(テキスト)ファイルとしてAWS S3に送信、保存されます。
②シェルコマンドを用いて変換
4章にてご説明させていただいた通り、位置情報データはJSON形式の中で、キーであるpayloadの値としてBase64エンコードされています。この位置情報データをAWS S3からCloudShellを用いて、お使いのPCのローカル環境にダウンロードします。変換プロセス②ではシェルコマンドを用いてJSONデータをNMEAデータに変換します。5章にてダウンロードしたzipファイルを解凍して得たテキストファイルを用いて、Windows OSとMac OSごとに変換の方法をご紹介します。
②-1 Windows OSでのNMEA変換
②-1-1 jqコマンドの導入
以下URL:(jq (jqlang.github.io))にアクセスします。
「Download jq [現在のバージョン]▼」のプルダウンをクリックし、お使いのWindowsの対応する項目を選択し、exeファイルのダウンロードを実行します。
exeファイル名は「jq-windows-amd64.exe」となります。
②-1-2 Pathの選択方法
ファイルエクスプローラーを開き、exeファイルを格納してあるフォルダ(下記図では「ダウンロード」)に移動します。赤枠のアドレスバーを右クリックし、「アドレスをコピー」を選択します。
②-1-3 環境変数のPathを通す
Windowsの設定画面を開き、左上の検索バーに「環境変数」と入力し、候補に表示された「環境変数を編集」をクリックします。
以下図の画面が表示されるため、赤枠の「Path」を選択し、「編集(E)」をクリックします。
以下図のように「環境変数名の編集」画面が表示されるため、赤枠の「新規(N)」ボタンをクリックし、②-1-1にてダウンロードしたexeファイルが保存されてあるPathを入力し、「OK」ボタンをクリックします。
②-1-4 コマンドの実行
cat "フォルダ(txtファイルが格納されてあるフォルダ)/ファイル名" | jq .payload -r| % {[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_))}
②-1-5 ファイルの保存
デコードにより、得られたNMEAデータをテキストエディタにコピー&ペーストし、拡張子を「.nmea」に変更し、保存します。
②-2 Mac OSでのNMEA変換
②-2-1 Mac OSでのNMEA変換
ターミナルにて以下のコマンドを順番に実行します。"フォルダ(txtファイルが格納されてあるフォルダ)/ファイル名"はご自身が保存してあるtxtファイルのPathに置き換えてください。
#1.HomeBrewのインストール /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" #2.HomeBrewからjqをインストールする brew install jq #3.NMEAデータをJSONデータから取り出す cat "フォルダ(TXTファイルが格納されてあるフォルダ)/ファイル名" | jq -r .payload | base64 -D
②-2-2 ファイルの保存
デコードにより、得られたNMEAデータをテキストエディタにコピー&ペーストし、拡張子を「.nmea」に変更し、保存します。
③ウェブアプリを用いて変換
ウェブアプリを用いてNMEA形式からKML形式に変換します。KMLは(Keyhole Markup Language)の略で、Google Mapに位置情報データを図示するために必要なデータ形式です。本レシピではAny Conv(URL:https://anyconv.com/ja/nmea-to-kml-konbata/ )を用います。

ファイルを選択し、形式変換を終えると以下のように表示され、ダウンロードをクリックします。

Google My Mapsへの図示
データ変換を行い、得たKML形式のデータを用いてGoogle My Mapsへ位置情報の遷移を図示します。「新しい地図を作成」をクリックします。

マップ左上の「無題のレイヤ」下部にある「インポート」をクリックし、ご自身のKMLファイルをインポートします。

インポートが成功すると、下図赤丸のように位置情報データがマップに図示されます。

【参考】連続した位置情報の軌跡の図示
本レシピでは1点のみの位置情報の図示を行いましたが、連続した位置情報データを持つKMLファイルを用いると下図のように移動履歴を図示できます。連続した位置情報の軌跡図示のレシピは今後更新する予定となっております。

3.最後に
本レシピでは、高精度な位置情報(RTK-GNSS)を知ることができる端末「QZNEO」を用いて、取得した位置情報をモバイル通信、ゲートウェイを介してクラウドサービスに送信し、クラウドからデータを取り出してGoogle Mapに位置情報の遷移を図示する方法をご紹介いたしました。レシピ上では1点のみの図示化ですが、今後、連続した位置情報データの図示化方法も紹介予定です。
以下ページを参考に、ぜひともdocomo IoT高精度GNSS位置情報サービスおよび ICMS/ICGW をご活用ください。
【参考】活用事例集
docomo IoT 高精度GNSS位置情報サービスのサービスページと導入事例は以下からご覧いただけます。
製品の取扱説明書および簡易設定ツールは以下のサイトよりダウンロードしてください。
https://www.core.co.jp/service/gnss/qzneo/dl/qzneo_fileserver
コア社にてQZNEOデモ用Androidアプリをご提供しております。
ICMSを活用した事例は以下からご覧いただけます。