Garmin Edge800系で発生する[Course]フォルダへの変換に関する問題とワークアラウンド

0. はじめに

本稿は、ぼくが困っていたことの解消ついでの検証に関するnoteなので、参考にして何が起きても、責任は持たない。
またEdge800系(800,810)しか扱ったことがないので、Edgeシリーズとは明記していない。
最後に。仕様は確認していないし、本稿で取り扱っているのは事象に対するワークアラウンドになる。

1. 問題の背景と内容

Windows PCが扱える多くの方は、Edge800系にルートを転送するときに、以下のような手順を踏むと思う。

  1. ルートラボやRidewithGPSなどで、gpx,tcxファイルを作成する
  2. Edge800の[Garmin] - [New Files]フォルダに、gpx,tcxファイルをコピーする
  3. Edge800をPCから切断し、電源を入れる

Edge800の電源を入れると、[New Files]フォルダのgpx,tcxファイルはfitファイルに変換され、[Garmin] - [Course]フォルダに保存される。また、元の[New Files]フォルダの内容は削除される。
このとき、[New Files]フォルダにコピーしたファイル数と、[Course]フォルダのfitに変換されたファイル数が合わないことがある。
ぼくの遭遇した限りでは、[Course]フォルダに1つしかコースが変換されていないことがある。
本稿で取り扱う問題とは、上記を指す。

2. 糸口に気づくまで

この問題は、Edge800を使っていたときから(故障のためいまはEdge810)確認している。
Garmin Expressを使用しても、同様に1つしかfitファイルが作成されないのだ。幸い、当時は、コース自体が上書きされてしまうことなかかったため、コピーしたいファイルの数だけ、手順を繰り返していた。
600kmのときなどは、抜き差しを10数回繰り返していたわけで、たいへんに手間だった。
当時はEdge800の故障か仕様かという認識であった。Factory Resetを行っても変わらなかった。

解消への糸口に気づいたのは、変換後のコースをEdge800から確認したときだった。

  • 変換前:BRM318_1.tcx
  • 変換後:BRM318—200km-

これまでコピーするファイル名をfitファイル名に使用しているものとばかり思っていたから、変換前のファイル名に含まれない'200km'の情報に\ティン/ときた。
変換前ファイルのパラメータを参照しているということは、Windows上でファイル名をいじろうが、重複の恐れがある。

……つまり。名前が重複して、作った端から上書きされてんじゃねぇのこれ。

3. 確認

変換前のファイル(BRM318_1.tcx)をエディタで開いてみる。

<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
  <Folders>
    <Courses>
      <CourseFolder Name="Courses">
        <CourseNameRef>
          <Id>BRM318---200km-</Id>
        </CourseNameRef>
      </CourseFolder>
    </Courses>
  </Folders>
  <Courses>
    <Course>
      <Name>BRM318---200km-</Name>

念のため、続く2,3,4も確認する(掲載はBRM318_2.tcx)。

<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
  <Folders>
    <Courses>
      <CourseFolder Name="Courses">
        <CourseNameRef>
          <Id>BRM318---200km-</Id>
        </CourseNameRef>
      </CourseFolder>
    </Courses>
  </Folders>
  <Courses>
    <Course>
      <Name>BRM318---200km-</Name>

なんでか知らんが重複している。別ファイルのIdNameが重複している。重複したらアカンとこが重複している。そら上書きもされますよね。ふざけろ。
なおgpxでも確認してみたが、こちらは重複していないように見える。ただしサンプルのBRM318西東京200kmしおかつお達磨山はダメで、その前に出ていたBRM218千葉300km銚子はOKだった。字数制限なんじゃないかな。

<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gpxdata="http://www.cluetrust.com/XML/GPXDATA/1/0" xmlns="http://www.topografix.com/GPX/1/0" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.cluetrust.com/XML/GPXDATA/1/0 http://www.cluetrust.com/Schemas/gpxdata10.xsd" version="1.0" creator="http://ridewithgps.com/">
  <author>RideWithGPS LLC</author>
  <url>https://ridewithgps.com/routes/19541804</url>
  <time>2017-03-13T22:28:11Z</time>
  <trk>
    <name>BRM318西東京200kmしおかつお達磨山_1</name>
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gpxdata="http://www.cluetrust.com/XML/GPXDATA/1/0" xmlns="http://www.topografix.com/GPX/1/0" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.cluetrust.com/XML/GPXDATA/1/0 http://www.cluetrust.com/Schemas/gpxdata10.xsd" version="1.0" creator="http://ridewithgps.com/">
  <author>RideWithGPS LLC</author>
  <url>https://ridewithgps.com/routes/19541893</url>
  <time>2017-03-13T22:34:59Z</time>
  <trk>
    <name>BRM318西東京200kmしおかつお達磨山_2</name>

4. ワークアラウンド

問題点が明らかになったため、この時点で興味のほとんどは失せている。んー、あー、もう固有にすりゃあなんでもいいんでしょ?という具合。
下記を試すとよい。一応手元で確認し、正しくfit変換された方法で、事故りにくいという観点から、やってみたほうがよい順序に並べている。

  • GPSiesなどで、Garmin Course TCXへ再変換する
  • Nameタグの名前を固有に変更する
  • Nameタグの名前を縮める(gpx)

tcxをGPSiesに食わせてGarmin Course TCXへ変換すると、こんな感じになる。比較はBRM318_1.tcxとBRM318_2.tcx。

<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
  <Folders>
    <Courses>
      <CourseFolder Name="GPSies">
        <CourseNameRef>
          <Id>Brm318_1</Id>
        </CourseNameRef>
      </CourseFolder>
    </Courses>
  </Folders>
  <Courses>
    <Course>
      <Name>Brm318_1</Name>
<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
  <Folders>
    <Courses>
      <CourseFolder Name="GPSies">
        <CourseNameRef>
          <Id>Brm318_2</Id>
        </CourseNameRef>
      </CourseFolder>
    </Courses>
  </Folders>
  <Courses>
    <Course>
      <Name>Brm318_2</Name>

gpxの字数制限への根拠として、<name>BRM318西東京200kmしおかつお達磨山_1</name>ではダメだったが、<name>BRM318_1</name>OKだった。
銚子300kmがOKだったことを踏まえると、日本語混じりがNGではなく、字数制限なんだろうなあと思う。Nameタグの何文字目までしか認識しないよ、というような。

5. おわりに

これ以上は興味を持てないので検証はしないが、残課題としては下記。

  • Nameタグの字数制限閾値確認
  • RidewithGPSでファイル作成時に日本語を混ぜない場合のtcxのNameタグ確認

後者は固有になってるんじゃないかな。確認するとすれば、次回BRM401千葉400kmクラシックの準備に時間があればやるけれど。