スマートフォンのGNSSは「だいたい合っている」という感覚で使われることが多い。地図アプリで現在地を確認する分にはそれで十分だが、ログを取って後から軌跡を見ると、環境によって精度が大きくばらつくことに気づく。
本記事では、**iPhone(L1単波)とPixel 8(L1+L5デュアル周波数)**を同時に使い、以下の4つの環境でGNSS測位精度を実測・比較した。
| 環境 | 場所 | 測定方法 |
|---|---|---|
| ① 開放空間 | 東扇島東公園(川崎港埋立地) | 歩行・定点 |
| ② 都市渓谷 | 横浜駅東口(高架+高層ビル) | 歩行・定点 |
| ③ 自動車走行 | 川崎一般道→首都高湾岸線→大黒PA | 走行 |
| ④ 電車移動 | 東海道線・京急本線 各区間 | 乗車 |
測定データの取得には ITQ GeoLogger(Google Play) を使用した。GPX / CSV形式でのログ出力と1秒サンプリングにより、各端末の挙動を詳細に記録している。
結論を先に示すと、精度を決めるのは端末スペック(L1/L5)よりも遮蔽環境である。開放空間では両端末ともほぼ同等の精度を示すが、都市渓谷ではL1+L5の優位性が標高精度に顕著に現れる。また、AndroidとiOSで標高の基準(楕円体高 vs MSL)が異なる点は、GNSSアプリ開発者にとって重要な実装上の注意点となる。
測定方法
使用端末
| 端末 | OS | GNSS周波数帯 | 使用セッション |
|---|---|---|---|
| iPhone 12 Pro | iOS | L1単波 | 環境①②③・京急各区間 |
| iPhone 13 Pro | iOS | L1単波 | 環境④(東海道線 川崎→新橋) |
| Pixel 8 | Android 14 | L1+L5デュアル周波数 | 全セッション |
2台を同時に起動し、同一ルート・同一タイミングでログを取得した。セッションによっては開始時刻差が数秒以内に収まり、京急区間では0秒差の完全同期を達成した。
測定アプリ
ITQ GeoLogger(Google Play)を使用した。主な記録条件は以下の通り。
- サンプリング間隔:1秒(両端末共通)
- 出力形式:GPX / CSV
- 記録項目:緯度・経度・標高・水平精度(hAcc)・速度・タイムスタンプ
測定種別
定点測定:同一地点に固定し、1分間以上ログを取得。両端末の中央値間距離(系統誤差)および内部のバラつき(精度)を別項に評価できる。
歩行測定:一定ルートを歩き、軌跡のなめらかさや水平偏差を目視化。
走行・乗車測定:連続ログを取得し、環境変化(トンネル・橋梁・ビル密集地)前後の挙動を観測。
評価指標
主な評価指標はトラック間偏差である。Pixel 8の各点に対してiPhoneの最近傍点との距離を算出し、中央値・95パーセンタイル・最大値で評価する。定点測定では「中央値間距離」を系統誤差の指標とする。
標高についてはノイズ(標準偏差)と絶対値の2軸で評価する。iOSのCore LocationはMSL(海抜0m基準)、AndroidのLocation.getAltitude()はWGS84楕円体高を返すため、同一地点でも値が異なる。比較に際してはこの差異を明示的に示す。
環境①:東扇島東公園(開放空間)
川崎港の埋立地に位置する東扇島東公園は、周囲に高層建物がなく天空が大きく開けた現場である。多衛星捕捉が容易な測定地点であり、他の環境とのベースラインとして位置づける。
2026-04-13に歩行測定(3セッション)および定点測定(2セッション)を実施した。
歩行測定結果
全3セッション・全ログ点でトラック間偏差が5m以内に収まった。14分超・約1.2kmの連続歩行でも最大値は4.1mと安定している。
| セッション | 中央値 | 95%ile | 最大 | >5m外れ値 |
|---|---|---|---|---|
| A(15:18) | 1.98 m | 3.11 m | 3.89 m | 0点 |
| B(15:27) | 1.02 m | 3.15 m | 3.87 m | 0点 |
| C(15:33) | 1.09 m | 2.93 m | 4.13 m | 0点 |
if(!window.Chart){var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}
#gnss-higashiohgishima-park-open-sky-gnss *, #gnss-higashiohgishima-park-open-sky-gnss *::before, #gnss-higashiohgishima-park-open-sky-gnss *::after {box-sizing:border-box;margin:0;padding:0} #gnss-higashiohgishima-park-open-sky-gnss {font-family:-apple-system,BlinkMacSystemFont,“Segoe UI”,sans-serif;background:#fff;color:#1a1a1a;padding:24px;max-width:900px;margin:0 auto} #gnss-higashiohgishima-park-open-sky-gnss h1 {font-size:17px;font-weight:500;margin-bottom:4px} .sub{font-size:12px;color:#888;margin-bottom:16px} .sg3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px} .sc{background:#f5f5f3;border-radius:8px;padding:11px 13px} .sl{font-size:11px;color:#888;margin-bottom:5px;font-weight:500} .dv{font-size:22px;font-weight:500;color:#1d9e75} .dl{font-size:10px;color:#aaa;margin-top:2px} .legend{display:flex;gap:16px;margin-bottom:8px;font-size:12px;color:#555} .legend span{display:flex;align-items:center;gap:5px} .lsq{width:10px;height:10px;border-radius:2px;display:inline-block} .st{font-size:13px;font-weight:500;color:#555;margin:14px 0 5px} .cw{position:relative;width:100%} .two{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px} .it{width:100%;border-collapse:collapse;font-size:12px} .it td{padding:3px 6px 3px 0;color:#555;border-bottom:0.5px solid rgba(0,0,0,0.08)} .it td:first-child{color:#999;width:45%} .it td b{color:#1a1a1a;font-weight:500} .hl{background:#ecfdf5;border-left:3px solid #1d9e75;border-radius:4px;padding:8px 12px;font-size:11px;color:#065f46;margin-bottom:14px} .di{color:#3266ad}.dp{color:#1d9e75} #gnss-higashiohgishima-park-open-sky-gnss canvas {display:block;height:100%!important;width:100%!important}
東扇島東公園 開放空間 歩行測定 GNSS精度比較
2026-04-13 15:18〜15:47 JST · 3セッション · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger · 川崎港埋立地・遮蔽物なし
全3セッション・全ログ点で5m超の偏差がゼロ。 14分超・1.2km歩行のセッションCでも最大偏差4.13m。開放空間での両端末の追従精度は実用上ほぼ完璧。
15:18 歩行A(3.1分)
1.98 m
トラック中央値 / 最大3.89m / >5m=0点
189/198pts・開始時刻差0秒
15:27 歩行B(2.8分)
1.02 m
トラック中央値 / 最大3.87m / >5m=0点
171/171pts・開始時刻差1秒
15:33 歩行C(14.4分・長距離)
1.09 m
トラック中央値 / 最大4.13m / >5m=0点
870/866pts・開始時刻差1秒
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
全測定環境 トラック間偏差 95%ile 比較
標高ノイズ(std)— 全環境中最小
| 15:18 iPhone std / Pixel std | 0.60 m / 1.28 m |
| 15:27 iPhone std / Pixel std | 0.34 m / 0.90 m |
| 15:33 iPhone std / Pixel std | 1.19 m / 0.87 m(ほぼ同等) |
| iPhone 標高平均 | 4.5〜6.5 m(実際の海抜に一致) |
| Pixel 標高オフセット | +31〜32 m(楕円体高/MSL差) |
Pixel 標高std 全環境比較
(function waitChart(){if(typeof Chart===“undefined”){setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; new Chart(document.getElementById(‘allenv’),{ type:‘bar’, data:{ labels:[‘東扇島A’,‘東扇島B’,‘東扇島C’,‘京急電車’,‘横浜→川崎’,‘川崎→新橋’,‘一般道\n0-6km’,‘都市渓谷A’,‘都市渓谷B’,‘都市渓谷C’], datasets:[{label:‘95%ile トラック間偏差 (m)’, data:[3.11,3.15,2.93,22.1,24.5,41.3,5.6,11.8,42.1,30.0], backgroundColor:[‘#1d9e7588’,‘#1d9e7588’,‘#1d9e7588’,‘#3266ad88’,‘#3266ad88’,‘#3266ad88’,‘#ba751788’,‘#88780088’,‘#e24b4a88’,‘#e05a3088’], borderColor:[‘#1d9e75’,‘#1d9e75’,‘#1d9e75’,‘#3266ad’,‘#3266ad’,‘#3266ad’,‘#ba7517’,‘#888780’,‘#e24b4a’,‘#e05a30’], borderWidth:1}] }, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:9},color:tc},grid:{display:false}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘95%ile偏差 (m)‘,font:{size:11},color:tc}}}} }); new Chart(document.getElementById(‘elenv’),{ type:‘bar’, data:{ labels:[‘開放\n東扇A’,‘開放\n東扇B’,‘開放\n東扇C’,‘電車\n京急’,‘電車\n横浜’,‘電車\n川崎’,‘都市\n歩行A’,‘都市\n歩行B’,‘都市\n歩行C’], datasets:[{label:‘Pixel 標高 std (m)’, data:[1.28,0.90,0.87,8.69,9.28,7.88,4.71,6.87,14.99], backgroundColor:[‘#1d9e7588’,‘#1d9e7588’,‘#1d9e7588’,‘#3266ad88’,‘#3266ad88’,‘#3266ad88’,‘#88780088’,‘#ba751788’,‘#e24b4a88’], borderColor:[‘#1d9e75’,‘#1d9e75’,‘#1d9e75’,‘#3266ad’,‘#3266ad’,‘#3266ad’,‘#888780’,‘#ba7517’,‘#e24b4a’],borderWidth:1}] }, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:9},color:tc},grid:{display:false}}, y:{ticks:{font:{size:10},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘Pixel 標高 std (m)‘,font:{size:11},color:tc}}}} }); })();
定点測定結果
同一地点に静止した状態での両端末中央値間距離は3.0〜3.7 mである。後述する都市渓谷(67.5 m)の約18分の1であり、開放空間におけるマルチパスの少なさを数値で確認できる。内部のバラつきも両端末とも2m以内、>5m外れ値はゼロだった。
if(!window.Chart){var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}
#gnss-higashiohgishima-stationary-gnss *, #gnss-higashiohgishima-stationary-gnss *::before, #gnss-higashiohgishima-stationary-gnss *::after {box-sizing:border-box;margin:0;padding:0} #gnss-higashiohgishima-stationary-gnss {font-family:-apple-system,BlinkMacSystemFont,“Segoe UI”,sans-serif;background:#fff;color:#1a1a1a;padding:24px;max-width:900px;margin:0 auto} #gnss-higashiohgishima-stationary-gnss h1 {font-size:17px;font-weight:500;margin-bottom:4px} .sub{font-size:12px;color:#888;margin-bottom:16px} .two{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px} .sc{background:#f5f5f3;border-radius:8px;padding:12px 14px} .sl{font-size:11px;color:#888;margin-bottom:6px;font-weight:500} .it{width:100%;border-collapse:collapse;font-size:12px} .it td{padding:3px 6px 3px 0;color:#555;border-bottom:0.5px solid rgba(0,0,0,0.08)} .it td:first-child{color:#999;width:52%} .it td b{color:#1a1a1a;font-weight:500} .di{color:#3266ad}.dp{color:#1d9e75} .legend{display:flex;gap:16px;margin-bottom:8px;font-size:12px;color:#555} .legend span{display:flex;align-items:center;gap:5px} .lsq{width:10px;height:10px;border-radius:2px;display:inline-block} .st{font-size:13px;font-weight:500;color:#555;margin:14px 0 5px} .cw{position:relative;width:100%} .hl{background:#ecfdf5;border-left:3px solid #1d9e75;border-radius:4px;padding:8px 12px;font-size:11px;color:#065f46;margin-top:8px} .charts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-top:14px} #gnss-higashiohgishima-stationary-gnss canvas {display:block;height:100%!important;width:100%!important}
東扇島東公園 開放空間 定点測定 GNSS精度比較
2026-04-13 15:24〜15:32 JST · 2セッション · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger · 実際の標高≈0〜5m
15:24 定点A — 2.0分(122秒)
| 系統誤差(中央値間距離) | 3.69 m |
| iPhone 散らばり mean | 0.58 m(前半1.01→後半0.17m) |
| Pixel 散らばり mean | 0.48 m |
| iPhone 95%ile / max | 1.76m / 2.07m |
| Pixel 95%ile / max | 0.91m / 1.32m |
| >5m外れ値 | 0点(両端末) |
| iPhone 標高 mean / std | 5.95m / 0.756m |
| Pixel 標高 mean / std | 37.71m / 0.902m(+31.8m) |
15:30 定点B — 2.1分(126秒)
| 系統誤差(中央値間距離) | 3.00 m |
| iPhone 散らばり mean | 0.81 m(前半1.17→後半0.45m) |
| Pixel 散らばり mean | 0.31 m |
| iPhone 95%ile / max | 2.00m / 2.00m |
| Pixel 95%ile / max | 0.90m / 1.37m |
| >5m外れ値 | 0点(両端末) |
| iPhone 標高 mean / std | 4.64m / 0.346m(全測定中最小) |
| Pixel 標高 mean / std | 37.38m / 0.641m(+32.7m) |
開放空間での系統誤差は 3〜4m。都市渓谷(22m・68m)と比べて 6〜18倍改善。最大散らばりも2m以内。iPhoneの標高std 0.346mは全測定中最小で、都市渓谷定点B(17.88m)との差は50倍。
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
系統誤差(都市渓谷 vs 開放空間)
水平散らばり mean(定点)
標高 std(定点・全環境)
(function waitChart(){if(typeof Chart===“undefined”){setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; new Chart(document.getElementById(‘os-sysc’),{ type:‘bar’, data:{labels:[‘都市渓谷A’,‘都市渓谷B’,‘開放空間A’,‘開放空間B’], datasets:[{label:‘系統誤差 (m)‘,data:[67.5,21.6,3.69,3.00], backgroundColor:[‘#e24b4a88’,‘#e05a3088’,‘#1d9e7588’,‘#1d9e7588’], borderColor:[‘#e24b4a’,‘#e05a30’,‘#1d9e75’,‘#1d9e75’],borderWidth:1.5}]}, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:10},color:tc},grid:{display:false}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘系統誤差 (m)‘,font:{size:11},color:tc}}}} }); new Chart(document.getElementById(‘scc’),{ type:‘bar’, data:{labels:[‘都市\n渓谷A’,‘都市\n渓谷B’,‘開放\n空間A’,‘開放\n空間B’], datasets:[ {label:‘iPhone 12 Pro’,data:[3.5,2.7,0.58,0.81],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1}, {label:‘Pixel 8’,data:[1.0,3.8,0.48,0.31],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1} ]}, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:10},color:tc},grid:{display:false}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘散らばり mean (m)‘,font:{size:11},color:tc}}}} }); new Chart(document.getElementById(‘os-elc’),{ type:‘bar’, data:{labels:[‘都市\n渓谷A’,‘都市\n渓谷B’,‘開放\n空間A’,‘開放\n空間B’], datasets:[ {label:‘iPhone 12 Pro’,data:[9.00,17.88,0.756,0.346],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1}, {label:‘Pixel 8’,data:[2.98,1.72,0.902,0.641],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1} ]}, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:10},color:tc},grid:{display:false}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘標高 std (m)‘,font:{size:11},color:tc}}}} }); })();
標高
iPhoneの標高平均値は4.5〜6.0 mで実際の海抜に近い値を示している。Pixel 8は同一地点で+31〜32 m高い値を記録する。川崎エリアのジオイド高(約36 m)と整合しており、Pixel 8はMSL補正なしの楕円体高を出力していることが確認できる。標高ノイズ(std)は両端末とも0.35〜0.90 mと全測定中最小値を記録し、開放空間での垂直精度の高さを示している。
考察
L1単波(iPhone)とL1+L5デュアル周波数(Pixel 8)の水平精度に、実用上意味のある差は認められない。開放空間では多衛星を上半天全域で捕捉できるため、L5のマルチパス耐性が発揮されるまでもなく両端末が充分な精度に収束する。一方、全環境を通じてPixel 8の標高が一貫して+31〜36 mのオフセットを持つ点は、アプリ開発時にLocation.getAltitude()の返り値の扱いを明示的に考慮する必要があることを示唆している。
環境②:横浜駅東口(都市渓谷)
横浜駅東口は首都高高架と高層ビル群が交錯する典型的な都市渓谷環境である。視界がビル壁面に大きく遮蔽され、マルチパス(ビル壁面からの反射信号)が発生しやすい。2026-04-09に歩行測定(3セッション)および定点測定(2セッション)を実施した。
歩行測定結果
セッションによって精度が大きく変動する。高層ビルに囲まれた区間では最大偏差が83 mに達した。
| セッション | 中央値 | 95%ile | 最大 | >50m外れ値 |
|---|---|---|---|---|
| A(15:31)開放区間あり | 1.6 m | 11.8 m | 27.3 m | 0点 |
| B(15:43)高層ビル区間 | 13.8 m | 42.1 m | 83.2 m | 4点 |
| C(15:49) | 8.4 m | 30.0 m | 34.8 m | 0点 |
if(!window.Chart){var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}
#gnss-yokohama-urban-canyon-gnss *, #gnss-yokohama-urban-canyon-gnss *::before, #gnss-yokohama-urban-canyon-gnss *::after {box-sizing:border-box;margin:0;padding:0} #gnss-yokohama-urban-canyon-gnss {font-family:-apple-system,BlinkMacSystemFont,“Segoe UI”,sans-serif;background:#fff;color:#1a1a1a;padding:24px;max-width:900px;margin:0 auto} #gnss-yokohama-urban-canyon-gnss h1 {font-size:17px;font-weight:500;margin-bottom:4px} .sub{font-size:12px;color:#888;margin-bottom:20px} .sg3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px} .sc{background:#f5f5f3;border-radius:8px;padding:11px 13px} .sl{font-size:11px;color:#888;margin-bottom:5px;font-weight:500} .dv{font-size:16px;font-weight:500} .di{color:#3266ad}.dp{color:#1d9e75} .dl{font-size:10px;color:#aaa} .legend{display:flex;gap:16px;margin-bottom:8px;font-size:12px;color:#555} .legend span{display:flex;align-items:center;gap:5px} .lsq{width:10px;height:10px;border-radius:2px;display:inline-block} .st{font-size:13px;font-weight:500;color:#555;margin:14px 0 5px} .cw{position:relative;width:100%} .two{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px} .it{width:100%;border-collapse:collapse;font-size:12px} .it td{padding:3px 6px 3px 0;color:#555;border-bottom:0.5px solid rgba(0,0,0,0.08)} .it td:first-child{color:#999;width:40%} .it td b{color:#1a1a1a;font-weight:500} .badge-g{display:inline-block;padding:2px 6px;border-radius:4px;font-size:10px;background:#ecfdf5;color:#065f46;margin-left:4px} .badge-r{display:inline-block;padding:2px 6px;border-radius:4px;font-size:10px;background:#fef2f2;color:#991b1b;margin-left:4px} .badge-w{display:inline-block;padding:2px 6px;border-radius:4px;font-size:10px;background:#fffbeb;color:#92400e;margin-left:4px} .wl{background:#fffbeb;border-left:3px solid #f59e0b;border-radius:4px;padding:7px 11px;font-size:11px;color:#92400e;margin-top:8px} .al{background:#fef2f2;border-left:3px solid #ef4444;border-radius:4px;padding:7px 11px;font-size:11px;color:#991b1b;margin-top:8px} #gnss-yokohama-urban-canyon-gnss canvas {display:block;height:100%!important;width:100%!important}
横浜駅東口 都市渓谷 歩行測定 GNSS精度比較
2026-04-09 15:31〜15:52 JST · 3セッション · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger
15:31 歩行A最良
1.6 m 中央値
400/385pts・6.4min・>5m=0点・終点間17.6m
15:43 歩行B最悪
13.8 m 中央値
106/106pts・1.7min・>50m=4点・終点間43.4m
15:49 歩行C中程度
8.4 m 中央値
193/192pts・3.2min・>50m=0点・終点間3.8m
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
水平精度比較(セッション別トラック間偏差)
標高ノイズ(std)— 電車環境との逆転現象
| 15:31 歩行A | |
| 95%ile / 最大 | 11.8m / 27.3m |
| iPhone std / Pixel std | 5.16m / 4.71m(ほぼ同等) |
| 15:43 歩行B(高遥蔽) | |
| 95%ile / 最大 | 42.1m / 83.2m |
| iPhone std / Pixel std | 14.42m / 6.87m(iPhone 2.1倍悪) |
| 15:49 歩行C | |
| 95%ile / 最大 | 30.0m / 34.8m |
| iPhone std / Pixel std | 31.97m / 14.99m(iPhone 2.1倍悪) |
電車 vs 都市渓谷(標高std優位性)
| 電車3測定 | iPhone 1.7〜3.5m / Pixel 7.9〜8.7m → iPhoneが優位 |
| 都市渓谷 B・C | iPhone 14〜32m / Pixel 6.9〜15m → Pixelが優位(逆転) |
L1+L5がマルチパス環境で垂直精度優位性を発揮。電車(開放/車体遥蔽)とは完全に逆転。都市渓谷ではL1+L5の価値が出る。
(function waitChart(){if(typeof Chart===“undefined”){setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; new Chart(document.getElementById(‘uc-hc’),{ type:‘bar’, data:{ labels:[‘15:31A’,‘15:43B’,‘15:49C’], datasets:[ {label:‘中央値’,data:[1.6,13.8,8.4],backgroundColor:‘#3a3a8a88’,borderColor:‘#3a3a8a’,borderWidth:1}, {label:‘95%ile’,data:[11.8,42.1,30.0],backgroundColor:‘#e05a3088’,borderColor:‘#e05a30’,borderWidth:1}, {label:‘最大’,data:[27.3,83.2,34.8],backgroundColor:‘rgba(180,50,50,0.2)‘,borderColor:‘rgba(180,50,50,0.6)‘,borderWidth:1} ] }, options:{responsive:true,maintainAspectRatio:false, plugins:{legend:{display:true,position:‘top’,labels:{boxWidth:10,font:{size:11},color:tc}}}, scales:{ x:{ticks:{font:{size:11},color:tc},grid:{display:false}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘偏差 (m)‘,font:{size:11},color:tc}} }} }); new Chart(document.getElementById(‘uc-ec’),{ type:‘bar’, data:{ labels:[‘15:31A’,‘15:43B’,‘15:49C’], datasets:[ {label:‘iPhone 12 Pro(L1)‘,data:[5.16,14.42,31.97],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1}, {label:‘Pixel 8(L1+L5)‘,data:[4.71,6.87,14.99],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1} ] }, options:{responsive:true,maintainAspectRatio:false, plugins:{legend:{display:false}}, scales:{ x:{ticks:{font:{size:11},color:tc},grid:{display:false}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘標高 std (m)‘,font:{size:11},color:tc}} }} }); })();
定点測定結果:「同じ場所に立っているのに67 m離れた地点を指す」
定点測定の最大の発見は系統誤差の大きさである。**同一地点に静止しているのに、iPhoneとPixel 8が最大67.5 m離れた座標を「正しい位置」として出力した。**マルチパスにより各端末が全く別の場所で定位してしまっている。
| セッション | 中央値間距離(系統誤差) | 開放空間との比 |
|---|---|---|
| A(15:39) | 67.5 m | 18倍 |
| B(15:46) | 21.6 m | 7倍 |
if(!window.Chart){var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}
#gnss-yokohama-urban-canyon-stationary *, #gnss-yokohama-urban-canyon-stationary *::before, #gnss-yokohama-urban-canyon-stationary *::after {box-sizing:border-box;margin:0;padding:0} #gnss-yokohama-urban-canyon-stationary {font-family:-apple-system,BlinkMacSystemFont,“Segoe UI”,sans-serif;background:#fff;color:#1a1a1a;padding:24px;max-width:900px;margin:0 auto} #gnss-yokohama-urban-canyon-stationary h1 {font-size:17px;font-weight:500;margin-bottom:4px} .sub{font-size:12px;color:#888;margin-bottom:20px} .two{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px} .sc{background:#f5f5f3;border-radius:8px;padding:12px 14px} .sl{font-size:11px;color:#888;margin-bottom:6px;font-weight:500} .it{width:100%;border-collapse:collapse;font-size:12px} .it td{padding:3px 6px 3px 0;color:#555;border-bottom:0.5px solid rgba(0,0,0,0.08)} .it td:first-child{color:#999;width:52%} .it td b{color:#1a1a1a;font-weight:500} .di{color:#3266ad}.dp{color:#1d9e75} .legend{display:flex;gap:16px;margin-bottom:8px;font-size:12px;color:#555} .legend span{display:flex;align-items:center;gap:5px} .lsq{width:10px;height:10px;border-radius:2px;display:inline-block} .st{font-size:13px;font-weight:500;color:#555;margin:14px 0 5px} .cw{position:relative;width:100%} .hl{background:#ecfdf5;border-left:3px solid #1d9e75;border-radius:4px;padding:8px 12px;font-size:11px;color:#065f46;margin-top:8px} .al{background:#fef2f2;border-left:3px solid #ef4444;border-radius:4px;padding:8px 12px;font-size:11px;color:#991b1b;margin-top:8px} .charts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px} #gnss-yokohama-urban-canyon-stationary canvas {display:block;height:100%!important;width:100%!important}
横浜駅東口 都市渓谷 定点測定 GNSS精度比較
2026-04-09 15:39〜15:47 JST · 2セッション · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger · 実際の標高≈0〜5m
系統誤差:同じ場所に静止しているのに両端末の指す座標が大きくずれる
セッションA:67.5m / セッションB:21.6m — 都市渓谷のマルチパスが座標を大きく歪める
15:39 定点A — 2.0分(122秒)
| 系統誤差(中央値間距離) | 67.5 m |
| iPhone 散らばり mean | 3.5 m(前半6.1→後半1.0m) |
| Pixel 散らばり mean | 1.0 m(安定) |
| iPhone 95%ile / max | 8.9m / 2.07m |
| Pixel 95%ile / max | 2.1m / 1.32m(Pixel優位) |
| iPhone 標高 mean / std | 94.4m / 9.00m |
| Pixel 標高 mean / std | 55.8m / 2.98m |
15:46 定点B — 1.8分(110秒)
| 系統誤差(中央値間距離) | 21.6 m |
| iPhone 散らばり mean | 2.7 m(前半1.5→後半3.9m) |
| Pixel 散らばり mean | 3.8 m(最大21m) |
| iPhone 95%ile / max | 4.5m / 5.1m |
| Pixel 95%ile / max | 16.6m / 21.0m |
| iPhone 標高 mean / std | 100.9m / 17.88m(急上昇) |
| Pixel 標高 mean / std | 79.4m / 1.72m |
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
系統誤差 — 都市渓谷 vs 開放空間
標高 std(定点測定・全環境)
iPhoneで綄90〜100m、Pixelで綄56〜79mの標高誤差。実際の地表高≈0〜5mに対して 80〜100m高い値。都市渓谷のマルチパスが垂直精度に壊滅的な影響を与えることを示す。セッションBの iPhone標高は後半に83m→120mへ急上昇(衛星切り替えによるマルチパス増大と推定)。
(function waitChart(){if(typeof Chart===“undefined”){setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; new Chart(document.getElementById(‘ucs-sysc’),{ type:‘bar’, data:{ labels:[‘都市渓谷A\n(15:39)’,‘都市渓谷B\n(15:46)’,‘開放空間A\n(参考)’,‘開放空間B\n(参考)’], datasets:[{label:‘系統誤差 (m)‘,data:[67.5,21.6,3.69,3.00], backgroundColor:[‘#e24b4a88’,‘#e05a3088’,‘#1d9e7588’,‘#1d9e7588’], borderColor:[‘#e24b4a’,‘#e05a30’,‘#1d9e75’,‘#1d9e75’],borderWidth:1.5} ]} , options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:10},color:tc},grid:{display:false}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘系統誤差 (m)‘,font:{size:11},color:tc}}}} }); new Chart(document.getElementById(‘ucs-elc’),{ type:‘bar’, data:{ labels:[‘都市A’,‘都市B’,‘開放 A\n(参考)’,‘開放 B\n(参考)’], datasets:[ {label:‘iPhone 12 Pro’,data:[9.00,17.88,0.756,0.346],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1}, {label:‘Pixel 8’,data:[2.98,1.72,0.902,0.641],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1} ]} , options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:10},color:tc},grid:{display:false}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘標高 std (m)‘,font:{size:11},color:tc}}}} }); })();
標高ノイズの「逆転」(記事の核心)
環境①(開放空間)や電車環境ではPixel 8の標高stdがiPhoneの2〜5倍悪い側に一貫していた。ところが都市渓谷では完全に逆転し、iPhoneの標高stdがPixel 8の2.1倍悪化した。
| 環境 | iPhone std | Pixel 8 std | 優位端末 |
|---|---|---|---|
| 開放空間(歩行) | 0.34〜1.19 m | 0.87〜1.28 m | iPhone |
| 電車(京急) | 1.67 m | 8.69 m | iPhone |
| 都市渓谷(歩行B) | 14.42 m | 6.87 m | Pixel 8 |
| 都市渓谷(歩行C) | 31.97 m | 14.99 m | Pixel 8 |
| 都市渓谷(定点B) | 17.88 m | 1.72 m | Pixel 8 |
L1+L5デュアル周波数はマルチパス信号を周波数間の位相差で判別できるため、ビル密集地で垂直精度の優位性が現れる。また、定点測定でiPhoneの標高が実際の標高(0〜5 m)に対して90〜100 mの誤差を示した点は、マルチパス環境での標高計測がいかに不正確になりやすいかを示す具体例である。
考察
- **L1+L5の優位性は遮蔽環境でこそ発揮される。**開放空間では不要だったL5周波数が、都市渓谷では垂直精度に明確な差を生む。
- 水平精度は場所・瞬間の遮蔽状態に強く依存する。同じ横浜駅東口でも中央値が1.6 mまたは13.8 mと、セッションごとに大きく変動する。
- 測定開始直後は衛星捕捉が安定するまで標高が大きくぶれる。実際の標高値が地表に近い値に収束するまでの時間は開放空間と比べて大幅に長くなり、ナビゲーション目的ではGNSS開始直後の座標は信頼しないことが望ましい。
環境③:自動車走行
自動車走行環境として、川崎駅から東扇島東公園までの**一般道走行(約8.4 km)と、東扇島ICから首都高湾岸線を経由した高速道走行(約11.2 km)**の2区間を測定した。2026-04-13に連続して実施。
一般道走行:川崎駅→東扇島東公園
0〜6 km区間(一般住宅地・幹線道路)は中央値が1.8〜5.4 mと良好な精度を示した。一方、川崎港ゲート―東扇島入口の工業地帯(高架・工場壁面が密集)でiPhoneに約175秒(約3分)のGPS信号断絶が発生した。断絶後の再捕捉時に軌跡が最大794 mずれた。
| 区間 | 中央値 | 95%ile | 結果 |
|---|---|---|---|
| 0−6 km(正常区間) | 1.8〜5.4 m | 3.8〜5.6 m | 良好 |
| 6−7 km(断絶開始) | 5.4 m | 267.7 m | ⚠️ |
| 7−8 km(断絶最大) | 765.5 m | 793.0 m | ❌ |
| 8−9 km(回復途中) | 4.6 m | 643.1 m | 回復 |
Pixel 8の最大ギャップは46秒にとどまり、断絶耐性の差異が明確に現れた。「GPS断絶後の再捕捉で軌跡が飛ぶ」現象の典型例である。
if(!window.Chart){var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}
#gnss-kawasaki-higashiohgishima-road-gnss *, #gnss-kawasaki-higashiohgishima-road-gnss *::before, #gnss-kawasaki-higashiohgishima-road-gnss *::after {box-sizing:border-box;margin:0;padding:0} #gnss-kawasaki-higashiohgishima-road-gnss {font-family:-apple-system,BlinkMacSystemFont,“Segoe UI”,sans-serif;background:#fff;color:#1a1a1a;padding:24px;max-width:900px;margin:0 auto} #gnss-kawasaki-higashiohgishima-road-gnss h1 {font-size:17px;font-weight:500;margin-bottom:4px} .sub{font-size:12px;color:#888;margin-bottom:20px} .sg{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px} .sc{background:#f5f5f3;border-radius:8px;padding:11px 13px} .sl{font-size:11px;color:#888;margin-bottom:4px} .dv{font-size:17px;font-weight:500} .di{color:#3266ad}.dp{color:#1d9e75} .dl{font-size:10px;color:#aaa} .legend{display:flex;gap:16px;margin-bottom:8px;font-size:12px;color:#555} .legend span{display:flex;align-items:center;gap:5px} .lsq{width:10px;height:10px;border-radius:2px;display:inline-block} .st{font-size:13px;font-weight:500;color:#555;margin:14px 0 5px} .cw{position:relative;width:100%} .two{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px} .it{width:100%;border-collapse:collapse;font-size:12px} .it td{padding:3px 6px 3px 0;color:#555;border-bottom:0.5px solid rgba(0,0,0,0.08)} .it td:first-child{color:#999;width:42%} .it td b{color:#1a1a1a;font-weight:500} .hl{background:#ecfdf5;border-left:3px solid #1d9e75;border-radius:4px;padding:7px 11px;font-size:11px;color:#065f46;margin-top:8px} .al{background:#fef2f2;border-left:3px solid #ef4444;border-radius:4px;padding:8px 12px;font-size:11px;color:#991b1b;margin-bottom:14px} #gnss-kawasaki-higashiohgishima-road-gnss canvas {display:block;height:100%!important;width:100%!important}
川崎駅→東扇島東公園 一般道走行 GNSS精度比較
2026-04-13 14:57 JST · 自動車走行 · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger
⚠ iPhoneで175秒間(約3分)のGPS信号断絶を検出 — 15:15:16 JST @ 累積6.70km付近(川崎港ゲート~東扇島入口の高架・工場壁面密集区間)。断絶後に最大94mの軌跡ずれが発生。前半(0〜6km)は中央値(2〜5mの良好な精度。
ログ点数
1,045
iPhone 12 Pro
1,156
Pixel 8
記録時間 / 距離
20.1 min
iPhone 8.41km / Pixel 9.25km
開始時刻差 / 終点間
1秒
終点間 1.4 m
信号停車割合
25%
0-3 km/h 帯
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
1km帯別トラック間偏差(中央値)— 対数スケール
速度分布(km/h)— 一般道・信号停車環境
精度詳細(全区間)
| トラック 中央値 | 3.5 m(断絶の影響で幃42.3m) |
| 95%ile(全体) | 343.0 m(断絶区間が引上げ) |
| >50m外れ値 | 103点(8.9%)、断絶区間に集中 |
| 0-6km 中央値 | 1.8〜5.4 m(断絶前は正常) |
| iPhone 最大ギャップ | 175秒 |
| Pixel 最大ギャップ | 46秒(断絶耐性あり) |
断絶区間(6-9km)を除いた0-6km帯は中央値(1.8〜5.4mと良好。一般道・住宅地での精度は電車と同水準。
標高
| iPhone 標高平均 / std | 6.3 m / 2.23 m(MSL) |
| Pixel 標高平均 / std | 40.2 m / 4.34 m |
| オフセット | +33.9 m(ジオイド高≈36mに最も近い) |
Pixelの標高オフセット+33.9mは今回の全測定データ中でジオイド高(36m)に最も近い値。楕円体高/MSL問題の証拠として最適。
(function waitChart(){if(typeof Chart===“undefined”){setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; new Chart(document.getElementById(‘kc’),{ type:‘bar’, data:{ labels:[‘0-1km’,‘1-2km’,‘2-3km’,‘3-4km’,‘4-5km’,‘5-6km’,‘6-7km’,‘7-8km’,‘8-9km’], datasets:[{label:‘中央値’,data:[5.1,2.9,2.8,3.5,1.8,2.6,5.4,765.5,4.6], backgroundColor:[‘#3266adcc’,‘#3266adcc’,‘#3266adcc’,‘#3266adcc’,‘#3266adcc’,‘#3266adcc’,‘#e05a3088’,‘#e24b4acc’,‘#e05a3088’], borderColor:[‘#3266ad’,‘#3266ad’,‘#3266ad’,‘#3266ad’,‘#3266ad’,‘#3266ad’,‘#e05a30’,‘#e24b4a’,‘#e05a30’], borderWidth:1}] }, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:10},color:tc},grid:{display:false}}, y:{type:‘logarithmic’,ticks:{font:{size:10},color:tc,callback:v=>v+‘m’}, grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘偏差 m(対数)‘,font:{size:11},color:tc}}}} }); new Chart(document.getElementById(‘road-hc’),{ type:‘bar’, data:{ labels:[‘0-5’,‘5-30’,‘30-60’,‘60-80’,‘80-100’,‘100+’], datasets:[ {label:‘iPhone 12 Pro’,data:[316,139,298,338,4,0],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1}, {label:‘Pixel 8’,data:[318,145,294,335,5,0],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1} ] }, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:11},color:tc},grid:{display:false},title:{display:true,text:‘速度 (km/h)‘,font:{size:11},color:tc}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘点数’,font:{size:11},color:tc}}}} }); })();
高速道走行:東扇島IC→首都高湾岸線→大黒PA
開始時刻差0秒・>50m外れ値ゼロという測定条件の良好な区間で、高速道走行にもかかわらず95%ile 5.3 mと電車環境の7〜8倍高い精度を記録した。「遮蔽物のない環境なら高速移動でも高精度」を示すデータである。
| 指標 | 首都高走行 | 電車(川崎→新橋) | 電車(京急) |
|---|---|---|---|
| 中央値 | 2.2 m | 7.6 m | 8.8 m |
| 95%ile | 5.3 m | 41.3 m | 22.1 m |
| 最大 | 21.9 m | 83.8 m | 48.2 m |
| >50m外れ値 | 0点 | 15点 | 0点 |
標高プロファイルにも特徴的な結果が現れた。首都高の高架区間でiPhoneは最大61 m、Pixel 8は最大99 mまで上昇しその後降下する形状が両端末で完全に一致した。オフセット(+34 m)を除けば標高波形が重なり、楕円体高/MSL問題を視覚的に説明できる最も力強いグラフになっている。
if(!window.Chart){var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}
#gnss-higashiohgishima-expressway-daikoku-gnss *, #gnss-higashiohgishima-expressway-daikoku-gnss *::before, #gnss-higashiohgishima-expressway-daikoku-gnss *::after {box-sizing:border-box;margin:0;padding:0} #gnss-higashiohgishima-expressway-daikoku-gnss {font-family:-apple-system,BlinkMacSystemFont,“Segoe UI”,sans-serif;background:#fff;color:#1a1a1a;padding:24px;max-width:900px;margin:0 auto} #gnss-higashiohgishima-expressway-daikoku-gnss h1 {font-size:17px;font-weight:500;margin-bottom:4px} .sub{font-size:12px;color:#888;margin-bottom:16px} .sg{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px} .sc{background:#f5f5f3;border-radius:8px;padding:11px 13px} .sl{font-size:11px;color:#888;margin-bottom:4px} .dv{font-size:17px;font-weight:500} .di{color:#3266ad}.dp{color:#1d9e75} .dl{font-size:10px;color:#aaa} .legend{display:flex;gap:16px;margin-bottom:8px;font-size:12px;color:#555} .legend span{display:flex;align-items:center;gap:5px} .lsq{width:10px;height:10px;border-radius:2px;display:inline-block} .st{font-size:13px;font-weight:500;color:#555;margin:14px 0 5px} .cw{position:relative;width:100%} .two{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px} .it{width:100%;border-collapse:collapse;font-size:12px} .it td{padding:3px 6px 3px 0;color:#555;border-bottom:0.5px solid rgba(0,0,0,0.08)} .it td:first-child{color:#999;width:44%} .it td b{color:#1a1a1a;font-weight:500} .hl{background:#ecfdf5;border-left:3px solid #1d9e75;border-radius:4px;padding:8px 12px;font-size:11px;color:#065f46;margin-bottom:14px} #gnss-higashiohgishima-expressway-daikoku-gnss canvas {display:block;height:100%!important;width:100%!important}
東扇島IC→首都高速湾岸線→大黒PA 走行測定 GNSS精度比較
2026-04-13 15:49〜16:05 JST · 自動車走行 · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger
開始時刻差0秒・>50m外れ値ゼロ・終点間3.3m・95%ile 5.3m。高速道路(開放的な空間)では電車3測定(22〜41m)を大幅に上回る精度を記録。**「精度を決めるのは速度ではなく遥蔽環境」**を実証。
ログ点数 / 時間
962
iPhone / 15.9min
956
Pixel / 15.9min
開始時刻差 / 走行距離
0秒 完全同期
11.2 km
トラック間偏差
2.2 m
中央値
5.3 m
95%ile
終点間 / >50m外れ値
3.3 m
>50m外れ値 0点
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
標高プロファイル — 首都高高架構造物を精密に追跡
速度分布(km/h)— 60〜80km/h帯が主体
精度詳細(1km帯別)
| 0-1km(公園内~IC入口) | 中央儤1.7m / 95%ile 20.3m(低速) |
| 1-3km | 中央儤1.9〜2.0m / 95%ile 2.6〜3.5m |
| 3-11km(高速本線) | 中央儤1.5〜2.9m / 95%ile 2.5〜4.0m |
| iPhone サンプリング | 0.99s / 最大1.0s(安定) |
| Pixel サンプリング | 1.00s / 最大2.0s |
標高 — 楕円体高/MSL問題の最良の可視化
| iPhone 標高 mean / std | 18.2 m / 15.80 m(高架で上昇) |
| Pixel 標高 mean / std | 52.6 m / 16.28 m |
| オフセット | +34.4 m(ジオイド高≈36mに最も近い) |
| iPhone 最大標高 | 61.2 m(首都高高架頂点) |
| Pixel 最大標高 | 99.5 m(+34mオフセット後) |
(function waitChart(){if(typeof Chart===“undefined”){setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; const iphE=[ {d:0,e:3.7},{d:0.6,e:6.0},{d:1.1,e:6.7},{d:1.7,e:6.7},{d:2.2,e:8.5},{d:2.8,e:5.9}, {d:3.3,e:9.1},{d:3.9,e:9.5},{d:4.4,e:7.4},{d:5.0,e:12.5},{d:5.5,e:12.2},{d:6.1,e:6.9}, {d:6.6,e:17.7},{d:7.2,e:39.5},{d:7.7,e:59.8},{d:8.3,e:43.1},{d:8.8,e:53.3}, {d:9.4,e:34.3},{d:9.9,e:9.0},{d:10.5,e:16.0},{d:11.2,e:13.1} ]; const pixE=[ {d:0,e:50.5},{d:0.6,e:39.5},{d:1.1,e:38.1},{d:1.7,e:38.8},{d:2.2,e:39.2},{d:2.8,e:43.8}, {d:3.3,e:43.9},{d:3.9,e:43.3},{d:4.4,e:42.9},{d:5.0,e:49.5},{d:5.5,e:50.9},{d:6.1,e:44.7}, {d:6.6,e:55.4},{d:7.2,e:77.1},{d:7.7,e:99.4},{d:8.3,e:78.0},{d:8.8,e:82.3}, {d:9.4,e:66.5},{d:9.9,e:53.3},{d:10.5,e:43.9},{d:11.2,e:45.9} ]; new Chart(document.getElementById(‘exp-ec’),{ type:‘line’, data:{datasets:[ {label:‘iPhone 12 Pro’,data:iphE.map(p=>({x:p.d,y:p.e})),borderColor:ic,backgroundColor:ic+‘22’,fill:true,pointRadius:0,borderWidth:1.5,tension:0.3}, {label:‘Pixel 8’,data:pixE.map(p=>({x:p.d,y:p.e})),borderColor:pc,backgroundColor:pc+‘22’,fill:true,pointRadius:0,borderWidth:1.5,tension:0.3,borderDash:[5,3]} ]}, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{type:‘linear’,title:{display:true,text:‘距離 (km)‘,font:{size:11},color:tc},ticks:{font:{size:11},color:tc},grid:{display:false}}, y:{title:{display:true,text:‘標高 (m)‘,font:{size:11},color:tc},ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’}}}} }); new Chart(document.getElementById(‘exp-hc’),{ type:‘bar’, data:{ labels:[‘0-5’,‘5-30’,‘30-60’,‘60-80’,‘80-100’,‘100+’], datasets:[ {label:‘iPhone 12 Pro’,data:[183,139,298,338,4,0],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1}, {label:‘Pixel 8’,data:[177,145,294,335,5,0],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1} ] }, options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}}, scales:{x:{ticks:{font:{size:11},color:tc},grid:{display:false},title:{display:true,text:‘速度 (km/h)‘,font:{size:11},color:tc}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘点数’,font:{size:11},color:tc}}}} }); })();
考察
- 高速道路(開放空間)での精度は電車環境を大幅に上回り、精度を決めるのは速度ではなく遮蔽環境であることを再確認できる。
- iPhoneの175秒断絶は川崎港工業地帯特有の過濃な遮蔽環境が原因と推定される。合理的な高速道走行では断絶は発生していない。
- 標高プロファイルの対比グラフから、Androidの
Location.getAltitude()が返す楕円体高は川崎エリアのジオイド高(約36 m)の加算分だけ常に上乗せされている。iOSのCore Locationが返すMSL値と比較する際はこのオフセットを必ず考慮すること。
環境④:電車移動
電車環境では、車体による遮蔽・高速移動・高架・橋梁等の環境変化が重なり、GNSS精度に影響する要因が最も複雑な環境である。東海道線(2区間)と京急本線(1区間)を対象に測定した。
各区間の水平精度比較
| 区間 | 中央値 | 95%ile | 最大 | >50m外れ値 |
|---|---|---|---|---|
| 京急 川崎→鶴見(低速・頻停車) | 8.8 m | 22.1 m | 48.2 m | 0点 |
| 東海道 横浜→川崎(直線区間) | 10.1 m | 24.5 m | 53.3 m | 1点 |
| 東海道 川崎→新橋(市街地通過) | 7.6 m | 41.3 m | 83.8 m | 15点 |
川崎→新橋区間で>50m外れ値が15点出たのは、首都高高架下やビル帯を通過する区間が多いためであり、路線特性がデータに即座に反映されている。
if(!window.Chart){var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}
#gnss-keikyu-kawasaki-tsurumi-gnss *, #gnss-keikyu-kawasaki-tsurumi-gnss *::before, #gnss-keikyu-kawasaki-tsurumi-gnss *::after {box-sizing:border-box;margin:0;padding:0} #gnss-keikyu-kawasaki-tsurumi-gnss {font-family:-apple-system,BlinkMacSystemFont,“Segoe UI”,sans-serif;background:#fff;color:#1a1a1a;padding:24px;max-width:860px;margin:0 auto} #gnss-keikyu-kawasaki-tsurumi-gnss h1 {font-size:17px;font-weight:500;margin-bottom:4px} .sub{font-size:12px;color:#888;margin-bottom:20px} .stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px} .stat-card{background:#f5f5f3;border-radius:8px;padding:12px 14px} .stat-label{font-size:11px;color:#888;margin-bottom:4px} .stat-row{display:flex;gap:8px;justify-content:space-between;align-items:flex-end} .dv{font-size:18px;font-weight:500} .di{color:#3266ad}.dp{color:#1d9e75} .dl{font-size:10px;color:#aaa} .legend{display:flex;gap:16px;margin-bottom:8px;font-size:12px;color:#555} .legend span{display:flex;align-items:center;gap:5px} .lsq{width:10px;height:10px;border-radius:2px;display:inline-block} .st{font-size:13px;font-weight:500;color:#555;margin:18px 0 6px} .cw{position:relative;width:100%} .two{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:16px} .it{width:100%;border-collapse:collapse;font-size:12px} .it td{padding:4px 8px 4px 0;color:#555;border-bottom:0.5px solid rgba(0,0,0,0.08)} .it td:first-child{color:#999;width:45%} .it td b{color:#1a1a1a;font-weight:500} .hl{background:#ecfdf5;border-left:3px solid #1d9e75;border-radius:4px;padding:8px 12px;font-size:11px;color:#065f46;margin-top:8px} .wl{background:#fffbeb;border-left:3px solid #f59e0b;border-radius:4px;padding:8px 12px;font-size:11px;color:#92400e;margin-top:6px} .badge{display:inline-block;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:500;margin-left:4px;background:#ecfdf5;color:#065f46} #gnss-keikyu-kawasaki-tsurumi-gnss canvas {display:block;height:100%!important;width:100%!important}
京急本線 京急川崎→京急鶴見 GNSS精度比較
2026-04-09 15:04 JST · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger
ログ点数
334
iPhone 12 Pro
323
Pixel 8
記録時間 / 距離
5.4 min
3.73 km
5.4 min
3.59 km
開始時刻差 / 終点間
0秒完全同期
終点間 1.4 m(3測定中最良)
トラック間偏差
8.8 m
中央値
22.1 m
95%ile
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
速度分布(km/h)— 低速・頻停車の京急区間
水平精度(電車3測定比較)
| 中央値 | 8.8 m |
| 95%ile | 22.1 m ← 3測定中最良 |
| 最大 | 48.2 m |
| >50m外れ値 | 0点(0.0%) |
| 終点間距離 | 1.4 m ← 3測定中最良 |
| 京急川崎 最近傍 | iPhone 21m / Pixel 22m |
| 京急鶴見 最近傍 | iPhone 122m / Pixel 124m |
開始時刻差0秒の完全同期で3測定中最も純粋な端末間比較。停車多発でも50m超外れ値ゼロ。
標高ノイズ(std)
| iPhone 標高平均 / std | 6.4 m / 1.67 m |
| Pixel 標高平均 / std | 30.2 m / 8.69 m |
| 標高std比率 | Pixel 5.2倍悪い(3測定中最大) |
| 標高オフセット | +23.8 m(ジオイド高≈36m) |
| 0-10 km/h帯(停車) | iPhone 133点 / Pixel 109点 |
| 90-120 km/h帯 | iPhone 32点 / Pixel 31点 |
低速・停車が多い環境でPixelの垂直ノイズが顧著(5.2倍)。速度とGNSS水平精度は無相関。
(function waitChart(){if(typeof Chart===“undefined”){setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; new Chart(document.getElementById(‘kt-hc’),{ type:‘bar’, data:{ labels:[‘0-10’,‘10-30’,‘30-60’,‘60-90’,‘90-120’,‘120+’], datasets:[ {label:‘iPhone 12 Pro’,data:[133,36,45,83,32,4],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1}, {label:‘Pixel 8’,data:[109,38,62,83,31,0],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1} ] }, options:{responsive:true,maintainAspectRatio:false, plugins:{legend:{display:false}}, scales:{ x:{ticks:{font:{size:11},color:tc},grid:{display:false},title:{display:true,text:‘速度 (km/h)‘,font:{size:11},color:tc}}, y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘点数’,font:{size:11},color:tc}} }} }); })();
#gnss-yokohama-kawasaki-gnss-analysis *, #gnss-yokohama-kawasaki-gnss-analysis *::before, #gnss-yokohama-kawasaki-gnss-analysis *::after { box-sizing: border-box; margin: 0; padding: 0; } #gnss-yokohama-kawasaki-gnss-analysis { font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, sans-serif; background: #fff; color: #1a1a1a; padding: 24px; max-width: 860px; margin: 0 auto; } #gnss-yokohama-kawasaki-gnss-analysis h1 { font-size: 17px; font-weight: 500; margin-bottom: 4px; } .sub { font-size: 12px; color: #888; margin-bottom: 20px; } .stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 20px; } .stat-card { background: #f5f5f3; border-radius: 8px; padding: 12px 14px; } .stat-label { font-size: 11px; color: #888; margin-bottom: 4px; } .stat-row { display: flex; gap: 8px; justify-content: space-between; align-items: flex-end; } .dev-val { font-size: 18px; font-weight: 500; } .dev-iph { color: #3266ad; } .dev-pix { color: #1d9e75; } .dev-label { font-size: 10px; color: #aaa; } .legend { display: flex; gap: 16px; margin-bottom: 8px; font-size: 12px; color: #555; } .legend span { display: flex; align-items: center; gap: 5px; } .leg-sq { width: 10px; height: 10px; border-radius: 2px; display: inline-block; } .section-title { font-size: 13px; font-weight: 500; color: #555; margin: 18px 0 6px; } .chart-wrap { position: relative; width: 100%; } .note { font-size: 11px; color: #999; margin-top: 6px; line-height: 1.5; } .two { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 16px; } .info-table { width: 100%; border-collapse: collapse; font-size: 12px; } .info-table td { padding: 4px 8px 4px 0; color: #555; border-bottom: 0.5px solid rgba(0,0,0,0.08); } .info-table td:first-child { color: #999; width: 45%; } .info-table td b { color: #1a1a1a; font-weight: 500; } .hl { background: #ecfdf5; border-left: 3px solid #1d9e75; border-radius: 4px; padding: 8px 12px; font-size: 11px; color: #065f46; margin-top: 8px; } .wl { background: #fffbeb; border-left: 3px solid #f59e0b; border-radius: 4px; padding: 8px 12px; font-size: 11px; color: #92400e; margin-top: 6px; } #gnss-yokohama-kawasaki-gnss-analysis canvas {display:block;height:100%!important;width:100%!important} @media (max-width: 600px) { .stat-grid { grid-template-columns: 1fr 1fr; } .two { grid-template-columns: 1fr; } }
東海道線 横浜→川崎 GNSS精度比較
2026-04-09 16:12 JST · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger
ログ地点数
450
iPhone 12 Pro
421
Pixel 8
記録時間
7.7 min
iPhone 12 Pro
7.6 min
Pixel 8
算出走行距離
10.9 km
iPhone 12 Pro
10.7 km
Pixel 8
終点間距離
15.3 m
両端点間
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
速度分布(km/h)
標高プロファイル(距離基準)
水平精度(トラック間偏差)
| 中央値 | 10.1 m |
| 平均 | 11.3 m |
| 95パーセンタイル | 24.5 m ↓(川崎→新橋比) |
| 最大値 | 53.3 m |
| >50m 外れ値 | 1点(0.2%) |
| 終点間距離 | 15.3 m |
| 開始時刻差 | 5秒(前回比大幅改善) |
前回(川崎→新橋)の95%ile 41.3mに対し 24.5m。短距離・直線区間で精度向上。
標高ノイズ・速度安定性
| iPhone 標高平均 / std | 5.9 m / 2.73 m |
| Pixel 標高平均 / std | 24.9 m / 9.28 m(3.4倍) |
| 標高オフセット | +19 m(前回 +40m) |
| iPhone 速度 std | 22.2 km/h |
| Pixel 速度 std | 14.3 km/h(安定) |
| 横浜駅 最近傍距離 | iPhone 90m / Pixel 132m |
| 川崎駅 最近傍距離 | iPhone 10m / Pixel 15m |
Pixelの標高オフセット+19m。横浜ジオイド高≈36mに対し乖離あり。区間によるジオイドモデル差の可能性。
(function waitChart(){if(typeof Chart===“undefined”){if(!window._cjs){window._cjs=1;var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; new Chart(document.getElementById(‘yk-histChart’),{type:‘bar’,data:{labels:[‘0-10’,‘10-30’,‘30-60’,‘60-90’,‘90-120’,‘120-150’,‘150+’],datasets:[{label:‘iPhone 12 Pro’,data:[15,7,29,185,209,2,1],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1},{label:‘Pixel 8’,data:[4,3,14,169,229,1,0],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}},scales:{x:{ticks:{font:{size:11},color:tc},grid:{display:false}},y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘点数’,font:{size:11},color:tc}}}}}); const iphEle=[{d:0,e:6},{d:0.4,e:5.8},{d:0.8,e:5.5},{d:1.2,e:5.8},{d:1.6,e:6.3},{d:2.0,e:7.1},{d:2.4,e:7.8},{d:2.8,e:8.5},{d:3.2,e:8.8},{d:3.6,e:7.9},{d:4.0,e:7.2},{d:4.4,e:6.8},{d:4.8,e:6.3},{d:5.2,e:5.9},{d:5.6,e:5.4},{d:6.0,e:5.5},{d:6.4,e:6.1},{d:6.8,e:6.8},{d:7.2,e:7.5},{d:7.6,e:8.1},{d:8.0,e:8.7},{d:8.4,e:9.2},{d:8.8,e:9.8},{d:9.2,e:9.2},{d:9.6,e:8.6},{d:10.0,e:7.5},{d:10.5,e:7.1},{d:10.85,e:6.5}]; const pixEle=[{d:0,e:25},{d:0.4,e:24.2},{d:0.8,e:23.5},{d:1.2,e:24.1},{d:1.6,e:25.3},{d:2.0,e:26.1},{d:2.4,e:27.4},{d:2.8,e:28.5},{d:3.2,e:27.8},{d:3.6,e:26.9},{d:4.0,e:25.8},{d:4.4,e:24.9},{d:4.8,e:24.2},{d:5.2,e:23.8},{d:5.6,e:24.5},{d:6.0,e:25.3},{d:6.4,e:26.1},{d:6.8,e:27.2},{d:7.2,e:28.4},{d:7.6,e:29.1},{d:8.0,e:28.5},{d:8.4,e:27.6},{d:8.8,e:26.8},{d:9.2,e:25.9},{d:9.6,e:25.2},{d:10.0,e:24.7},{d:10.4,e:24.3},{d:10.65,e:24.1}]; new Chart(document.getElementById(‘yk-eleChart’),{type:‘line’,data:{datasets:[{label:‘iPhone 12 Pro’,data:iphEle.map(p=>({x:p.d,y:p.e})),borderColor:ic,backgroundColor:ic+‘22’,fill:true,pointRadius:0,borderWidth:1.5,tension:0.3},{label:‘Pixel 8’,data:pixEle.map(p=>({x:p.d,y:p.e})),borderColor:pc,backgroundColor:pc+‘22’,fill:true,pointRadius:0,borderWidth:1.5,tension:0.3,borderDash:[5,3]}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}},scales:{x:{type:‘linear’,title:{display:true,text:‘距離 (km)‘,font:{size:11},color:tc},ticks:{font:{size:11},color:tc},grid:{display:false}},y:{title:{display:true,text:‘標高 (m)‘,font:{size:11},color:tc},ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’}}}}}); })();
#gnss-tokaido-line-gnss-analysis *, #gnss-tokaido-line-gnss-analysis *::before, #gnss-tokaido-line-gnss-analysis *::after { box-sizing: border-box; margin: 0; padding: 0; } #gnss-tokaido-line-gnss-analysis { font-family: -apple-system, BlinkMacSystemFont, “Segoe UI”, sans-serif; background: #fff; color: #1a1a1a; padding: 24px; max-width: 860px; margin: 0 auto; } #gnss-tokaido-line-gnss-analysis h1 { font-size: 17px; font-weight: 500; margin-bottom: 4px; } .sub { font-size: 12px; color: #888; margin-bottom: 20px; } .stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 20px; } .stat-card { background: #f5f5f3; border-radius: 8px; padding: 12px 14px; } .stat-label { font-size: 11px; color: #888; margin-bottom: 4px; } .stat-row { display: flex; gap: 8px; justify-content: space-between; align-items: flex-end; } .dev-val { font-size: 18px; font-weight: 500; } .dev-iph { color: #3266ad; } .dev-pix { color: #1d9e75; } .dev-label { font-size: 10px; color: #aaa; } .legend { display: flex; gap: 16px; margin-bottom: 8px; font-size: 12px; color: #555; } .legend span { display: flex; align-items: center; gap: 5px; } .leg-sq { width: 10px; height: 10px; border-radius: 2px; display: inline-block; } .section-title { font-size: 13px; font-weight: 500; color: #555; margin: 18px 0 6px; } .chart-wrap { position: relative; width: 100%; } .note { font-size: 11px; color: #999; margin-top: 6px; line-height: 1.5; } .info-table { width: 100%; border-collapse: collapse; font-size: 12px; margin-top: 12px; } .info-table td { padding: 4px 8px 4px 0; color: #555; border-bottom: 0.5px solid rgba(0,0,0,0.08); vertical-align: top; } .info-table td:first-child { color: #999; width: 40%; } .info-table td b { color: #1a1a1a; font-weight: 500; } #gnss-tokaido-line-gnss-analysis .alert { background: #fff8e1; border-left: 3px solid #f59e0b; border-radius: 4px; padding: 8px 12px; font-size: 11px; color: #92400e; margin-top: 8px; } #gnss-tokaido-line-gnss-analysis .alert::before, #gnss-tokaido-line-gnss-analysis .alert::after { content: none; display: none; } .two { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 4px; } #gnss-tokaido-line-gnss-analysis canvas {display:block;height:100%!important;width:100%!important} @media (max-width: 600px) { .stat-grid { grid-template-columns: 1fr 1fr; } .two { grid-template-columns: 1fr; } }
東海道線 川崎→新橋 GNSS精度比較
2026-04-11 · iPhone 13 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger
ログ地点数
815
iPhone 13 Pro
668
Pixel 8
記録時間
15.0 min
iPhone 13 Pro
13.5 min
Pixel 8
算出走行距離
17.6 km
iPhone 13 Pro
16.4 km
Pixel 8
トラック間偏差(中央値)
7.6 m
中央値
41.3 m
95%ile
iPhone 13 Pro(L1)
Pixel 8(L1+L5)
速度分布(km/h)
標高プロファイル(距離基準)
※ Pixel 8の標高値はiPhone比で綉40m高い。川崎周辺のジオイド高は綄36mであり、Pixel 8がWGS84楕円体高(MSL未補正)を記録している可能性が高い。
水平精度(トラック間偏差)
| 中央値 | 7.6 m |
| 平均 | 13.4 m |
| 95パーセンタイル | 41.3 m |
| 最大値 | 83.8 m |
| >50m 外れ値 | 15点(2.2%) |
| 終点間距離 | 66.9 m |
| 開始時刻差 | 100秒(Pixel遅延) |
標高ノイズ(std)
| iPhone 標高平均 | 9.4 m(MSL相当) |
| Pixel 標高平均 | 49.4 m(楕円体高の可能性) |
| iPhone std | 3.50 m |
| Pixel std | 7.88 m(iPhone比 2.3倍) |
| 品川駅 最近傍 | iPhone 5m / Pixel 59m |
| iPhone サンプリング | 平1.1s / 最大37s |
| Pixel サンプリング | 平1.2s / 最大130s |
川崎駅でのPixel 8記録開始遅延(綏100秒)あり。開始点が川崎駅から綏276m離れた地点。比較は品川~新橋区間が主体。
(function waitChart(){if(typeof Chart===“undefined”){if(!window._cjs){window._cjs=1;var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}setTimeout(waitChart,20);return;} const iphColor=‘#3266ad’,pixColor=‘#1d9e75’,tc=‘#888’; const labels=[‘0-10’,‘10-30’,‘30-60’,‘60-90’,‘90-120’,‘120-150’,‘150+’]; const iphHist=[123,5,119,161,373,12,8]; const pixHist=[3,4,114,160,386,0,1]; new Chart(document.getElementById(‘td-histChart’),{type:‘bar’,data:{labels,datasets:[{label:‘iPhone 13 Pro’,data:iphHist,backgroundColor:iphColor+‘cc’,borderColor:iphColor,borderWidth:1},{label:‘Pixel 8’,data:pixHist,backgroundColor:pixColor+‘cc’,borderColor:pixColor,borderWidth:1}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}},scales:{x:{ticks:{font:{size:11},color:tc},grid:{display:false}},y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘点数’,font:{size:11},color:tc}}}}}); const iphEle=[{d:0,e:8.6},{d:0.5,e:9.1},{d:1.0,e:9.1},{d:1.5,e:9.4},{d:2.0,e:10.2},{d:2.5,e:9.8},{d:3.0,e:10.3},{d:3.5,e:10.1},{d:4.0,e:9.7},{d:4.5,e:9.2},{d:5.0,e:8.8},{d:5.5,e:8.5},{d:6.0,e:8.1},{d:6.5,e:8.3},{d:7.0,e:8.9},{d:7.5,e:9.2},{d:8.0,e:10.1},{d:8.5,e:11.2},{d:9.0,e:12.1},{d:9.5,e:13.4},{d:10.0,e:14.2},{d:10.5,e:14.8},{d:11.0,e:13.9},{d:11.5,e:12.3},{d:12.0,e:11.4},{d:12.5,e:10.8},{d:13.0,e:10.1},{d:13.5,e:9.4},{d:14.0,e:8.8},{d:14.5,e:8.1},{d:15.0,e:7.6},{d:15.5,e:7.2},{d:16.0,e:7.0},{d:16.5,e:6.9},{d:17.6,e:6.9}]; const pixEle=[{d:0,e:60.0},{d:0.5,e:58.4},{d:1.0,e:57.5},{d:1.5,e:58.1},{d:2.0,e:57.8},{d:2.5,e:58.4},{d:3.0,e:57.9},{d:3.5,e:57.2},{d:4.0,e:57.6},{d:4.5,e:58.0},{d:5.0,e:57.8},{d:5.5,e:57.3},{d:6.0,e:57.6},{d:6.5,e:57.8},{d:7.0,e:58.1},{d:7.5,e:57.9},{d:8.0,e:58.4},{d:8.5,e:57.7},{d:9.0,e:57.3},{d:9.5,e:57.8},{d:10.0,e:57.5},{d:10.5,e:57.2},{d:11.0,e:57.8},{d:11.5,e:58.3},{d:12.0,e:57.9},{d:12.5,e:57.5},{d:13.0,e:57.2},{d:13.5,e:57.6},{d:14.0,e:57.8},{d:14.5,e:57.4},{d:15.0,e:57.1},{d:15.5,e:56.9},{d:16.0,e:56.7},{d:16.4,e:25.5}]; new Chart(document.getElementById(‘td-eleChart’),{type:‘line’,data:{datasets:[{label:‘iPhone 13 Pro’,data:iphEle.map(p=>({x:p.d,y:p.e})),borderColor:iphColor,backgroundColor:iphColor+‘22’,fill:true,pointRadius:0,borderWidth:1.5,tension:0.3},{label:‘Pixel 8’,data:pixEle.map(p=>({x:p.d,y:p.e})),borderColor:pixColor,backgroundColor:pixColor+‘22’,fill:true,pointRadius:0,borderWidth:1.5,tension:0.3,borderDash:[5,3]}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}},scales:{x:{type:‘linear’,title:{display:true,text:‘距離 (km)‘,font:{size:11},color:tc},ticks:{font:{size:11},color:tc},grid:{display:false}},y:{title:{display:true,text:‘標高 (m)‘,font:{size:11},color:tc},ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’}}}}}); })();
同一ルートでの電車 vs 歩行比較(京急川崎→鶴見)
同じ京急川崎―京急鶴見間を電車と徒歩で計測した結果を対比する。電車(8.8 m)より歩行(2.3 m)の方が3〜4倍高精度だった。
| 指標 | 歩行(2026-04-14) | 電車(2026-04-09) |
|---|---|---|
| 中央値 | 2.3 m | 8.8 m |
| 95%ile | 11.5 m | 22.1 m |
| >50m外れ値 | 0点 | 0点 |
電車の方が速度は速いが精度は低い。これは車体が常に四方を囲む構造による遮蔽が原因であり、移動速度とGNSS精度の間に直接的な因果関係はない。
開放環境での高速道走行が電車より高精度だった環境③の結果と組み合わせると、このメッセージはより強固なものになる。
#gnss-keikyu-walking-gnss *, #gnss-keikyu-walking-gnss *::before, #gnss-keikyu-walking-gnss *::after {box-sizing:border-box;margin:0;padding:0} #gnss-keikyu-walking-gnss {font-family:-apple-system,BlinkMacSystemFont,“Segoe UI”,sans-serif;background:#fff;color:#1a1a1a;padding:24px;max-width:900px;margin:0 auto} #gnss-keikyu-walking-gnss h1 {font-size:17px;font-weight:500;margin-bottom:4px} .sub{font-size:12px;color:#888;margin-bottom:16px} .sg{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px} .sc{background:#f5f5f3;border-radius:8px;padding:11px 13px} .sl{font-size:11px;color:#888;margin-bottom:4px} .sr{display:flex;gap:6px;justify-content:space-between;align-items:flex-end} .dv{font-size:17px;font-weight:500} .di{color:#3266ad}.dp{color:#1d9e75} .dl{font-size:10px;color:#aaa} .legend{display:flex;gap:16px;margin-bottom:8px;font-size:12px;color:#555} .legend span{display:flex;align-items:center;gap:5px} .lsq{width:10px;height:10px;border-radius:2px;display:inline-block} .st{font-size:13px;font-weight:500;color:#555;margin:14px 0 5px} .cw{position:relative;width:100%} .two{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:14px} .it{width:100%;border-collapse:collapse;font-size:12px} .it td{padding:3px 6px 3px 0;color:#555;border-bottom:0.5px solid rgba(0,0,0,0.08)} .it td:first-child{color:#999;width:45%} .it td b{color:#1a1a1a;font-weight:500} .hl{background:#ecfdf5;border-left:3px solid #1d9e75;border-radius:4px;padding:8px 12px;font-size:11px;color:#065f46;margin-bottom:14px} .wl{background:#fffbeb;border-left:3px solid #f59e0b;border-radius:4px;padding:8px 12px;font-size:11px;color:#92400e;margin-top:8px} #gnss-keikyu-walking-gnss canvas {display:block;height:100%!important;width:100%!important} @media(max-width:600px){.sg{grid-template-columns:1fr 1fr}.two{grid-template-columns:1fr}}
京急川崎→京急鶴見 歩行測定 GNSS精度比較
2026-04-14 13:49〜14:36 JST · 徒歩絈4.3km · iPhone 12 Pro(L1)vs Pixel 8(L1+L5)· ITQ GeoLogger
ログ点数 / 時間
2,874
iPhone / 47.4min
2,845
Pixel / 47.5min
走行距離
4.36 km
iPhone 12 Pro
4.21 km
Pixel 8
トラック間偏差
2.32 m
中央値
11.5 m
95%ile
開始時刻差 / 終点間
3秒
開始差
12.6 m
終点間
>50m外れ値ゼロ・中央剂2.32m。47分・4.3kmの長距離歩行で全環境中トップクラスの精度。
電車(同ルート)の中央剂8.8mと比べて絉4倍高精度。「速度ではなく遥蔽環境が精度を決める」を歩行 vs 電車で直接実証。
iPhone 12 Pro(L1)
Pixel 8(L1+L5)
速度分布(km/h)— 歩行速度域(5〜10km/h帯が主体)
同ルート 電車 vs 歩行 精度比較(トラック間偏差)
精度詳細
| トラック中央値 | 2.32 m |
| 平均 | 3.79 m |
| 95%ile | 11.47 m |
| 最大 | 42.52 m |
| >50m外れ値 | 0点(0.0%) |
| 終点間距離 | 12.6 m |
| iPhone dt | 平0.99s / 最大8.4s |
電車(同ルート)との比較:
中央値 2.32m vs 8.8m(3.8倍)
95%ile 11.5m vs 22.1m(1.9倍)
標高
| iPhone 標高平均 / std | 5.3 m / 1.61 m(MSL) |
| Pixel 標高平均 / std | 40.0 m / 4.06 m |
| オフセット | +34.7 m(ジオイド高≈36mに近い) |
| 標高std比率 | Pixel 2.5倍悪い(電車と同傾向) |
Pixelの標高オフセット+34.7mは全測定中ジオイド高 36mに最も近い値の一つ。川崎エリアの楕円体高/MSL問題を歩行でも一貫して確認。
(function waitChart(){if(typeof Chart===“undefined”){if(!window._cjs){window._cjs=1;var _s=document.createElement(‘script’);_s.src=‘https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.js’;document.head.appendChild(\_s);}setTimeout(waitChart,20);return;} const ic=‘#3266ad’,pc=‘#1d9e75’,tc=‘#888’; new Chart(document.getElementById(‘walking-hc’),{type:‘bar’,data:{labels:[‘0-2’,‘2-5’,‘5-10’,‘10-15’,‘15-20’,‘20+’],datasets:[{label:‘iPhone 12 Pro’,data:[149,703,1955,44,7,16],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1},{label:‘Pixel 8’,data:[165,973,1641,56,5,5],backgroundColor:pc+‘cc’,borderColor:pc,borderWidth:1}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:false}},scales:{x:{ticks:{font:{size:11},color:tc},grid:{display:false},title:{display:true,text:‘速度 (km/h)‘,font:{size:11},color:tc}},y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘点数’,font:{size:11},color:tc}}}}}); new Chart(document.getElementById(‘comp’),{type:‘bar’,data:{labels:[‘中央値’,‘95%ile’,‘最大’],datasets:[{label:‘歩行(今回)‘,data:[2.32,11.47,42.52],backgroundColor:ic+‘cc’,borderColor:ic,borderWidth:1},{label:‘電車・京急(同ルート)‘,data:[8.8,22.1,48.2],backgroundColor:‘#ba751788’,borderColor:‘#ba7517’,borderWidth:1}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{display:true,position:‘top’,labels:{boxWidth:10,font:{size:11},color:tc}}},scales:{x:{ticks:{font:{size:11},color:tc},grid:{display:false}},y:{ticks:{font:{size:11},color:tc},grid:{color:‘rgba(0,0,0,0.06)’},title:{display:true,text:‘偏差 (m)‘,font:{size:11},color:tc}}}}}); })();
標高:電車環境ではiPhoneが常に優位
電車環境では一貫してiPhoneの標高ノイズがPixel 8より小さかった。車体遮蔽はマルチパスよりも一様に信号を遮るため、L5のマルチパス耐性が発揮する場面がなかったと想定される。
| 区間 | iPhone std | Pixel 8 std | 比率 |
|---|---|---|---|
| 京急 川崎→鶴見 | 1.67 m | 8.69 m | 5.2倍 |
| 東海道 横浜→川崎 | 2.73 m | 9.28 m | 3.4倍 |
| 東海道 川崎→新橋 | 3.50 m | 7.88 m | 2.3倍 |
考察
- **精度を決めるのは速度ではなく遮蔽環境。**京急区間(0〜10 km/h帯最多)の電車で停車頻度が高くても水平精度に劣化は見られない。「停車はGNSS精度に影響しない」が示された。
- L1+L5の標高優位性は電車環境では現れない。車体遮蔽はマルチパスとは異なり、L5の選択性が利かない環境である。
- iPhoneの不規則サンプリング(最大37秒ギャップ)は瞬間速度の過大評価を招く。実際の最高速度を数値として出す場合は、Pixel 8の1秒サンプリングデータの方が信頼性が高い。
iPhone vs Android 比較まとめ
環境別 水平精度(トラック間偏差)
| 環境 | 測定種別 | 中央値 | 95%ile | 特記 |
|---|---|---|---|---|
| ① 開放空間 | 歩行 | 1.0〜2.0 m | 2.9〜3.2 m | 全点<5m、両端末同等 |
| ① 開放空間 | 定点 | 中央値間距離 3.0〜3.7 m | ― | 内部バラつき<2m |
| ② 都市渓谷 | 歩行 | 1.6〜13.8 m | 11.8〜42.1 m | セッションで大幅変動 |
| ② 都市渓谷 | 定点 | 中央値間距離 21.6〜67.5 m | ― | 開放空間の7〜18倍 |
| ③ 高速道走行 | 走行 | 2.2 m | 5.3 m | 電車より高精度 |
| ③ 一般道(正常区間) | 走行 | 1.8〜5.4 m | 3.8〜5.6 m | iPhoneの175秒断絶あり |
| ④ 電車(京急) | 乗車 | 8.8 m | 22.1 m | 歩行同ルートの3〜4倍悪化 |
| ④ 電車(東海道) | 乗車 | 7.6〜10.1 m | 24.5〜41.3 m | ルートの遮蔽度に依存 |
標高精度:環境で逆転する優位性
| 環境 | iPhone std | Pixel 8 std | 優位端末 | 備考 |
|---|---|---|---|---|
| 開放空間(歩行・定点) | 0.35〜0.76 m | 0.64〜0.90 m | iPhone | 全測定中最小 |
| 都市渓谷(歩行B/C) | 14.42〜31.97 m | 6.87〜14.99 m | Pixel 8 | 2.1倍の差 |
| 都市渓谷(定点) | 9.00〜17.88 m | 1.72〜2.98 m | Pixel 8 | 定点Bは10.4倍の差 |
| 電車(全区間) | 1.67〜3.50 m | 7.88〜8.69 m | iPhone | 2〜5倍の差 |
| 高速道走行 | 15.80 m | 16.28 m | 同等 | 標高変動は高架を反映 |
標高絶対値:Androidの楕円体高/MSL問題
| 環境 | iPhone 平均標高 | Pixel 8 平均標高 | オフセット |
|---|---|---|---|
| 開放空間(東扇島) | 4.5〜6.0 m(MSL) | 35〜38 m(楕円体高) | +31〜32 m |
| 一般道走行(川崎) | 6.3 m | 40.2 m | +33.9 m |
| 高速道走行 | 18.2 m | 52.6 m | +34.4 m |
| 都市渓谷(横浜) | 94〜101 m(マルチパス誤差) | 56〜79 m(マルチパス誤差) | マルチパスが支配的 |
川崎エリアのジオイド高は約36 mであり、Pixel 8のオフセット(+31〜35 m)とよく一致する。AndroidのLocation.getAltitude()はMSL補正なしの楕円体高を返すため、標高を使うアプリではOS問わず「実際の標高(MSL)か楕円体高か」を確認しておく必要がある。
端末別 特性まとめ
| 項目 | iPhone(L1) | Pixel 8(L1+L5) |
|---|---|---|
| 水平精度(開放空間) | ☆☆☆☆☆ 同等 | ☆☆☆☆☆ 同等 |
| 水平精度(都市渓谷) | セッション依存 | セッション依存 |
| 垂直精度(開放空間) | 高精度(0.35 m) | 良好(0.64 m) |
| 垂直精度(都市渓谷) | 悪化大(14〜32 m) | 相対的に安定(7〜15 m) |
| 垂直精度(電車) | 高精度(1.7〜3.5 m) | 悪化(8〜8.7 m) |
| 標高基準 | MSL(海抜基準) | 楕円体高(+31〜35 mのオフセット) |
| サンプリング安定性 | 最大37秒ギャップあり | 1秒基本・安定 |
| GPS断絶耐性 | 工業地帯で175秒断絶 | 最大46秒のギャップ |
まとめと考察
知見1:精度を決めるのは端末スペックよりも遮蔽環境
L1+L5デュアル周波数の水平精度優位性は、今回の測定では開放空間・電車環境において明確には現れなかった。一方、同じ水平精度でも環境によって誤差は最大10倍以上変わる。
| 環境 | 95%ile トラック間偏差 |
|---|---|
| 開放空間(歩行) | 3 m |
| 高速道走行 | 5 m |
| 一般道走行(正常区間) | 6 m |
| 電車(京急) | 22 m |
| 電車(東海道) | 25〜41 m |
| 都市渓谷(歩行) | 12〜42 m |
| 都市渓谷(定点) | 系統誤差 22〜68 m |
知見2:L1+L5の優位性は垂直精度・遮蔽環境でこそ発揮される
L5周波数がマルチパス信号を周波数間位相差で判別できる効果は、ビル密集地のようなマルチパス環境で初めて現れる。都市渓谷の定点測定でiPhoneの標高stdが最大17.88 mに達したのに対し、Pixel 8は1.72 mと10倍以上安定していた。
電車環境では逆転する。車体による均一的な遮蔽はL5の選択性が利かない環境であり、iPhoneが常に優位だった。L1+L5の優位性は「マルチパスのある遮蔽」に対しており、全盲的な遮蔽には効かない。
知見3:AndroidのLocation.getAltitude()は楕円体高を返す
Pixel 8の標高値は全測定セッションを通じて川崎エリアのジオイド高(約36 m)分だけ一貫して高い値を記録した。iOSのCore LocationはMSL補正済みの値を返すのに対し、Androidは生の楕円体高を返す。アプリ開発で標高を扱う際の実装チェックリストを示す。
- iOS:
CLLocation.altitude→ MSL(海抜基準、地図表示にそのまま使える) - Android:
Location.getAltitude()→ WGS84楕円体高(地域のジオイド高を減算する処理が必要) - AndroidでMSLを得るには
GeomagneticFieldや地域別ジオイドモデルを使った補正が必要
用途別推奨
| 用途 | 推奨端末 | 理由 |
|---|---|---|
| 郊外・開放空間での軌跡記録 | どちらでも可 | 内部精度は両端末とも実用上十分 |
| 都市部の街歩き・ナビゲーション | Pixel 8(L1+L5) | 垂直精度が安定し、高層階廊判定のヒントになりやすい |
| 標高を記録・表示するアプリ | iOS(シンプル) | MSL値をそのまま使える。Androidは補正実装が必要 |
| 高速道・長距離走行の軌跡記録 | どちらでも可 | 高速道開放環境では両端末とも5 m級の精度 |
| 電車内の位置記録 | iPhone(標高重視時) | 車体遮蔽環境ではL5の効果なく、iPhoneの垂直精度が安定 |
| 工業地帯・トンネル通過のリアルタイム位置計測 | 両端末とも要注意 | iPhoneは断絶リスクあり。断絶後の再捕捉が完了するまで座標を信頼しない設計が必要 |
おわりに
「GNSSの精度は場所で大きく変わる」ことは感覚的に知っていても、数値で見るとそのスケール感が遠い。開放空間の3 mと都市渓谷定点の67 mは同じスマートフォンで同じ操作をして得られた数値である。
今回の測定に使用した ITQ GeoLogger(Google Play) はGPX / CSV形式で詳細な測位ログを取得できる。「自分の通勤ルートで軌跡がずれる場所はどこか」「定点では何mの誤差が出るか」を自分で検証するのに向いている。
GNSSの理論的な裏付け(マルチパス・ジオイド高・周波数帯の影響等)については ITQ Laboratory の測位学コンテンツで詳しく説明している。実測データと理論を照らし合わせて読むと、各環境で何が起きていたのかがより深く理解できる。