製品IoT化パック

Webレシピ

IoTで高精度な位置情報取得~クラウドサービスへの接続とマッピング編~

本Webレシピでは、高精度な位置情報を知ることができる端末(RTK-GNSS)を用いて、取得した位置情報をモバイル通信、ゲートウェイを介してクラウドサービスに送信し、クラウドからデータを取り出してGoogle Mapに位置情報の遷移を図示する方法をご紹介します。

難易度:★★☆☆☆

レシピ公開日:2024年11月

IoTで高精度な位置情報取得~クラウドサービスへの接続とマッピング編~

1.概要

1-1.本レシピで実現できること

本レシピでは、高精度な位置情報を知ることができる端末(RTK-GNSS)を用いて、取得した位置情報をモバイル通信、ゲートウェイを介してクラウドサービスに送信し、クラウドからデータを取り出してGoogle Mapに位置情報の遷移を図示する方法をご紹介します。一般的な利用方法に限らず、人の安全確認や、物の正確な位置情報把握、赤坂ミニマラソンのランナーにつけることによる競走の可視化 など、エンタメにも活用され始めています。

1-2.所要時間

120分

1-3.所要費用

概算費用: 約7~21万円

  • 概算費用: ハードウェアやdocomo IoT高精度GNSS位置情報サービスを始めとした各種サービスの概ねの費用 (送料などの付帯費用や無料枠適用は考慮しないものとしています)

1-4.使用するサービス

docomo IoT 高精度GNSS位置情報サービスページ

IoT Connect Mobile® Type S サービスページ

IoT Connect Gateway サービスページ

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 アンテナ
  • 金額はレシピ作成時となります。金額は税込・送料別です。
PCセット

(例)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 MobileType 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データ)」のみに☑し、設定を反映します。

GNRMC設定画面

AWS側の設定

今回のレシピではストレージにAWS S3(Amazon Simple Storage Service)を用います。

1) AWS S3へのアクセス
下図赤枠の「すべてのサービスを表示」をクリックします

AWSコンソールホーム画面

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

AWSすべてのサービス画面

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

AWSバゲット作成方法

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

AWSバゲット作成画面
AWSバゲット作成確認画面

ICGWの設定手順

IoT Connect Gateway では具体的に以下の手順で設定を行います。各手順についてご紹介いたします。

  1. 1) 認証情報の作成
  2. 2) グループの作成
  3. 3) データ転送設定の作成

1) 認証情報の作成
IoT Connect Gatewayを経由してお客さまが所有するS3バケットに対して、ファイルをアップロードするための認証情報を設定します。
左側メニューの【クラウドサービス接続】から【認証】を選択し、画面右側にある【新規作成】ボタンから認証情報の新規作成画面に移動します。

ICGW認証画面

【絞り込み検索】からクラウドを【AWS】に設定し、以下の要領で設定内容を入力します。

                   
設定名 内容
証明書種別 (必須) 【AWS 認証】を選択します
認証名 (必須) 任意の名前を設定します
説明 任意の説明を設定します
アクセスキーID (必須) AWSで作成されたアクセスキーIDを設定します
シークレットアクセスキー (必須) AWSで作成されたシークレットアクセスキーを設定します
ICGW認証作成画面

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

S3認証詳細画面

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

ICGWグループ画面

以下の要領で設定内容を入力します。

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

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

ICGWグループ閲覧画面

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

ICGWグループ詳細設定ストレージタブ

画面右側にある【TCP新規作成】ボタンを選択します。

  • TCP転送設定は、(データ転送サービス種別に関わらず)1グループに1つのみしか作成できません。
ICGWグループ詳細設定ストレージタブTCP新規作成

以下の要領で設定内容を入力します。
より詳細な設定内容はこちらを参照してください。

                                                   
大項目 中項目 内容
エントリーポイント 設定名 任意の設定名を設定します
有効 有効化します
宛先設定 転送先種別 【S3】を指定します
エンドポイント 【s3.ap-northeast-1.amazonaws.com】を指定します
  • リージョンが異なる場合は適宜変更してください
認証選択 【X. 認証情報の作成】で作成した認証情報を指定します
バケット 【ご自身で設定されたバゲット名】を指定します
ファイルパス 【$imsi/$YYYY/$MM/$DD/$HH/$YYYY$MM$DD$HH$mm$ss.txt 】を指定
  • IMSI・日付(年月日時)毎にファイルを保存します
TCPレスポンス設定 ステータスコード省略 有効化します
レスポンスボディ省略 有効化します
終端文字 【¥n】を指定します
メタデータ操作 今回は必須ではないため割愛します
カスタムヘッダー 今回は必須ではないため割愛します
カスタムタグ 今回は必須ではないため割愛します
ICGWストレージTCP新規作成画面

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

ICGWストレージTCP設定確認

ここまでが IoT Connect Gateway の設定手順になります。データ転送設定が正しく行われている場合、デバイスからのデータがIoT Connect Gatewayを通じてAWS S3にアップロードされていることを確認できるかと思います。

2-2.AWS S3へ送信されたデータの確認方法

AWS S3へ送信されたデータが位置情報データであると確認する方法をご紹介します。 QZNEOからICMS/ICGWを通じてAmazon S3へデータの送信が成功すると以下赤枠のように選択したバゲット内にフォルダが格納されています。

AWSバゲット確認画面
AWSバゲット確認画面

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

AWSバゲットオブジェクト一覧

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

AWSバゲットオブジェクトの概要

「072815.txt」内に格納されたデータを以下に示します。JSON形式として {“payload”:”文字列”}と表記されていますが、payloadは送信データの内、宛先などの制御情報を除いたデータ本体のことを指します。

{"payload":"JEdOUk1DLDAyMTUwMC4wMCxWLDM1NDAuMjM3ODkzNSxOLDEzOTQ0LjYxMTkzNTcsRSwyLjI5MSwyODEuODgsMDIwNzI0LCwsRixWKjBE"}

ペイロードの文字列部はであり、Base64形式でエンコードされているため、Base64形式でデコードすることで以下のようなNMEAデータを得られます。このようにして、QZNEOで得られた位置情報がAmazon S3に送信されたことが確認できました。

$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」フォルダを作成し、位置情報を格納しているバゲットと同期します。

AWS CloudShell画面

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

zip temp.zip -r temp/
AWS CloudShell画面

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

AWS CloudShell画面アクションメニュー

その後、ダウンロードするファイルのパス指定の画面が表示され、以下図のように「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. ②-1 Windows OSでのNMEA変換

    1. ②-1-1 jqコマンドの導入

      以下URL:(jq (jqlang.github.io))にアクセスします。

      「Download jq [現在のバージョン]▼」のプルダウンをクリックし、お使いのWindowsの対応する項目を選択し、exeファイルのダウンロードを実行します。

      exeファイル名は「jq-windows-amd64.exe」となります。

      jqダウンロード画面
    2. ②-1-2 Pathの選択方法

      ファイルエクスプローラーを開き、exeファイルを格納してあるフォルダ(下記図では「ダウンロード」)に移動します。赤枠のアドレスバーを右クリックし、「アドレスをコピー」を選択します。

      windowsファイルエクスプローラー
    3. ②-1-3 環境変数のPathを通す

      Windowsの設定画面を開き、左上の検索バーに「環境変数」と入力し、候補に表示された「環境変数を編集」をクリックします。

      windows設定画面

      以下図の画面が表示されるため、赤枠の「Path」を選択し、「編集(E)」をクリックします。

      windows環境変数画面

      以下図のように「環境変数名の編集」画面が表示されるため、赤枠の「新規(N)」ボタンをクリックし、②-1-1にてダウンロードしたexeファイルが保存されてあるPathを入力し、「OK」ボタンをクリックします。

      windows環境変数編集画面
    4. ②-1-4 コマンドの実行

      cat "フォルダ(txtファイルが格納されてあるフォルダ)/ファイル名" | jq .payload -r| %
      {[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_))}
    5. ②-1-5 ファイルの保存

      デコードにより、得られたNMEAデータをテキストエディタにコピー&ペーストし、拡張子を「.nmea」に変更し、保存します。

  2. ②-2 Mac OSでのNMEA変換

    1. ②-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-2 ファイルの保存

      デコードにより、得られたNMEAデータをテキストエディタにコピー&ペーストし、拡張子を「.nmea」に変更し、保存します。

③ウェブアプリを用いて変換

ウェブアプリを用いてNMEA形式からKML形式に変換します。KMLは(Keyhole Markup Language)の略で、Google Mapに位置情報データを図示するために必要なデータ形式です。本レシピではAny Conv(URL:https://anyconv.com/ja/nmea-to-kml-konbata/ )を用います。

NMEA KML 変換

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

ファイルのダウンロード

Google My Mapsへの図示

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

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を活用した事例は以下からご覧いただけます。

こちらのWebレシピの
PDF版ダウンロードはこちら

ダウンロードする
(PDF形式/3.57MB)

製品IoT化パックの
ウェビナー視聴&資料ダウンロードはこちら

  • お問い合わせ

    製品IoT化パッケージに関するお問い合わせはこちら

関連コンテンツ

  • Things Cloud®

    Things Cloud®

    NTT ComのIoTプラットフォーム「Things Cloud®」は、 センサーデバイス、ネットワーク、クラウド、アプリケーションといった多岐に渡る分野をIoT Platformとしてトータルで提供します。

  • IoT Connect Gateway

    IoT Connect Gateway

    クラウド側のインターフェース仕様に合わせて簡単・セキュアに接続いただけるゲートウェイサービスです。セキュアなIoT通信をスモールスタートから実現できます。

  • IoT Connect Mobile® Type S

    IoT Connect Mobile® Type S

    1枚のSIMで世界196の国と地域で利用可能。日本でもグローバルでも最適なデータ通信料金を実現。フルMVNOならではの柔軟性・拡張性。

  • ドコモビジネスのIoT総合サイト

    ドコモビジネスのIoT総合サイト

    ドコモビジネスのIoTサービス&ソリューションや導入事例をご紹介しています。IoTにドコモビジネスのアセットを組み合わせて、お客さまのビジネスに無限大の可能性を提供します。

このページのトップへ