ユピテルGPSマップASG-CM14のルートをGoogleマップで作成する

サイクリングは道選びが重要

走りのレベルによって最適なルートが異なる

自転車で走るときのルート選びは気を使います。初心者のときは車の通行量が少ない裏道・生活道路を選んでいました。しかし裏道は見通しが悪く「止まれ」がたくさんあるので早く走るには不適です。そこで幹線道路・表通りを走るようになるのですが、車を気にしないですむ道は限られています。車が高速で流れているのに路側帯が無い道は厳しいです。そこそこの速度で流れている細い道では車と同じペースで邪魔にならないように走ります。それでも自転車と見ると対向車がいるのにギリギリで追い越して前に割り込んでくる車が多いです。

スマホのナビ

幹線道路は真っすぐで標識も多いのですが、裏道は迷いやすいです。スマホで地図を見ることができるようになってからは楽になりました。しかしスマホをサイクルナビとして使うには、路面からの衝撃でスマホを吹き飛ばさないようなしっかりしたホルダーが必要ですし、常時画面を付けておくと電池を大量に消費します。アプリも問題ですね。Stravaが無料だったときは使いやすかったのですが、有料になってからは私が使う頻度だと勿体ないので使っていません。ナビタイムはまだ課金したいほどの完成度では無いと感じました。Goole Mapは画面を見ている分には使えるのですが、音声案内はダメダメです。

やっぱりサイクルコンピューターが欲しい

国内メーカーはすべてサイクルナビから撤退してしまいました。今買うならGarmin、Wahoo、Xplovaあたりでしょうか。お金があればGaminが欲しいですが、地図表示付きのものは一番安いEdge 530でも本体価格は¥40,000を超えます。

ユピテルGPSマップASG-CM14

2014年にユピテルから発売されたASG-CM14を今でも使っています。スマホよりもコンパクトでハンドル周りの場所を取りませんし、電池も長持ちします。スマホとの連携機能はありません。

ルート作成難民化

ASG-CM14では事前にルートをPCで作ってインポートしておく必要があります。そのためにATRASTOUR Plannerという専用のソフトが有ったのですが、Google MapのAPIが有料化されたせいか2019年にサポート終了してしまいました。代わりに使ったルートラボもサービスが終了、Strava、Ride with GPSは有料化してたまに使うだけの人間にはもったいなくなってしまいました。

Google Map + Maps to GPX + Script

現在はGoogle Mapでルートを作成し、Maps to GPXでGPXをダウンロードし、スクリプトで不要なタグを消す方法に落ち着いています。

まず、Google Mapでルートを作成します。出発地と目的地を決めるとGoogle Mapが自動でルートを作成してくれますが、思い通りのルートにならないときは適当に修正します。

www.google.co.jp

次にルートを作った状態のGoogle MapのURLをMaps to GPXに貼り付けます。

mapstogpx.com

オプションはTrack Pointsのままです。Route Pointsにするとポイント数を間引きして減らしてくれますが、アルゴリズムが悪いのか、思ったようなルートになりません。「LET'S GO」ボタンを押すとGPXがダウンロードできます。できたGPXはASG-CM14で使うには不要なタグが多数含まれているのでスクリプトで取り除きます。最低限必要なタグは下記の通りです。各タグごとに改行が必要です。文法的には間違いになりますがASG-CM14では</trkpt>終了タグを省略可能です。

<?xml version="1.0" encoding="UTF-8"?>
<gpx>
<wpt lat="35.584279705" lon="139.543485042">
<name>nameの前は改行が必須</name><desc></desc></wpt>
<trk>
<name>UTF-BOM付き</name>
<trkseg>
<trkpt lat="35.707637" lon="139.482492"></trkpt>
<trkpt lat="35.704972" lon="139.482260"></trkpt>
<trkpt lat="35.705079" lon="139.477334"></trkpt>
<trkpt lat="35.705325" lon="139.473952"></trkpt>
<trkpt lat="35.704508" lon="139.471016"></trkpt>
<trkpt lat="35.704300" lon="139.468403">
<name>恋ヶ窪</name><desc></desc></trkpt>
</trkseg></trk></gpx>
Windowsスクリプト

PowerShellを使います。まず、下記のスクリプトファイルをメモ帳で作ります。

GPX.ps1

gc -Encoding UTF8 $args[0]|
%{$_ -replace '.*</trkpt>', ''}|
%{$_ -replace '<\?xml.*\?>', '<?xml version="1.0" encoding="UTF-8"?>'}|
%{$_ -replace '<gpx.*>', '<gpx>'}|
%{$_ -replace '.*<metadata>', ''}|
%{$_ -replace '.*</metadata>', ''}|
%{$_ -replace '.*<link.*>', ''}|
%{$_ -replace '.*</link>', ''}|
%{$_ -replace '.*<text.*text>', ''}|
%{$_ -replace '.*<!--desc.*desc-->', ''}|
%{$_ -replace '.*<!--copyright.*>', ''}|
%{$_ -replace '.*</copyright-->', ''}|
%{$_ -replace '.*<year.*year>', ''}|
%{$_ -replace '.*<license.*license>', ''}|
%{$_ -replace '.*<!--url.*url-->', ''}|
%{$_ -replace '.*<year.*year>', ''}|
%{$_ -replace '.*<time.*time>', ''}|
%{$_ -replace '.*<number.*number>', ''}|
%{$_ -replace '.*<name>TP.*</name>', ''}|
%{$_ -replace '.*<desc>', ''}|
%{$_ -replace '.*</desc>', ''}|
%{$_ -replace '.*<author>', ''}|
%{$_ -replace '.*</author>', ''}|
%{$_ -replace '.*<keywords>', ''}|
%{$_ -replace '.*</keywords>', ''}|
%{$_ -replace '.*<bounds.*/>', ''}|
%{$_ -replace '.*<!\[CDATA\[.*\]\]>', ''}|
%{$_ -replace '.*<ele.*ele>', ''}|
%{$_.trimstart()}|
Out-String -Stream | ?{$_ -ne ""}|
Out-File -Encoding UTF8 result.gpx

ただしPowerShellスクリプトファイル自体にGPXファイルをドラッグ・アンド・ドロップすることはできないので、ショートカット経由でスクリプトを実行するようにします。

4thsight.xyz

Macスクリプト

Automatorを使います。

support.apple.com

入力の引き渡し方法は「引数として」を選びます。

GPXforCM14

cd '/Users/xxxx/Documents/自転車/results'
cat $@ |
sed -e 's/.*<\/trkpt>//g' |
sed -e 's/<\?xml.*\?>/<?xml version="1\.0" encoding\="UTF\-8"?>/g' |
sed -e 's/<gpx.*>/<gpx>/g' |
sed -e 's/.*<metadata>//g' |
sed -e 's/.*<\/metadata>//g' |
sed -e 's/.*<ele.*ele>//g' |
sed -e 's/.*<link.*>//g' |
sed -e 's/.*<\/link>//g' |
sed -e 's/.*<text.*text>//g' |
sed -e 's/.*<desc>//g' |
sed -e 's/.*<\/desc>//g' |
sed -e 's/.*<time.*time>//g' |
sed -e 's/.*<year.*year>//g' |
sed -e 's/.*<author>//g' |
sed -e 's/.*<\/author>//g' |
sed -e 's/.*<license.*license>//g' |
sed -e 's/.*<number.*number>//g' |
sed -e 's/.*<name>TP.*<\/name>//g' |
sed -e 's/.*<keywords>//g' |
sed -e 's/.*<\/keywords>//g' |
sed -e 's/.*<bounds.*>//g' |
sed -e 's/000"//g' |
sed -e 's/.*<\!\-\-desc.*desc\-\->//g' |
sed -e 's/.*<\!\-\-copyright.*>//g' |
sed -e 's/.*<\/copyright\-\->//g' |
sed -e 's/.*<\!\-\-url.*url\-\->//g' |
sed -e 's/.*<\!\[CDATA\[.*\]\]>//g' |
grep -v '^\s*$' >result.gpx
exit

このファイルにMaps to GPXからダウンロードしたGPXファイルをドラッグ・アンド・ドロップします。

ASG-CM14にGPXファイルをダウンロード

USBケーブルでPCに繋いでからASG-CM14の電源を入れるとUSBストレージとして認識されるので、trackフォルダにGPXファイルの名前を好きなものに変えてからをダウンロードします。

Macの場合は ._ で始まる隠しファイルも自動的に作られてしまいASG-CM14でマップを選択するときに余計な選択肢ができてしまうので削除しておきます。Finderに隠しファイルを表示させるには「command」+「shift」+「.」を押します。