差分表示


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

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

GPSで取得できる楕円体高から標高を求めるために,今回は&link(EGM96のジオイドモデル,http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html) によるジオイド高を使いました.
標高への換算といっても計算自体は簡単で,
--(
標高 = 楕円体高さ(getAltitudeの値) - その位置のジオイド高(今回はEGM96)
--)
という引き算です.
**使ったデータ
HT-03AのGPS情報を収集するプログラムを作成し,尾瀬近辺での徒歩およびバスの中から適宜動かして,SDカードにデータを記録したものを使いました.
収集したのは以下の4データで,普通に上記Locationクラスから取得したものです.
-緯度 (latitude)
-経度 (longtitude)
-高度 (altitude)
-精度 (accuracy.単位メートル)

精度(accuracy)が100m以上だったデータは,破棄しており,使用した収集点は38点になります.
**結果
***標高値のグラフ
&ref(gps_alt1.png,100%,left)

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

このように,見た感じまあまあですが,もう少し詳しく見るために差分のグラフを出してみます.
***正しい標高との標高差のグラフ
&ref(gps_alt2.png,100%,left)

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

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

***使用した生データ
,ID,緯度,経度,altitude,accuracy,ジオイド高(EGM96),地形図の標高(5m丸め),GPS標高,SRTM3標高
,1,36.679028,139.00003,402,48,42.756,375,359,378
,2,36.76991,139.22627,847,32,43.033,815,804,811
,3,36.769936,139.22633,866,12,43.033,815,823,812
,4,36.876915,139.3076,1229,8,43.143,1195,1186,1205
,5,36.88748,139.30357,1339,8,43.144,1280,1296,1292
,6,36.893963,139.30048,1390,32,43.143,1330,1347,1336
,7,36.893963,139.30046,1390,16,43.143,1330,1347,1337
,8,36.895473,139.29723,1406,12,43.142,1365,1363,1374
,9,36.907715,139.29689,1547,12,43.139,1510,1504,1521
,10,36.910282,139.29926,1637,24,43.139,1595,1594,1613
,11,36.910263,139.2992,1632,12,43.139,1590,1589,1612
,12,36.915928,139.30469,1819,96,43.139,1755,1776,1761
,13,36.91592,139.30469,1813,32,43.139,1755,1770,1761
,14,36.919647,139.30862,1711,24,43.139,1665,1668,1675
,15,36.92677,139.31616,1689,24,43.137,1670,1646,1673
,16,36.93099,139.31775,1715,12,43.135,1663,1672,1667
,17,36.93426,139.3189,1701,16,43.134,1655,1658,1672
,18,36.93623,139.32083,1710,24,43.133,1655,1667,1672
,19,36.942184,139.32924,1815,16,43.131,1770,1772,1769
,20,36.94671,139.33302,1778,16,43.128,1735,1735,1769
,21,36.95943,139.31209,1602,12,43.109,1535,1559,1550
,22,36.975807,139.30879,1515,96,43.086,1465,1472,1475
,23,36.98332,139.30484,1549,32,43.072,1505,1506,1507
,24,36.98179,139.331,1370,24,43.089,1345,1327,1353
,25,36.98586,139.33647,1200,64,43.085,1155,1157,1166
,26,36.988297,139.35233,1108,48,43.086,1065,1065,1067
,27,37.010586,139.37648,1020,48,43.06,970,977,981
,28,37.011826,139.3777,1020,64,43.059,965,977,973
,29,37.120148,139.45813,715,12,42.852,675,672,680
,30,37.14451,139.48863,691,16,42.792,625,648,621
,31,37.116676,139.51144,682,64,42.859,645,639,654
,32,37.105717,139.52028,706,96,42.88,675,663,666
,33,37.105145,139.52075,707,32,42.881,675,664,666
,34,37.086636,139.5448,752,24,42.905,705,709,703
,35,37.091347,139.56667,801,64,42.885,740,758,750
,36,37.096786,139.58954,795,24,42.861,745,752,751
,37,37.06807,139.6177,861,48,42.874,825,818,826
,38,37.08274,139.66312,866,96,42.813,845,823,862
**余談 (mytracks)
AndroidでGPSの高度を記録できるアプリってMy Tracksしか知らないのですが,
MyTracksが記録しているのは,GPSから取得した生の高度値(= 楕円体高さ)です.
なので日本だと,標高から40数メートル程度ずれているはずです.
**余談2 (GPSTest)
GPS Testの設定を見ると,「Adjust altitude」という項目がありました.

&ref(gps_alt3.png,100%,left)

説明によると,これをオンにすればジオイド高で補正できるようです.すばらしい
説明によると,これをオンにすればジオイド高で補正できるようです.すばらしい,GPS Test.
**参考
-&link(GPS StatusのFAQ,http://eclipsim.com/gpsstatus/) - AndroidのGPS・地磁気センサーのFAQ的な内容が,コンパクトにまとまっています
-&link(Android Forums - GPS elevation question,http://androidcommunity.com/forums/227960-post4.html) - ハンドヘルド型GPSとAndroid端末の違いについて


© 2022 KMIソフトウェア