HT-03A内蔵のGPSでは,緯度,経度,高度を取得できます.果たして高度はどの程度の精度で取れるのか,標高に換算して実地で調べてみました.(Android SDK 1.6)

HT-03AのGPS高度の検証

基礎知識

GPSから高度を取得する場合,普通にAndroidのAPIを使って
LocationListener#onLocationChanged(Location location)
で渡ってくるlocationから,以下のようにgetAltitude()メソッドで取得できます.
float alt = (float)location.getAltitude();
ただしこの高度は,地球の形を近似した楕円体からの高さであり,海面からの高さ(標高)とは異なるので注意が必要です.

GPSで取得できる楕円体高から標高を求めるために,今回はEGM96のジオイドモデル によるジオイド高を使いました. 標高への換算といっても計算自体は簡単で,

標高 = 楕円体高さ(getAltitudeの値) - その位置のジオイド高(今回はEGM96)
という引き算です.

使ったデータ

HT-03AのGPS情報を収集するプログラムを作成し,尾瀬近辺での徒歩およびバスの中から適宜動かして,SDカードにデータを記録したものを使いました. 収集したのは以下の4データで,普通に上記Locationクラスから取得したものです.
  • 緯度 (latitude)
  • 経度 (longtitude)
  • 高度 (altitude)
  • 精度 (accuracy.単位メートル)

精度(accuracy)が100m以上だったデータは,破棄しており,使用した収集点は38点になります.

結果

標高値のグラフ

gps_alt1.png

凡例について説明を加えると,

  • 正しい標高 - 国土地理院の2万5000分の1地形図から目視で読み取った標高です.等高線は10m間隔なので5m単位に丸めています
  • GPS(EGM96補正) - HT-03AのGPSで取得した高度から,その位置のジオイド高を引いた値です.その位置の標高になります(なるはずです)
  • SRTM3 - その位置のSRTM3データによる標高値です.GPSとは関係ないのですが,標高を求める手段の1つとして比較のために入れています

このように,見た感じまあまあですが,もう少し詳しく見るために差分のグラフを出してみます.

正しい標高との標高差のグラフ

gps_alt2.png

ん〜,20mぐらいのずれはちょくちょくあるな,という感じです.

あと標高差について,統計的な数値を出してみるとこうでした.SRTM3の方がGPSより若干精度は良いようです.

標高差の統計値GPSSRTM3
分散152124
標準偏差12.311.2

使用した生データ

ID緯度経度altitudeaccuracyジオイド高(EGM96)地形図の標高(5m丸め)GPS標高SRTM3標高
136.679028139.000034024842.756375359378
236.76991139.226278473243.033815804811
336.769936139.226338661243.033815823812
436.876915139.30761229843.143119511861205
536.88748139.303571339843.144128012961292
636.893963139.3004813903243.143133013471336
736.893963139.3004613901643.143133013471337
836.895473139.2972314061243.142136513631374
936.907715139.2968915471243.139151015041521
1036.910282139.2992616372443.139159515941613
1136.910263139.299216321243.139159015891612
1236.915928139.3046918199643.139175517761761
1336.91592139.3046918133243.139175517701761
1436.919647139.3086217112443.139166516681675
1536.92677139.3161616892443.137167016461673
1636.93099139.3177517151243.135166316721667
1736.93426139.318917011643.134165516581672
1836.93623139.3208317102443.133165516671672
1936.942184139.3292418151643.131177017721769
2036.94671139.3330217781643.128173517351769
2136.95943139.3120916021243.109153515591550
2236.975807139.3087915159643.086146514721475
2336.98332139.3048415493243.072150515061507
2436.98179139.33113702443.089134513271353
2536.98586139.3364712006443.085115511571166
2636.988297139.3523311084843.086106510651067
2737.010586139.3764810204843.06970977981
2837.011826139.377710206443.059965977973
2937.120148139.458137151242.852675672680
3037.14451139.488636911642.792625648621
3137.116676139.511446826442.859645639654
3237.105717139.520287069642.88675663666
3337.105145139.520757073242.881675664666
3437.086636139.54487522442.905705709703
3537.091347139.566678016442.885740758750
3637.096786139.589547952442.861745752751
3737.06807139.61778614842.874825818826
3837.08274139.663128669642.813845823862

余談 (mytracks)

AndroidでGPSの高度を記録できるアプリってMy Tracksしか知らないのですが, MyTracksが記録しているのは,GPSから取得した生の高度値(= 楕円体高さ)です. なので日本だと,標高から40数メートル程度ずれているはずです.

余談2 (GPSTest)

GPS Testの設定を見ると,「Adjust altitude」という項目がありました.

gps_alt3.png

説明によると,これをオンにすればジオイド高で補正できるようです.すばらしい,GPS Test.

参考

kamolandをフォローしましょう


© 2016 KMIソフトウェア