最終更新: 2017/06/07(Wed)23:56

「つくる」をお題目に、トイラジやらVoltyやら、いろいろゴソゴソやってます -kyu-

Home

PNDで遊ぶ(11)Googleマップのルート案内で作成したデータをちょいNAVIで利用する

実地テストの結果、道案内をナビ任せにすると、目的地には到着するもののとんでもない経路をたどることになりそうだということがわかりました。まったく知らないところへ行くのならまあ仕方ないですが、ある程度知っている道の場合は、経由地を細かく指定して自分の思い描いているルート取りをするようにナビに教え込んでやるのがよさそうです。

ちゃんと目的地の決まっているツーリングの時は、事前にGoogleマップで経路の検討をすることが多いです。いままではGoogleマップの「ルート・乗換案内」で経路を自動生成し適宜修正して、紙に印刷して持ち歩いていました。紙地図は便利なんですが、そこそこ大きい縮尺にしないと文字がつぶれてしまうため300kmくらいの行程だと結構な枚数になってしまうのと、タンクバック内の地図をめくるのが大変でした。これをちょいNAVIにやらせてしまおうという魂胆です。

全体の流れとしては 1)Googleマップで経路を作成する→ 2)なんらかのテキストデータに書き出す→ 3)CyoiPointConvで読めるCSVに変換する→ 4)CyoiPointConvで地点登録ファイルにする→5)ちょいNAVIに読み込む→ 6)ちょいNAVIで中継点付のルートデータにする ということになります。結構手順が多くて面倒ですね。なので、できるところはなるべく自動化します。

Googleマップからルート検索結果を書き出す

グーグル先生によるとGPXというXMLにするのが一般的らしいです。GPXファイルはGMapToGPXでつくります。具体的な方法はあちこちにありますので割愛。UTF-8形式で保存するってのがポイントですかね。

CyoiPointConvで読める形式に変換する

出来上がったGPXファイルは単純なテキストファイルなので、経度緯度情報の入っている行を切り出して加工すればよいです。
例によって(バカの一つ覚えともいう)VBScriptで変換するスクリプトを作成しました。

さて、ここで測地系のワナにはまりました。

Googleマップは世界測地系(WGS84)、ちょいNAVIは旧日本測地系(Tokyo97)で動作しています。よって測地系を考慮して緯度経度の数値を変換しなければなりません。
ひとつひとつ変換していては嫌になってしまいますので、国土地理院提供のTKY2JGDをダウンロードしました。特定のフォーマットに基づいて作成されたテキストファイルを流し込むと一括変換してくれるものだと思われたからです。
TKY2JGDは緯度経度を度分秒を使ったフォーマットにしないと受け付けません。先のGPXファイルでは緯度経度を10進数の度のみを使って表現されています。変換方法は緯度経度のDMS表記とDEG表記を変換する方法を参考にしました。TKY2JGDの入力フォーマットは度分秒の区切り方もちょっと特殊なので、それなりにスクリプトを組みました。

で、いざ変換。と思ったらなんとまあ、TKY2JGDの一括変換は、日本測地系→世界測地系の一方通行でした。とほほ。
TKY2JGDの使用はあきらめ、厳密には誤差が出る方法、つまり計算で座標をシフトする方法に方針変更です。

計算式はこちらを参考にしました。
GPSに関わる要チェックワード「測地系」の意味とそれにまつわる変換式

世界測地系→日本測地系 lonJ = lonW + latW * 0.000046047 + lonW * 0.000083049 - 0.010041 latJ = latW + latW * 0.00010696 - lonW * 0.000017467 - 0.0046020 日本測地系→世界測地系 lonW = lonJ - latJ * 0.000046038 - lonJ * 0.000083043 + 0.010040 latW = latJ - latJ * 0.00010695 + lonJ * 0.000017464 + 0.0046017 (lonW=世界測地系の経度 , latW=世界測地系の緯度 , lonJ=日本測地系の経度 , latJ=日本測地系の緯度)

なおこの計算式は、度分秒ではなく10進数の度のみを使った表現方法で利用します。せっかくつくった度分秒変換関数はそのままお蔵入り。

なんだかんだとケチがつきましたが、ひとまずスクリプトは完成。変換は成功しました。希望があればスクリプト公開しますが、まあこんな辺境のブログにそんな要望が寄せられることはないでしょう。

登録地点数の制限、そして…

CyoiPointConvで登録地点ファイルに変換。熱海までの登録地点数は約70点ほどになりました。ちょいNAVIにつっこみます。
ところがナビを起動して 検索 > 登録地点 とたどると「登録地点がありません」と怒られてしまいました(涙)

緯度経度の有効数字を変えてみたりしましたが変わらず。いろいろ試してみて結局、登録地点数に50点の上限があることがわかりました。51点以上のポイントがあるとナビが認識しません。いたた。

また、残念ながらちょいNAVIの中継地点は、全行程中1点だけでした。これまたいたた。

さてどうしようかな。

コメント

6件のコメントがあります

そんなことまでしてるんですか(@o@)
いいじゃないですか、最終地点と現在地がわかって、musicがちょっと聞ければ(^^;
しかし、5500円にそこまで仕事をさせようとは・・・さながら敏腕経営者ではないですかっ!!!そんなにこき使うとそのうち暴動起こされますよ(^^;
いやしかし、次回お会いしていろいろとお話をお聞きするのが楽しみです。

  • おーき

いや、まだ他にもいろいろやらせてますが、詳細は近日中に。
基本的に貧乏性なので、使えるものはとことん使う主義なんですよ、はい。

  • kyu

地雷踏んでしまいましたよ。(T_T)
復活できるかどうかは、先方の営業日である月曜日以降にかかってます。

# おーきさんの予見、すごいっスね。

  • kyu

週末までに間に合うって話だったので先方に送りましたよ。
高い授業料だったなぁ。
無事戻ってきたら顛末を報告しますわ。

  • kyu

ついさっき代引で届きました。よかった。

  • kyu

たはは…
やっちまったのね(^_^;)
でも間に合ってヨカッたじゃあないですか!
しかもverアップした地図。羨ましいっす(^_^;)
ぼくのはログも取れないし…地図も手に入らなそうだし…まぁタダだからしょうがないですね。

  • おーき

コメントを投稿

( *は必須項目です )

%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%22%20%76%61%6c%75%65%3d%22%39%39%36%33%33%31%34%63%34%39%32%33%37%31%33%39%65%66%62%63%35%33%34%65%31%32%62%32%66%39%63%30%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%5f%68%61%73%68%22%20%76%61%6c%75%65%3d%22%64%30%32%65%63%39%30%37%65%38%61%65%66%38%36%63%61%30%32%61%36%66%33%39%34%64%33%65%31%31%33%34%22%3e

サイト内検索

↑ページ先頭へ

1075629 [Mode]
Copyright © kyu-weblog All Rights Reserved. Powered by Nucleus CMS v3.71 管理