データーを登録する際、d1からd8の8種類のデーターに、位置情報が付加できます(2017年4月からできるようになりました)。
Arduinoやmbedでのデーター登録
ArduinoやmbedのC++では9番目、10番目の情報として緯度、経度を渡します。
double temp, humid, lat, lng; char tempbuf[12], humidbuf[12], latbuf[12], lngbuf[12]; // センサーなどの情報を取得 (例えばtempに温度、humidに湿度を設定) dtostrf(temp, 3, 1, tempbuf); ambient.set(1, tempbuf); // 1番目のデーターとして温度をセット dtostrf(humid, 3, 1, humidbuf); ambient.set(2, humidbuf); // 2番目のデーターとして湿度をセット // GPSなどで位置情報を取得し、lat(緯度)、lng(経度)に設定 dtostrf(lat, 11, 7, latbuf); ambient.set(9, latbuf); // 9番目のデーターとして緯度をセット dtostrf(lng, 11, 7, lngbuf); ambient.set(10, lngbuf); // 10番目のデーターとして経度をセット ambient.send();
位置情報付きデーターの可視化
Ambientで位置情報付きデーターを可視化する時は、チャート設定画面のグラフ種類で「地図」を選択します。グラフサイズ、表示件数、日付指定などは今までと同じように選択できます。
するとチャート画面は次のように、地図が表示され、測定点にマーカーが打たれた状態になります。
それぞれのマーカーをクリックすると、その地点の測定データーが表示されます。チャネル設定画面でd1からd8に「温度」「湿度」などのデーター名を設定しておくと、地図上のマーカーをクリックした時も設定したデーター名とその値が表示されて分かりやすいと思います。設定がない場合はd1、d2などと表示されます。
チャート設定画面で折れ線グラフなどを選択すれば位置情報つきのデーターであっても今まで通り折れ線グラフで表示できます。
複数データー一括送信
位置情報の付いた複数データーを一括送信する時は、次のように緯度を”lat”、経度を”lng”というキーをつけて位置情報を渡します。
{ “writeKey” : “ライトキー”, “data” : [ {“created” : “YYYY-MM-DD HH:mm:ss.sss”, “d1” : 値, “d2” : 値, ..., "lat" : 緯度, "lng" : 経度}, {“created” : “YYYY-MM-DD HH:mm:ss.sss”, “d1” : 値, “d2” : 値, ..., "lat" : 緯度, "lng" : 経度}, ... {“created” : “YYYY-MM-DD HH:mm:ss.sss”, “d1” : 値, “d2” : 値, ..., "lat" : 緯度, "lng" : 経度} ] }
node.js、Pythonで位置情報付きデーターを扱う
node.jsで位置情報付きデーターを送る際は、次のようにデーターにlat、lngをキーにして緯度経度情報を指定します。
var data = {d1: 数値, d2: 数値, lat: 緯度, lng: 経度}; ambient.send(data, callback(err, res, body));
Pythonでの送信もほぼ同様です。
r = am.send({'created': 'YYYY-MM-DD HH:mm:ss.sss', 'd1': 数値, 'd2': 数値, 'lat': 緯度, 'lng': 経度})
Pythonで位置情報付きデーターを読み込むと、次のような辞書形式のリストが返されます。
[ {'created': '2017-02-25T15:01:48.000Z', 'd1': 数値, 'd2': 数値, ..., 'loc': [経度, 緯度]}, {'created': '2017-02-25T15:06:47.000Z', 'd1': 数値, 'd2': 数値, ..., 'loc': [経度, 緯度]}, ... ]
位置情報は’loc’というキーで[経度, 緯度]というリストが返されます。リストの順番は経度、緯度の順番なのでご注意ください。