EPSON GPSウォッチ ログ抽出ツール Version 1.04
本アプリはEPSONのGPSウォッチ(WristableGPS)内のGPSログ(ワークアウトデータ)を
WindowsPCのダウンロードフォルダに抽出するツールです。
Windowsの「EpsonView」アプリのインストールフォルダに本アプリを置いて頂くことで
動作します。EPSONからのEpsonViewアプリの配布は終了している可能性がありますので、
過去にEpsonViewを利用されており、今も環境が残っている方のみが利用できると思います。
ウォッチのワークアウトをPCに転送すると以下のファイルが生成されます。
(1) GPXファイル
緯度、経度、高度、時間、心拍数を出力します。
※現在のバージョンではGPXファイルの出力は"SF Series"のみです。
(2) CSVファイル
以前、EpsonViewのサイトでサポートされていたBACKUP形式(CSVファイル)
です。ワークアウトの詳細な情報(ラップタイム、ストライド、ピッチ、
斜度など)が出力されています。BACKUP形式の読み込みに対応している
Webサイト(RUNALYZEなど)にアップロードすることでワークアウトの
詳細な内容を確認することができます。
※現在のバージョンでは"J-xxx"のウォッチの場合、ラップデータのみを
出力します。"SF Series"はほぼすべてのデータを出力します。
(3) 複数のBINファイル
ウォッチ内のワークアウトの内部形式(BINファイル)です。
通常は参照する必要はありません。本ツールはまだまだ開発途中でして、
もしウォッチのデータの解析に興味を持たれた方がおられましたら、
ぜひ解析にご協力頂きたいという思いで出力しています。
なお詳細なインストール方法や利用方法についてはダウンロードしたファイルの「お読みください」に記載しております。
WindowsPCのダウンロードフォルダに抽出するツールです。
Windowsの「EpsonView」アプリのインストールフォルダに本アプリを置いて頂くことで
動作します。EPSONからのEpsonViewアプリの配布は終了している可能性がありますので、
過去にEpsonViewを利用されており、今も環境が残っている方のみが利用できると思います。
ウォッチのワークアウトをPCに転送すると以下のファイルが生成されます。
(1) GPXファイル
緯度、経度、高度、時間、心拍数を出力します。
※現在のバージョンではGPXファイルの出力は"SF Series"のみです。
(2) CSVファイル
以前、EpsonViewのサイトでサポートされていたBACKUP形式(CSVファイル)
です。ワークアウトの詳細な情報(ラップタイム、ストライド、ピッチ、
斜度など)が出力されています。BACKUP形式の読み込みに対応している
Webサイト(RUNALYZEなど)にアップロードすることでワークアウトの
詳細な内容を確認することができます。
※現在のバージョンでは"J-xxx"のウォッチの場合、ラップデータのみを
出力します。"SF Series"はほぼすべてのデータを出力します。
(3) 複数のBINファイル
ウォッチ内のワークアウトの内部形式(BINファイル)です。
通常は参照する必要はありません。本ツールはまだまだ開発途中でして、
もしウォッチのデータの解析に興味を持たれた方がおられましたら、
ぜひ解析にご協力頂きたいという思いで出力しています。
なお詳細なインストール方法や利用方法についてはダウンロードしたファイルの「お読みください」に記載しております。
画面イメージ
改版履歴
2025/04/25 Ver0.1 初版リリース
2025/04/26 Ver0.11 画面デザインの見直し
2025/05/03 Ver0.12 サイズが0のワークアウトがあった場合の処理追加
デバッグトレースの追加
2025/05/08 Ver0.13 ワークアウトのダウンロードの際に内部的に指定するClassIdの
値が一部のウオッチにしか対応できていませんでした。このため
例えば"SF Series"のウオッチの場合はダウンロードでエラーと
なっていました。本バージョンからウォッチの製品名に応じた
ClassIdを設定するよう改善しております。
2025/05/15 Ver0.14 ワークアウトの内部形式ファイルをCSVファイルに変換する機能
を追加しました。主に"SF Series"のウォッチのワークアウトフ
ァイルのヘッダ部分(ラップデータ等)の情報のみを変換出力しま
す。
2025/05/17 Ver0.15 CSVファイルに出力する情報の量と精度を改善しました。
CSVファイルを"RUNALYZE"にアップロードすることでワークアウト
の内容が確認できるようになりました。
2025/06/02 Ver0.16 CSVファイルを出力する際に同時にワークアウトの内部形式ファイ
ルを解析しやすいように3つのファイルに分割する機能を追加
しました。
2025/06/05 Ver0.17 CSVファイルを出力する際に同時にGPXファイルも生成するように
しました。まだ座標計算が正確ではないため、少し離れた位置で
生成されてしまいます。また今回よりCSVファイルにGPSの情報を
出力しましたが、そのためかRUNALYZEへのアップロードに失敗す
るようになりました。現在調査中です。(Ver1.0で解決済)
2025/06/07 Ver1.00 正式にGPXファイル、CSVファイルの出力に対応しました。
※"SF Series"のみです。
2025/06/08 Ver1.01 高度(Altitude)の出力に対応しました。
高度差のあるテストデータが不足しているため、テストが十分で
はありません。高度を求めるための係数がconfigファイルにあり
ますので、もし不満足な値でしたら係数の調整をお願いします。
海外の方からのご要望にお応えして、日本語以外のWindowsで
起動した場合は英語で表示するようにしました。
2025/06/08 Ver1.02 心拍数(HeartRate)の出力に対応しました。
現在の対応方法はSF-810の場合は心拍数データあり、SF-110
は心拍数データなしと判断して出力します。
SF-810で心拍数機能をオフで記録されたワークアウトの場合、
心拍数は0(ゼロ)で出力します。将来ヘッダの情報を特定し、
オフの場合は心拍に関する情報を出力しないように改善する
予定です。
2025/06/11 Ver1.03 心拍数(HeartRate)のデータを詳細に出力するようにしました。
出力したCSVファイルをRUNALYZEにインポートすることで、心拍
数グラフの表示などが行えます。その他、GPXファイルの時間の
出力方法を改善しました。
2025/06/13 Ver1.04 ウォッチのモデルが"J-xxx"のCSV出力に対応しました。主にラッ
プ系のデータのみです。
CSV/GPXの出力の際に「BODY部の抽出に失敗しました」のエラー
が時折発生する問題に対応しました。
2025/04/26 Ver0.11 画面デザインの見直し
2025/05/03 Ver0.12 サイズが0のワークアウトがあった場合の処理追加
デバッグトレースの追加
2025/05/08 Ver0.13 ワークアウトのダウンロードの際に内部的に指定するClassIdの
値が一部のウオッチにしか対応できていませんでした。このため
例えば"SF Series"のウオッチの場合はダウンロードでエラーと
なっていました。本バージョンからウォッチの製品名に応じた
ClassIdを設定するよう改善しております。
2025/05/15 Ver0.14 ワークアウトの内部形式ファイルをCSVファイルに変換する機能
を追加しました。主に"SF Series"のウォッチのワークアウトフ
ァイルのヘッダ部分(ラップデータ等)の情報のみを変換出力しま
す。
2025/05/17 Ver0.15 CSVファイルに出力する情報の量と精度を改善しました。
CSVファイルを"RUNALYZE"にアップロードすることでワークアウト
の内容が確認できるようになりました。
2025/06/02 Ver0.16 CSVファイルを出力する際に同時にワークアウトの内部形式ファイ
ルを解析しやすいように3つのファイルに分割する機能を追加
しました。
2025/06/05 Ver0.17 CSVファイルを出力する際に同時にGPXファイルも生成するように
しました。まだ座標計算が正確ではないため、少し離れた位置で
生成されてしまいます。また今回よりCSVファイルにGPSの情報を
出力しましたが、そのためかRUNALYZEへのアップロードに失敗す
るようになりました。現在調査中です。(Ver1.0で解決済)
2025/06/07 Ver1.00 正式にGPXファイル、CSVファイルの出力に対応しました。
※"SF Series"のみです。
2025/06/08 Ver1.01 高度(Altitude)の出力に対応しました。
高度差のあるテストデータが不足しているため、テストが十分で
はありません。高度を求めるための係数がconfigファイルにあり
ますので、もし不満足な値でしたら係数の調整をお願いします。
海外の方からのご要望にお応えして、日本語以外のWindowsで
起動した場合は英語で表示するようにしました。
2025/06/08 Ver1.02 心拍数(HeartRate)の出力に対応しました。
現在の対応方法はSF-810の場合は心拍数データあり、SF-110
は心拍数データなしと判断して出力します。
SF-810で心拍数機能をオフで記録されたワークアウトの場合、
心拍数は0(ゼロ)で出力します。将来ヘッダの情報を特定し、
オフの場合は心拍に関する情報を出力しないように改善する
予定です。
2025/06/11 Ver1.03 心拍数(HeartRate)のデータを詳細に出力するようにしました。
出力したCSVファイルをRUNALYZEにインポートすることで、心拍
数グラフの表示などが行えます。その他、GPXファイルの時間の
出力方法を改善しました。
2025/06/13 Ver1.04 ウォッチのモデルが"J-xxx"のCSV出力に対応しました。主にラッ
プ系のデータのみです。
CSV/GPXの出力の際に「BODY部の抽出に失敗しました」のエラー
が時折発生する問題に対応しました。
開発の経緯
私以外にもEPSONのGPSウォッチで山行ログを取っていた方が、きっとおられるのではないかと思います。2025年3月末でEPSONでのサポートが終了したためと思いますが、4月からEpsonViewを用いたウォッチからのGPXファイル取り出しが出来なくなりました。
4月下旬、代替のツールを作って、なんとかウォッチの内部形式で取り出すことには成功しました。しかし内部形式の解析は思った以上に困難でした。そこでこのヤマノートに開発中のツールを公開してみましたところ、国内および海外から解析に協力して頂ける方が現れて、あれよあれよと言う間に解析が進み、2か月足らずで一応使い物になるツールが完成してしまいました。公開した私自身驚きです。(^^;
現在GPXファイルの出力は"SF Series"のみですが、今後も新たな協力者が現れることを期待しながら、少しづつアップデートを続けてゆこうと思います。
4月下旬、代替のツールを作って、なんとかウォッチの内部形式で取り出すことには成功しました。しかし内部形式の解析は思った以上に困難でした。そこでこのヤマノートに開発中のツールを公開してみましたところ、国内および海外から解析に協力して頂ける方が現れて、あれよあれよと言う間に解析が進み、2か月足らずで一応使い物になるツールが完成してしまいました。公開した私自身驚きです。(^^;
現在GPXファイルの出力は"SF Series"のみですが、今後も新たな協力者が現れることを期待しながら、少しづつアップデートを続けてゆこうと思います。
ツールのダウンロード
お気に入りした人
人
拍手で応援
拍手した人
拍手
kfd01567さんの記事一覧
-
EPSON GPSウォッチ ログ抽出ツール Version 1.04 19 更新日:2025年06月14日
-
ヤマレコ→YAMAPデータ移行ツール Ver1.6 341 更新日:2024年04月06日
-
GPXファイルの日時シフトツール(Windows PC用) 13 更新日:2023年04月11日
※この記事はヤマレコの「ヤマノート」機能を利用して作られています。
どなたでも、山に関する知識や技術などのノウハウを簡単に残して共有できます。
ぜひご協力ください!
バイナリデータはヘッダ部にアスキー文字でキーワードが埋め込まれている場合が多いのでそれをもとにデータ形式を探る方法もあるかと思います。
しかしアプリのサポートが終了するとOSのバージョンアップなどで使えなくなることもあるのでつらいところですね。
https://github.com/kfd01567/EpsonViewSupportApp/raw/188f85acb253d2c7bd8da499b9fcfb0d99bfb3b4/workout_binary_28.zip
やはりはずれでしたか。自分の持っているGPSロガーがFIT形式だったので可能性もあるかと思いましたがそううまくはいかないものですね。
ファイルも見ましたが私のレベルでは簡単には解析できそうになさそうな感じです。
余計なコメントをいれてしまったようで申し訳ないです。
データを眺めていたらちょっと解析に興味が出てきました。差し支えなければ比較用にデータを一つ追加して頂き変換結果のデータも追加して頂けないでしょうか。
変換後のデータからバイナリに逆変換して検索すれば解析がしやすいのでは思います。
いろいろと試せば解析のきっかけぐらいにはなるかもしれません。
https://github.com/kfd01567/EpsonViewSupportApp/raw/7ee6d41e2ec3bc16e793846eab7a540f52ef7c97/workout44_46_47.zip
せっかくデータをとって頂いたのに確認するのが遅くなってしまい申し訳ないです。
まず複数のファイルを比較して共通データを洗い出そうとしたのですが差異がありすぎて共通データが見いだせない状況です。
想定していたのとデータ構造が違うようで解析は難しいそうです。
多分固定部も含めてGPSの位置情報以外のデータも多数入っているのではないかと思います。
そこでデータを整理し直してみました。
FileNo Start End Lap(s) Data size
No28 11:47:32 11:47:54 22 1,817
No44 13:41:28 13:54:09 761 30,973
No46 14:13:31 14:18:52 321 12,465
No47 14:51:31 14:52:40 69 1,967
複数のデータから1秒間に追加されるデータのサイズを計算してみました(必ずしもサンプリング間隔が1秒とは限らない)
No28と47から (1967-1817)/(69-22) = 3.19
No47と46 (12465-1967)/(321-69) = 41.65
No46と44 (30973-12465)/(761-321) = 42.06
No47と44 (30973-1967)/(761-69) = 41.91
多分No28は設定の違いなどで他と固定部のサイズが大きく違っているように思われます。
No28を除くと1秒に約42byte追加される計算になりまずが、逆算して固定部のサイズを出すとマイナスになるので必ずしも1回/秒でデータが追加されているわけでもなさそうです。
仮に緯度や経度などのデータが4byteだとする10種類程度のデータが記録できることになるのでGPS情報以外にも情報が入っているのではないでしょうか。
もしかしたらサンプリング間隔や内容も設定やモードによって異なっているかもしれませんので変換前後のデータが対でほしいところですが仕方ないですね。
できればEPSONがフォーマットを公開してもらえると一番いいのですが・・・
ちょっと無理っぽいですがもう少しデータを調べてみますので、追加の情報があればメッセージか何かで教えてもらえるとうれしいです。
https://github.com/kfd01567/EpsonViewSupportApp/raw/3ee5304fcc7c975c64374b5c227aebd0a567489f/20250114.zip
データを拝見しました。今回アップロードされたデータは先のデータとは異なり規則性が見られました。0x1D8(472) あたりから 0x39(57)バイトごとに同じデータがでてきます。ヘッダも若干異なることから出力方法が異なるようにも思えます。内容を把握するのはまだ難しいですが手掛かりになりそうです。
データの解析用にバイナリビューワを作成してみたのでもしよければ使ってみてください。
https://github.com/katsushigeyoshida/ToolApp?tab=readme-ov-file
ここからToolApp.zipをダウンロードしてもらい、解凍してToolApp.exeを起動しバイナリビューワをダブルクリックすればビューワが開きます。ファイルパスのコンボボックスをダブルクリックしてファイルを選択します。そこで行バイト数に57と入力して「再表示」ボタンを押すとデータの周期性が分かる表示になると思います。
<SF Series 57バイト固定長の追加のデータ[CSVとBINと途中の解析情報]>
https://github.com/kfd01567/EpsonViewSupportApp/raw/33f53db8f3f5e74ea79f1bb27d42e614e877cfb5/20250206.zip
<SF Series 53バイト固定長のデータ[CSVはなし]>
https://github.com/kfd01567/EpsonViewSupportApp/raw/33f53db8f3f5e74ea79f1bb27d42e614e877cfb5/workout_binary_1_jpn_sf.zip
バイナリビューワの提供もありがとうございました。さっそく利用させて頂きました。1行のバイト数を自由に設定できるバイナリエディタの必要性を強く感じましたので、その後lmhexというOSSを見つけて使っています。参考までに上記のデータを開いた画面を以下に置いています。
https://github.com/kfd01567/EpsonViewSupportApp/raw/33f53db8f3f5e74ea79f1bb27d42e614e877cfb5/lmhexScreenShot_jpn.png
※EPSONのGPSウォッチには様々なモデルがあるようですが、私もよく把握できておりません。もしかすると、Version0.13の各モデルの対応だけでは不十分かも知れません。(^^; もしダウンロードに失敗した場合は手作業で「内部で指定する固定値」を算出して、configファイルに定義する機能も今回追加しておりますのでご活用頂ければと思います(少々手間ですので技術者向けです)。
ex.19 05 0B 08 25 24
&h19=25 は2000が省略された西暦で
月・日・TOKYO時差9時間を加算して時・分・秒です。
(注:時差9時間で日付がズレる場合もあります)
ex.19 05 0B 08 25 24 = 2025-05-11 17:37'36
----
データ概要
FFFF……FFFF
ラップ1概要
FFFF……FFFF
ラップ2概要
FFFF……FFFF
ラップ3概要
FFFF……FFFF
移動データ(大量)
----
こんな感じです。
GPS軌跡の解析は難しくても
ラップデータだけでも抽出できたら、
最低限の仕事はしてくれるソフトウェアになるのではないでしょうか。
眺めているとアドレス&h001Cがカロリーとか分かります。
またGPSデータの混じらないインドア計測すると
移動データ(大量)が比較的00で埋まるシンプルなデータが取れます。
同一ウォッチを2つ並べて持ち、
1つはインドア、1つはGPS計測で計測し
その差分を調べたらGPS計測の差分が絞り込めて
解析のヒントになるかもしれません。
katsushigeさんの情報から、"SF Series"のボディ部は1レコードが53バイトまたは57バイトの固定長であることが分かりましたので、2種類のワークアウトファイル(1つはSF-110で、もう1つは別のSF-xxx)を並べて比較してみました。
少し大きな画像ですが、比較の画面を以下に置いていますので参照して頂ければ幸いです。
https://github.com/kfd01567/EpsonViewSupportApp/raw/e4c1112d7eb12ed37b6dd49e12960abbd0b27b41/compare2.png
解析に使用した2つのワークアウトファイルはいずれもこの上の投稿にあるものですが、解析しやすいようにヘッダ部を削除したり、レコードの途中に時折混ざるデータを削除して解析しやすくしたものを参考までに以下に置いています。
<2025/6/5編集>
上記で述べているレコードの途中に混ざるデータは8バイト、64バイトの2パターンがあり、これらのデータを別ファイルに抽出する機能をVer.016で追加しています。(以前は手作業で削除していました)
ですので、以前置いていたファイルは削除しています。
「ラップデータだけでも抽出できたら、最低限の仕事はしてくれるソフトウェアになるのではないでしょうか。」は嬉しいお言葉ですが、RUNNET等ランニング系の掲示板での話でしたらそれでもOKでしょう。ここはヤマレコの掲示板ですので、最低限の仕事がGPS軌跡の出力だと思っています(志は高く!?)。
CSVデータのあるデータだけ確認しているのですが[LapData]は0x80から128(0x80)byte単位で書き込まれているようです。
workout_binary_0.bin
LapData 128(0x80) byte
00080 - 00FF Value Offset
LapNo, 1, 0x01 00
EndPoint, 999999,
LapTime, 2456, 0x998
LapDistance, 6751, 0x1A5F 0C
LapCalorie, 567, 0x237 18
LapPaceAve, 363, 0x16B
LapSpeedAve, 9895, 0x26A7 1E
LapPitchAve, 162, 0xA2 2A
LapStrideAve, 98, 0x62 2E
LapKind, 1, 0X01 02
LapSteps, 6667, 0x1A0B 14
LapSplitTime, 245683, 0x3BFB3
LapSplitDistance, 6751, 0x1A5F 10
LapAscentAltitude, 86, 0x56 1A
LapDescentAltitude, 82, 0x52 1C
まだ一部のデータしか紐づけができていませんがこれの繰り返しで入っているようです。
GPSの緯度経度の値はCSVのデータがうまく解釈できれば先に進めるかもしれません。
SF110's.binをみてGPS部には53バイトリズムがありました。
5回の同一的な周期があれば緯度経度だと推測できそうです。
一定に増加している値は時間か距離かと推測できそうです。
疲れてきてペースは周回ごとに落ちましたが、ラスト1周はあげました。
そういう増減を描いているのはペースかも。
53バイトが3620個並びました。
タイム59分なので1秒で1レコードぐらいですね。
20250206のデータはパリでのデータだったのですね。経度より緯度の方が大きいのが謎だったのですが理解できました。
改めてデータを見直した結果、
起点を0x5F0とした場合
offset 0x0b 2byte Lap秒
offset 0x11 5byte 60 5E AA 00 71 => 485,342,469,728 Latitude ?
offset 0x19 5byte 00 00 01 10 31 => 210,721,898,496 Longitude ?
緯度の方はかなり近い値かと思いますが経度の方は変化がないのではずれだと思います。
2,4,8byte固定単位のデータでは なく1byte単位にデータサイズを変えて格納しいると考えるとデータがサーチできそうな気がします。
その辺の検証機能を先に紹介したツールに組み込んでみました(データ型でEpson57を選択)。
それと[LapData]の数は 0x006C に、LapKindはoffset 0x02,TimeCentiSecondは0x0Bと思われます。
https://docs.google.com/spreadsheets/d/147eHi_lfutTrW-ZgEbTW0bdjJnc8Vb_R9cqZKrz721w/edit?usp=sharing
ラップ系のデータは解析がほぼ完了した感じです。いよいよGPSDataの解析に本腰を入れなければならないようです。
表を拝見しました。シンプルでわかりやすいですね。LapDataはあとEndPointが残っていますが残りのデータと合致しないですね。LapTimeからGpsDataのレコードをサーチすればわかるかと思いますがそれだとあまり意味がないですよね。
Gpsデータの緯度経度ですが1度ずれると100kmぐらい離れるので度の部分は変化しないとみて上位2桁は固定と考え見た結果が前の結果です。この辺をもう一度考え直してツールでの検索機能を見直してみます。
引き続き、Gpsデータの緯度経度の方、よろしくお願いします。
GpsTimeは一定間隔ではないので結局、GpsTimeをサーチすることになるかと思います。
それとGPSDataのシートを見てて思ったのですが、このデータ数は約1000であるのに対し、バイナリデータのレコード数4700あまりで4倍以上になります。余計なことかもしれませんが複数レコードで1データの可能性も考えた方がいいような気もしました。
一方CSVのGPSDataのGpsTimeは1秒毎ではなく、バイナリのレコードから一部(精度の高いデータだけ?)を間引いてCSVに出力されているような感じです。
これまで私が入手したSF Seriesの全サンプルを以下に置きましたので参考にして頂ければと思います。
https://github.com/kfd01567/EpsonViewSupportApp/raw/21a5d934287d4eb6ba955823b026269689f2d1b9/workout_all_samples.zip
※BINとCSVのペアで置いています。ただしSF-110の方は私のツールでCSVを出力していますので、GPSDataはありません。
了解しました。CSVデータはバイナリデータと1対1のデータと思っていましたがそうではないということですね。いろいろと先入観が働いていたようです。
以下はpiraru9さんから提供の「2キロコースを5周」のワークアウトをCSV形式に変換後、Runalyzeで表示したものです。
https://github.com/kfd01567/EpsonViewSupportApp/raw/bd0b6821ef7c704f75501135f2a98a34e2827de0/runalyze.png
いい感じでラップ情報が表示されています。近い将来(?)、CSV中のGpsDataが正しく出力できるようになれば、この画面の下にマップとGPS軌跡が表示されます。
https://docs.google.com/spreadsheets/d/1R8xM91LUqC7HEZxapPxGILHQ645jjM2d7HFT0Ez-7ko/edit?usp=sharing
※複数のシートがありますが、GraphData0320とGraphData0206シートです。
※GpsStatusの16,48はbinファイルの2列目の10,20ではないかとの情報を別途頂いており検証中ですが、最初の500レコード分くらいは一致するのですが、それ以降は一致しない(1行ずれる等)があって、まだ不確定です。
レコードの始まり位置は私も確信が持てていないのですが、0x30/0x31の列が先頭のような気がしています。Ver0.16では0x30/0x31を先頭にbodyファイルを生成するようにしています。0x30/0x31の列と0x40/0x41の列はそれぞれレコード長を決める値のようですので、レコードの前の方に合った方が解析しやすいと思っています。0x30の時は8バイト余分に増え、0x41の時は64バイト余分に増えるようです。30->40->50と並ぶ方が自然かな、という感じもしています。今後の解析次第では、もしかすると先頭位置は変わるかも知れませんが。
https://drive.google.com/file/d/1ITzroMUuojgHPp0MFsw3xx7YuvfKztjp/view?usp=drive_link
また,次は大阪ハーフマラソンのデータです。
https://drive.google.com/file/d/1J14WqUrP7GJyHswiy5TcmaSr5l_YTqHl/view?usp=sharing
少し横長になっていますが,どちらもコースを再現できているように思います。
具体的な数値との対応まではいたっていませんが,使ったデータは緯度,経度を表していると思われます。
具体的には次のようにデータを編集しました。
51, 52, 53, 54 列の4byteを使用しました。
52 51 の2byteで符号付16進数->10進数 iレコードの値 a_i について y_i = y_i-1 + a_i -> y_iが緯度
同様に
54 53 の2byte 符号付16進数->10進数 iレコードの値 b_i について x_i = x_i-1 + x_i -> x_iが経度
上のような手順ですので,スタート地点が 0,0です。
是非,ご検討ください。
大阪マラソンのトレース下のような感じです。ほぼコースの道路上に沿っているかと思います。
https://drive.google.com/file/d/1wrthtizG6FAboVyxwu8aThmxk-OtU0ve/view?usp=drive_link
51, 52の列が緯度、53, 54の列が経度ということは分かりました。
そしてそれらはバイナリファイルのどこかにあるスタート地点の緯度経度からの差分で表現されているのですよね。 よく分からなかったのが「 iレコードの値 a_i について y_i = y_i-1 + a_i -> y_iが緯度」の部分です。GraphData0206シートのN列O列にそれぞれ、BINからの2byteで符号付16進数->10進数にした値を表示するようにしました。この値にさらにどのような計算を加えるとGPSData0206シートの緯度経度を導き出せるのか、すみませんがもう一歩説明お願いできますでしょうか。
素晴らしいですね。要は前回との差分を記録しているということですね。それで教えてほしいのですが0x3Eで割っている理由とデータの単位は何になるのでしょうか。初期値も同じ単位で格納されていれば検索できると思うのですが。
丁寧な説明して頂きありがとうございます。実は0x3Eでなく0x40だと他と係数が共通になりプログラム的にも6bitシフトで簡単に高速に処理できるので都合がいいと思った次第です。単位の件はデータの格納方法の問題で度で表す以外にも秒(秒/100)、度分秒、他に180°を1に換算して格納しているものもありました。いろいろパターンを考えて検索してみたのですが今のところ見つかっていません(単に見落としているだけかもしれませんが)
今回いろいろと参考になりました。
https://github.com/kfd01567/EpsonViewSupportApp/raw/e4c1112d7eb12ed37b6dd49e12960abbd0b27b41/compare2.png
以前の投稿のURLも修正しています。
データを再確認したところ0x31は相対座標で0x30は絶対座標が入っているようです。0x30の列からのオフセット4の4byteが緯度、オフセット8からの4byteが経度のようです。4byteのデータを4.2で割ると求められます。この4.2は逆算で出したので根拠はありません。20250206と20250505のデータでそれらしい値にはなっています。確認してもらえると幸いです。
すいません。CSVのデータ形式に合わせた係数にしていました。0x400000にした方がすっきりしますね。標高は緯度経度に続く2byteまたは4byteが該当すると思いますが平坦地を移動しているのでわかりにくいです。
0x30レコードへの係数、「4.2」と0x31レコードへの係数「0x3E」はそれぞれEpsonViewSupportApp.exe.configファイル内のGpsEffectAbsoluteとGpsEffectRelativeに持たせてますので調整可能です。テストしたところ、0x3Eで割るとかなりずれが大きいように感じましたので、現在は8000(10進数)で割るようにしています。なおGpsEffectRelativeに0を指定すると0x30レコードのみをGPXファイル出力するようにしています。このモードだと若干位置が南西方向にずれますが、形はかなり正確です。Ver0.17で出力したGPXファイルとオリジナルのCSVから取り出したGPXファイルの比較画像2つを参考まで以下に置いています。
https://github.com/kfd01567/EpsonViewSupportApp/raw/5412e56dc10dacfd4597b42c10b61f91861bde71/MapCompare1.png
https://github.com/kfd01567/EpsonViewSupportApp/raw/5412e56dc10dacfd4597b42c10b61f91861bde71/MapCompare2.png
※やはり相対値/絶対値共に4194304で割るとバッチリでした。
心拍オン 71 (10進に変換して) 72〜135 (22 or a0) 00
心拍オフ 71 00 00 01
71のつぎが心拍そのもののような気がしています。
https://script.google.com/macros/s/AKfycbxW-5idTNIrc_ll2QwVd0J4Wldzpja3kohBWXDOU8WrNPPddQMBjrJ-ba3SfDxpxOAXOg/exec
※例外のデータが集まれば、いずれ何らかの法則性が見えてくると思っています。
コメントを編集
いいねした人
コメントを書く
ヤマレコにユーザー登録いただき、ログインしていただくことによって、コメントが書けるようになります。ヤマレコにユーザ登録する