P1で確立したDG-PRO1RWSのNMEA GGA/RMC入力を地図表示へ接続し、現在地の更新、接続状態、エラーをPC上で確認できるプロトタイプを作る。現地利用を想定し、圃場の識別性とオフライン利用の要否も実際の表示結果から判断する。
| 項目 | 当初計画 | 実績 | 変更理由 |
|---|---|---|---|
| 背景地図 | 無料の地図ソースを選定 | OpenFreeMap、国土地理院航空写真、オフライン地図・航空写真を切替可能 | 一般地図だけでは圃場を判読しにくく、現地は圏外の可能性がある |
| 圃場表示 | 対象外 | 農林水産省の筆ポリゴンを境界線overlayとして追加 | 航空写真だけより圃場区画を識別しやすくするため |
| データ入力 | 解析済み位置をアプリへ渡す | 保存済みNMEAログ再生とライブTCP入力 | 表示側をログで切り分けて検証し、最終的に実機ライブ経路を確認するため |
| 更新方式 | 新データ受信時に画面更新 | PythonローカルHTTPサーバー、/api/fix、JSONポーリング |
外部フレームワークなしで最小構成にするため |
| 状態表示 | 接続またはエラーを確認 | 接続、切断、再接続、stale、EOF、無効Fix、checksum不整合を表示 | 現場で停止原因と復旧状況を判断できるようにするため |
| オフライン | 要否を判断して方針を記録 | 必要と判断し、対象地点周辺のデータとライブラリをローカル化 | 山間部で圏外の可能性があり、オンライン専用では現地利用できないため |
| 対象地域 | 未指定 | 高知県高岡郡四万十町口神ノ川周辺 | P1測定地点で表示品質と実用性を確認するため |
DG-PRO1RWS → Bluetooth SPP → Windows COM6 → serial_bridge.ps1
→ TCP 127.0.0.1:2947 → tools/map/live_source.py
保存済みNMEAログ → tools/map/replay_source.py
→ FixStateStore
→ Python http.server + /api/fix
→ MapLibre GL JS + JSON polling
主な成果物:
tools/map/server.py: ローカルHTTPサーバーと/api/fixtools/map/fix_state.py: 最新の有効Fix、接続、エラー状態の共有tools/map/replay_source.py: 保存済みログの平均レート再生tools/map/live_source.py: ライブTCP受信と有限バックオフ再接続tools/map/static/: 地図画面、背景設定、筆ポリゴン、オフライン地図データ、vendorライブラリtools/map/extract_fude_overlay.py: 対象地域の筆ポリゴン抽出tools/map/extract_offline_basemap.py: 対象地域のPMTiles抽出tools/map/cache_offline_tiles.py: 対象地域の航空写真タイル準備tools/map/README.md: 起動、検証、データ更新、制約/api/fixと画面で接続、切断、再接続、error、stale、EOFを確認できるfix_quality=0、RMC status=V、checksum不整合を有効位置と区別するtools/map/README.mdへ記録した当初の完了条件4点はすべて満たした。実際の画面確認から圃場識別とオフライン利用が必要と分かり、当初計画を超えて航空写真、筆ポリゴン、オフラインデータ、実機ライブ再接続まで実装・確認した。P3へ進むためのPC側プロトタイプと入力・表示・データ境界は揃っている。