• 締切済み

スマホ(android)のGPS誤差

アプリ開発でGPSを用いるのでandroid端末を使ってGPSから緯度経度、高度の測定を行ったのですが、水平、垂直ともに精度が平均50mずれます。 開発といっても個人で作っているだけです。 高精度モードというものがあるのでそれを用いた結果となります。GPSのみの計測であると3000mずれることもあります。 誤差を修正しようと思い 1mあたり緯度 : 0.000008983148616 1mあたり経度:0.000010966382364を得られた精度に掛け算し端末のデバイスの座標から引き算を行ったのですが、これはおそらくダメです(理由は後述) 誤差修正のよい方法はありますか? androidの高精度モードに詳しい方のみで結構ですが、高精度モードでは高度がとれない理由を教えてください。 ------------------------------------------------------------------------------------------------------------------------ 計測にはUnityというソフトでC#のプログラムを用いています。 using UnityEngine; using System.Collections; public class TestLocationService : MonoBehaviour { IEnumerator Start() { // First, check if user has location service enabled if (!Input.location.isEnabledByUser) yield break; // Start service before querying location Input.location.Start(); // Wait until service initializes int maxWait = 20; while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0) { yield return new WaitForSeconds(1); maxWait--; } // Service didn't initialize in 20 seconds if (maxWait < 1) { print("Timed out"); yield break; } // Connection has failed if (Input.location.status == LocationServiceStatus.Failed) { print("Unable to determine device location"); yield break; } else { // Access granted and location value could be retrieved print("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp); } // Stop service if there is no need to query location updates continuously Input.location.Stop(); } } ------------------------------------------------------------------------------------------------------------------------ Input.location.lastData.latitude:緯度 Input.location.lastData.longitude:経度 Input.location.lastData.altitude:高度 Input.location.lastData.horizontalAccuracy :水平方向精度 先ほど述べた誤差修正方法ですが、horizontalAccuracyが50mのときhorizontalAccuracy * 0.000008983148616 , horizontalAccuracy * 0.000010966382364を求め現在地から減算しているのですが、現在地すらずれているのでおそらくこの方法はダメです

みんなの回答

noname#252929
noname#252929
回答No.2

>誤差修正のよい方法はありますか? ありません。 そもそもGPSは、誤差が含まれて居るからです。 誤差が含まれて居るものを、いくら合わせようとしても無理な話です。 ただ、それをなくす為に、空港などでは、D-GPSの技術を使っています。 固定された定点でGPSを受信して、そのGPSのデータと、固定されて居るばしょでの誤差情報を別の通信手段を持って相手に伝え、それで誤差を修正するというものです。 17年くらい前の車の純正GPSなどでは採用されて居るものもありましたが、現在では、D-GPSの情報も提供が終了されましたので、それを使うこともできなくなりました。 誤差情報は、いつも一定ではなく、変化します。(わざと誤差を作っています。) なので、固定数値を入れても意味がありません。 どうしてもというのであれば、固定地点で、D-GSPの情報を生成して、そのデータを反映させる方法しかありません。 カーナビなどは、マップマッチングという方法を使って、この道であろう。という内容と、曲がり角などの情報などから、表示上の位置を修正してこのへんだろうという表示を行なっていますので、正しいように見える内容になっていたりします。 スマホなどの場合、その辺を使わないものは、残念ながら、誤差は対応できないとなってしまいます。 「みちびき」などに対応してくれれば、精度は上がるんですけどね。

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

GPSは衛星の電波をキャッチできないと、精度が下がります。 見通しの良い屋外であれば10m以下の精度で高度も取れますが、屋内やビルの谷間などでは精度が数100mで高度は取れないということもあります。 場所を変えて試してみてはいかがでしょうか。