LoginSignup
4
1

More than 1 year has passed since last update.

AmazonTimestreamの位置情報データをGrafana Geomapで表示する

Last updated at Posted at 2023-01-31

はじめに

SORACOMのGPSマルチユニットをユーザーガイドに従って操作するとLagoon上に簡単に地図上に表示できます

お手軽で良いのですがLagoonのベースとなっているGrafanaではより多くの機能があり
例えば航空写真をベースマップにしたいと思った時には本家のGrafanaを使いたくなります
そのためにはまずデータを蓄積する時系列データベースが必要です

そこで下記記事を見てsoracom Funnel を利用してAWS Timestreamへ送信する方法を知ったのでそこから先のGrafanaへの連携方法を書きたいと思います

AWS Timestream にデータを蓄積

SORACOM GPSマルチユニットで取得した情報をAWS Timestreamへ送信させる

この記事の通りにするとsoracom Funnel -> AWS IoT core -> AWS Timestream と送信できます

Grafana で可視化

この記事を参考に進めていきます

Amazon TimestreamのデータをGrafanaで可視化してみた

Grafana インストール

Grafanaをインストール方法はいつくかあり
・Grafana Cloud で
・ローカルPCに(例えばDockerで)
・自宅ネットワーク内サーバーに(例えばラズパイに)
・クラウド上のサーバーに(例えばAWS EC2に)
自宅PCだけ見るのか、外出先のスマホでも見たいのか使用用途にあったものを選びます。
今回は手軽なGrafana Cloud を使ってみます

アカウントを作り
はじめにAmazon Timestream用のプラグインを追加します

ログイン後左下の歯車 [Configuration]-[Data sources] Amazon Timestream を検索して追加

スクリーンショット 2023-01-31 125604.png

スクリーンショット 2023-01-31 125657.png

設定画面
スクリーンショット 2023-01-31 154514.png

Connection Details
Authentication Provider Access & secret key

Access Key ID
Secret Access Key
ここを参考に IAM から AccessKeyを入手し入力

Assume Role
External ID
オプション。今回は省略

Endpoint 
Default Region

エンドポイントを作成します

リージョンは東京(ap-northeast-1)の場合
AWS-CLIで以下を入力します
ローカルでAWS-CLIの環境がない場合はAWS CloudShellがお手軽です

aws timestream-write describe-endpoints --region ap-northeast-1

返ってきた

{
    "Endpoints": [
        {
            "Address": "ingest-cell1.timestream.ap-northeast-1.amazonaws.com",
            "CachePeriodInMinutes": 1440
        }
    ]
}

ここのcell1 のところをメモして(数字は変わります)

https://query-{cell}.timestream.{region}.amazonaws.com

に埋め込みます。この例では

https://query-cell1.timestream.ap-northeast-1.amazonaws.com 

がエンドポイントになります

Save&Test を押して Connection success が出れば成功
試しに Explore を押して中身を見てみます

  • Database - Table を選択して
    上位10のクエリを実行。 \$__database  \$__table はマクロでデフォルトの名前が入ります
SELECT * FROM $__database.$__table LIMIT 10

simId timestamp measure_name time measure_value::double
8981100001234567890 1675076917047 humi 2023-01-30 20:08:37 56.2
8981100001234567890 1675076917047 lat 2023-01-30 20:08:37 35.0
8981100001234567890 1675076917047 lon 2023-01-30 20:08:37 137
8981100001234567890 1675076917047 temp 2023-01-30 20:08:37 22

これを位置情報として利用するために下のようなテーブルに変換します

timestamp simId latitude longitude temp humi
1675140696976 8981100001234567890 35.0 137 14.2 31.7
1675140072037 8981100001234567890 35.0 137 15.8 30.2
1675139471888 8981100001234567890 35.0 137 16.9 31.9

内容は省略しますが 拾ってきてコピペしただけなので  結論から言うと以下のクエリを実行します

SELECT 
timestamp, simId,
MAX(CASE WHEN measure_name = 'lat' THEN measure_value::double END) AS latitude ,
MAX(CASE WHEN measure_name = 'lon' THEN measure_value::double END) AS longitude,
MAX(CASE WHEN measure_name = 'temp' THEN measure_value::double END) AS temp,
MAX(CASE WHEN measure_name = 'humi' THEN measure_value::double END) AS humi
FROM $__database.$__table
GROUP BY timestamp,simId
ORDER BY timestamp DESC
LIMIT 10

Geomapで表示

では早速ダッシュボードを作ります

  • Add panel

[Query]
Data source でAmazon timestream を選んで先程のクエリを入力

ここでtimestampを日時表示に変え、また一部のデータが欠損してることがあるので除外します
[Transform]
スクリーンショット 2023-01-31 160319.png

  • Convert field type
    Field timestamp as Numeric
    Field timestamp as Time

  • Filter data by values
    Filter type = Include
    Conditions = Match all
    Field latitude Match Is not null Value
    Field longitude Match Is not null Value

右上のGeomapを選択
スクリーンショット 2023-01-31 160409.png

Basemap layer

スクリーンショット 2023-01-31 160507.png

-XYZ Tile Layout
--URL template

https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg

国土地理院がXYZタイルを提供しており出典を表示すれば無償で商用でも利用できます

Map layers

スクリーンショット 2023-01-31 160540.png

Layer type Markers
Data Query: A
Location Mode Auto
今回はカラム名を latitude, longitude にしてあるので自動で合わせてくれます
Symbol-Color
Temp を選択
Text label
Source= Field
Field = temp
X offset 20

Standard options
Color scheme = Blue-Yellow-Red(bu Value)

その他タイトル名や単位等を修飾するとこのような地図が出来上がります
(GPSの誤差が結構あるな・・・)
スクリーンショット 2023-01-31 161410.png

以上です。なおこれはSORACOMとAWSの有料サービスを利用しているのでテストが終わったら片付けておきましょう。

独自のgeojsonファイルを表示する (2023/3/8追記)

 自分で作成したgeojsonファイルのポリゴンをマップレイヤーに追加するにはlinuxにインストールしたgrafanaの場合以下のディレクトリにファイルを置くことで

/usr/share/grafana/public/maps/ 

Layer Type > geojson
Geojson URL > ドロップダウンリストに表示されます

スクリーンショット 2023-03-08 174856.png

なおgrafanaCloudではこの方法ではできません

Filesystem access for grafana cloud
https://community.grafana.com/t/filesystem-access-for-grafana-cloud/82430/2

soracom garafana v3 でGeomapが使えるようになりました(2023.4.21追記)

なのでAmazon Timestream を使わなくても地理院地図を背景にすることができるようになりました

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1