1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

スマホで取得した位置情報から滞在判定をするには

Posted at

スマホで位置情報を取得すると

緯度/経度(lat/long)が取得される。

lat: 35.67750, lon: 139.76610

これを連続で取得すると

[
  {lat: 35.67750, lon: 139.76610},
  {lat: 35.67748, lon: 139.76618},
  {lat: 35.67747, lon: 139.76621},
  {lat: 35.67745, lon: 139.76631},
  {lat: 35.67740, lon: 139.76653},
  {lat: 35.67736, lon: 139.76674},
  {lat: 35.67735, lon: 139.76679},
  {lat: 35.67732, lon: 139.76697},
  {lat: 35.67728, lon: 139.76717},
  {lat: 35.67724, lon: 139.76737},
  {lat: 35.67709, lon: 139.76779},
  {lat: 35.67708, lon: 139.76779}
]

こんな感じになる。

しかし、これだけだと、ただの位置情報の羅列。
滞在した箇所と、移動していた箇所を整理したい、

考え方

上記で取得できる位置情報データをイメージにすると、こんな感じ。
image.png

なんとなく視覚的にすると、この辺りが滞在していたのかな?と考えられる。
image.png

  • 判定に使う情報
    • 緯度経度(lat/long)
    • 取得時間(timestamp)

取得時間をつけると
image.png

ここも滞在していたことがわかる
image.png

アプリに組み込むときに気をつけること

スマホで取得する位置情報は急に、実際の滞在場所ではない場所を記録する。

スマホは、GPSやWifiなどを利用して位置情報を取得するのですが、建物の中外や、Wifiが切り替わるタイミングなどで急に外れたポイントを記録します。

対応方法
緯度経度(lat/long)取得時間(timestamp) から移動速度を取得して、急に 200km/h とかになると外れ値として、判定から除外する。
前後の速度と比較して、10倍以上になると、大体外れ値でした。

スマホが休んで、位置情報を記録しなくなる。

バックグラウンドで取得しているときに、位置情報が取得されていないポイントが複数箇所存在。
AndroidとiPhoneでも記録のタイミングや休みポイントが異なります。

対応方法
位置情報が取れていない場合は、ほとんど諦めるしかないです。
写真などの位置情報から補間しています。

バッテリー消費が激しい

位置情報を高精度で取得し続けると、バッテリー消費は激しくなります。

対応方法
用途に応じて、取得する精度を調整することでバッテリー消費を抑えることができます。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?