Mio168:MioMapを使う

Mio168とその関連商品を買う

目次

カシミール3DからエキスポートしたウェイポイントをMioMapで使う

MioMapの位置情報管理にはCSV(カンマ区切り)データが使われている。
カシミール3Dで管理しているウェイポイント(位置情報)データをMioMapで使用すべく、カシミール3DからエキスポートしたCSVファイルをMioMapでインポート可能なCSV形式に変換するPerlスクリプトを作ってみた。
カシミール3DからエキスポートしたCSVファイルをMioMapでインポート可能なCSV形式に変換するPerlスクリプト
お読みください
Download ksh2mm.zip

  • カシミール3DからウェイポイントデータをCSVファイルツールを使って、CSV形式で書き出す。
  • ksh2mm.batにドロップする。
  • waypoint.csvというファイルが生成されるので、Mio168に転送して、スポットとしてインポートする。

MioMapのスポットデータをカシミールで使う

MioMapの位置情報管理にはCSV(カンマ区切り)データが使われている。このファイルはMioMapのインストールディレクトリ以下にLocalSpot.csvという名前で保存されている。
このファイルをカシミール3Dでウェイポイント(位置情報)として読み込めるCSV形式に変換するPerlスクリプトを作ってみた。
MioMapのスポット情報ファイルをカシミール3DのGPSファイルツールプラグインで読み込めるCSV形式に変換するPerlスクリプト
※要Perl実行環境 (ActiveStateActive Perlを推奨します。)
お読みください
Download mm2ksh.zip

  • MioMapのスポット情報ファイル(*.csv)をPCにコピーする
  • そのファイルをmm2ksh.batにドロップする。
  • kashmir3d.csvというファイルが生成されるので、カシミール3DのGPSファイルツールプラグインで読み込む。

its-mo Naviのお気に入りをMioMapで使う

ゼンリンのネットワーク地図ソフトits-mo Naviに登録したお気に入りを、MioMapでインポートできるCSV形式に変換すべく、拙作itsmo2lmlを改造。
its-mo Naviからエキスポートした位置情報XMLファイルをMioMapでインポートできるCSV形式に変換します。

MioMapの移動履歴

MioMapの移動履歴はモバイルデバイスの直下にあるTempディレクトリ内に、"movelog.csv"という形式で保存される。
フォーマットはカンマ区切りで以下の通り。
200503010719,49*******,12*******
最初のフィールドは日付と時刻。次に経度緯度(ミリ秒)と続く。
このファイルをカシミール3DのGPSファイルツールプラグインで読み込めるCSV形式に変換するPerlスクリプトを作ってみた。
MioMapの移動履歴ファイルをカシミール3DのGPSファイルツールプラグインで読み込めるCSV形式に変換するPerlスクリプト
※要Perl実行環境 (ActiveStateActive Perlを推奨します。)
お読みください
Download mmlog2ksh.zip

  • MioMapの移動履歴ファイル(movelog.csv)をPCにコピーする
  • そのファイルをmmlog2ksh.batにドロップする。
  • kashmir3d.csvというファイルが生成されるので、カシミール3DのGPSファイルツールプラグインで読み込む。

MioMapでNMEAログ取得?

MioMapの移動履歴の記録間隔は最短で1分。これはちょっと物足りない、という場合の裏技。NMEAログをそのまま記録してしまう方法です。
この方法はメーカーが公開している方法ではありません。当然マイタックのサポート対象外の操作になります。
レジストリの変更作業が伴います。この作業を行って、なんらかの損害や不利益を被っても、当方は関知しません。
レジストリの変更作業の方法が分からない方にはお勧めしません。
必ず自己責任で行ってください。
MioMapが終了している状態で、レジストリ: HKEY_CURRENT_USER\Software\MiTAC\MioMap168\NMEALOGの値を0から1に変更する。
レジストリを直接変更しない簡単な方法:
米田裕さんのFrogBlogの「MioMap1.3Jをさわってみた」をご覧ください。(NMEAログ取得の裏ワザ発見!という項です)
すると、次回MioMapを起動すると、SDカードのルートディレクトリにNMEALOG.TXTというファイルが生成される。このファイルにNMEAセンテンスが記録されている。
例えばこのファイルをカシミール3DのNMEA/IPSファイル インポートプラグインを使って読み込めば、地図上に軌跡をマッピングすることが出来る。ただし読込み時に測地系がTOKYOとして扱われるので、GPSデータエディタで測地系をWGS84に変更しないと正しい位置に表示されない。

追記:NMEAログには無効値も含まれていて、そのままカシミールに読み込ませると、経度0緯度0に向かう線が多数出てしまう。そこで、無効値を除去するPerlスクリプトを書いてみた。
MioMapで取得したNMEAログの無効値を取り除くPerlスクリプト
※要Perl実行環境 (ActiveStateActive Perlを推奨します。)
Download nmeaClean.zip

  • NMEAログファイル(NMEALOG.TXT)をPCにコピーする
  • そのファイルをnmeaClean.batにドロップする。
  • nmea.nmeaというファイルが生成されるので、カシミール3DのNMEA/IPS Fileインポートプラグインで読み込む。
[追記] このスクリプトを使うよりも、Garbage in, Garbage out(gigo様) で配布されているgpslogcvを使って他の形式に変換するほうがよさそうです。
例えば、gpslogcvを使って、NMEAをTRKに変換すれば、カシミール3Dの[ファイル]メニュー->[GPS各種ファイルを読む]で読み込む事ができます。

カシミール3Dでトラック(軌跡)ログを表示した例 1
カシミール3Dでトラック(軌跡)ログを表示した例 2

MioMapの音声ファイル

音声ファイルの格納場所:Mio168本体メモリ /Program Files/MioMap168
これらのファイルを変更すれば、独自の音声を再生できる。
※置き換えるファイルサイズはオリジナルに近い方が良いらしい。
また、ファイルの拡張子をwav以外に変更して、MioMapで認識できなくすれば、その音声は再生されない。
この情報は非公式です。マイタックのサポート対象外の操作になるので注意が必要です。
必ず自己責任で行ってください。
(出典:MioUsers ポータル フォーラム)
『音声内容』ファイル名
『音声案内を開始します』00001.wav
『目的地周辺です』00002.wav
『経由地周辺です』00003.wav
『実際の交通規制に従って通行してください』00004.wav
『およそ』00005.wav
『ルートを再検索します』00006.wav
『目的地周辺に到着しました音声案内を終了します』00007.wav
『音声案内を再開します』00008.wav
※アラーム音B00009.wav
※アラーム音10001.wav
『10キロ以上道なりです』10002.wav
『10キロ先』29999.wav
『9キロ先』29000.wav
『8キロ先』28000.wav
『7キロ先』27000.wav
『6キロ先』26000.wav
『5キロ先』25000.wav
『4キロ先』24000.wav
『3キロ先』23000.wav
『2キロ先』22000.wav
『1キロ先』21000.wav
『9.』(きゅうてん)21009.wav
『8.』(はちてん)21008.wav
『7.』(ななてん)21007.wav
『6.』(ろくてん)21006.wav
『5.』(ごてん)21005.wav
『4.』(よんてん)21004.wav
『3.』(さんてん)21003.wav
『2.』(にてん)21002.wav
『1.』(いってん)21001.wav
『900メートル先』20900.wav
『900』20901.wav
『800メートル先』20800.wav
『800』20801.wav
『700メートル先』20700.wav
『700』20701.wav
『600メートル先』20600.wav
『600』20601.wav
『500メートル先』20500.wav
『500』20501.wav
『400メートル先』20400.wav
『400』20401.wav
『300メートル先』20300.wav
『300』20301.wav
『200メートル先』20200.wav
『200』20201.wav
『100メートル先』20100.wav
『100』20101.wav
『90メートル先』20090.wav
『80メートル先』20080.wav
『70メートル先』20070.wav
『60メートル先』20060.wav
『50メートル先』20050.wav
『40メートル先』20040.wav
『30メートル先』20030.wav
『20メートル先』20020.wav
『10メートル先』20010.wav
『まもなく』20000.wav
『直進です』30001.wav
『右斜め方向です』30002.wav
『右方向です』30003.wav
『右手前方向です』30004.wav
『後ろ方向です』30005.wav
『左手前方向です』30006.wav
『左方向です』30007.wav
『左斜め方向です』30008.wav
『道なりです』30009.wav
『高速道路入り口です』30010.wav
『高速道路出口です』30011.wav
『右側です』30012.wav
『左側です』30013.wav
『分岐』30014.wav
『細街路にはいります』40001.wav
『細街路に走行中です』40002.wav
『案内できません』40003.wav
『走行中は操作を行わないでください』40004.wav

ホームポジションを変更する

この方法はメーカーが公開している方法ではありません。当然マイタックのサポート対象外の操作になります。
また、完全な検証を行っているわけでもありません。
この作業を行ってなんらかの損害や不利益を被っても、当方は関知しません。
必ず自己責任で行う必要があります。
\Storage Card\MioMap168\Map以下にCENTER.POSというファイルがある。
このファイルは名前から察するに、ホームポジション(MioMap起動時に中央に表示される位置)の座標が書かれているのだろう、と思い、テキストエディタで開いたところバイナリだった。バイナリエディタで開き、いろいろ値を変換してみたところ、このファイルへの座標記述法が分かった。

このファイルは経度4バイト,緯度4バイトの計8バイトで、経度、緯度のミリ秒値をリトルエンディアンで記録してるだけである。
変更するには普通のテキストエディタではなく、バイナリエディタを使うことになる。
《手順》
  1. 念のため、既存のCENTER.POSファイルをコピーなどでバックアップしておく
  2. あらかじめ他の地図ソフトで、TOKYO測地系でホームポジションとしたい場所の座標(緯度,経度)の度表記を得る。(私は度表記が扱えるカシミール3Dを使いました。)
  3. その値に3600000をかけてミリ秒表記にする。
  4. つづいて、その値を16進表記にする。これはWindowsのアクセサリの電卓でも出来る。
  5. 16進表記の値のバイトオーダーを逆にする。(リトルエンディアンにする)
  6. 経度緯度の順で結合した値を、バイナリエディタでCENTER.POSに書き込む。
  7. CENTER.POSを、\Storage Card\MioMap168\Map以下にコピーし、MioMapを起動して確認。
例:)ホームポジションをJR浜松駅にする場合。
経度緯度
137.738025°34.700675°TOKYO測地系(度)
495856890124922430上の値に3600000をかけてミリ秒単位にした値
1D 8E 2C FA07 72 2A 3E上の値を16進にした値
FA 2C 8E 1D3E 2A 72 07上の値のオーダーを逆にした値(リトルエンディアン)
FA2C8E1D3E2A7207上の経度緯度の値を一つに結合。この値をバイナリエディタでCENTER.POSとして保存する

起動時に最後に表示した位置を表示する

この方法はメーカーが公開している方法ではありません。当然マイタックのサポート対象外の操作になります。
また、完全な検証を行っているわけでもありません。
この作業を行ってなんらかの損害や不利益を被っても、当方は関知しません。
必ず自己責任で行う必要があります。
「ホームポジションを変更する」で、CENTER.POSをいじっていて偶然発見。
\Storage Card\MioMap168\Map以下のCENTER.POSというファイルをフォルダの外に移動するか、拡張子などを変更して、MioMapから隠す。
そしてMioMap起動。地図の任意の場所をタップ。その後MioMapを終了し、再度起動してみる。すると、最後に表示していた場所が表示される。

レジストリのHKEY_CURRENT_USER\Software\MiTAC\MioMap168\以下にLastLatitudeとLastLongitudeというキーがある。ここに終了時の表示座標が記録されるようだ。
で、起動時にCENTER.POSが無い場合は、このレジストリの値が使われるのではないかと思う。

※CENTER.POSファイルを隠した事により、何か他に弊害があるのかもしれないが未確認。

引き返し検索を研究

MioMapのルート検索条件の一つに"引き返し検索"というものがある。移動種別が自動車の場合、初期値では 「引き返し検索を利用しない」にチェックが付いている。
この引き返し検索、マニュアルには、
●引き返し検索とは
ルート検索を利用するときに、交通規制を無視するような引き返し方法(たとえば一方通行を逆行するルートなど)を検索するかどうかを選択します。 道路を交通規制にしたがって利用するときは、「引き返し検索を利用しない」にチェックをつけます。歩行や自転車などで利用する場合、引き返し検索を行うときは、チェックをつけずに設定します。
と書いてある。しかし、いまひとつその挙動が掴めないので、いろいろ実験
移動種別は自動車です。
開始点経由地点目的地
青旗黄色赤旗
"引き返し検索を利用しない"がチェックされている状態"引き返し検索を利用しない"がチェックがされていない状態状態
ケース1
ケース2
"引き返し検索を利用しない"にチェックが入っている状態だと、開始地点と目的地は固定で、経由地点の位置をわずかに変えただけでも、ルートが大幅に変わってしまう。
ルート:青旗黄色赤旗
たとえば最初にこの結果...
黄旗の経由地点を微妙に変えてみた...
黄旗の経由地点を交差点の先にしてみた...
本当はこうなってほしい...(これは"引き返し検索を利用しない"のチェックを外した状態)
そして、"引き返し検索を利用しない"場合、ひょっとして、指定した開始地点、経由地点、目的地点が道路の右側と左側にあることで結果が異なるのでは?と思いテスト
ルート:青旗黄色赤旗
開始地点、経由地点、目的地点の全てを、最短ルートを基準としてみた場合の道路の左側に設定。
なかなかいい感じ....
開始点、経由地点、目的地は道路上にセットするのではなく、このように置く事を想定しているのかも。
黄旗の経由地点を道路の右側に設定
かなり難解ですが、交差点以外での右折を避け、えらい遠回りをして左折で経由地に入ろうとしています。
(赤い線は補足)
今度は経由地点は道路左側、目的地を道路の右側に...
これも左折で目的地に着くような思考が働いているようです。
おぼろげながら分かったのは、「引き返し検索を利用しない」設定だと、交差点以外で右折はしない、という事だろうか...
だから、目的地や経由地を道路上に指定すると、その微妙な位置関係で奇妙なルートを出すわけか...? 道路上を地点登録するのは避けてみよう...
しかし、この右折禁止の法則は、中央分離帯がある幹線道路や高速道路ならいざしらず、田舎の一般道ではまず不自然だと思う。
走る地域に応じてチェックの状態を切り替える必要がある。

引き返し検索を研究2

[引き返し検索を利用しない]場合、果たして本当に一方通行を逆行しないのか?のテスト
移動種別は自動車モードです。
ルート:青旗赤旗
青く着色した線は左から右に向かう一方通行路です。
最短ルートでは一方通行を逆行するように、開始点と目的地を設定。(実際に徒歩モードで検索すると、ルールを無視して一方通行を逆行した最短ルートを示します。)
そしてルート検索。
さすが、法規を遵守しています。
試しに[引き返し検索を利用しない]のチェックを外して再検索してみた。一方通行を逆行すると思いきや、法規を遵守しています。
違いは、交差点以外の道路で右折をしていること。
今度は一方通行に順ずるよう、開始地点と目的地点を設定
結果は[引き返し検索をしない]にチェックが付いていてもいなくても左の図になりました。
[引き返し検索を利用しない]状態で、開始地点と目的地点の位置を道路挟むように配してみた。
一方通行に準じているものの、交差点以外での右折を避けるような結果がでます。
移動種別が自動車の場合、[引き返し検索を利用しない]にチェックが付いていてもいなくても、一方通行の逆行はせず、単に交差点以外の道路で右折を許すか許さないかの違いだけではないのか?
※あくまでも勝手に思いついた仮説です。
[引き返し検索を利用しない]チェックアンチェック
交差点以外で右折をしない交差点以外で右折をする

経由地点通過後のルート再検索

[2005/4/25]
この問題はMioMap 1.0x版での症状で、MioMap1.1x版では改善されていますが、完璧ではありません。
疑問(2005/3/10)
開始地点->経由地点A->目的地点を設定しスタート
開始地点->経由地点A
一部ルートを無視したが、リルートで経由地点Aに到着。(問題無し)
経由地点A->目的地点
しばらくMioMapのルートに従い走行。
目的地点まで約5km程のところでルートを無視した。当然ルート再検索がかかるが、この再検索の結果がおかしい。目的地までの距離もなぜか30kmに増えている。
ひょっとして、また経由地点Aを経由するルートを出しているのかも!?
経由地点に到達した後の再検索は、開始地点が現在位置に変わるだけで、また経由地点Aを経由するルートを出すのか?
と確認する間も無く自力で目的地に着いてしまった。
仮にそうだとしたら、せっかく達成した経由地点がパーではないか?スゴロクでMioMapの結果に背いた罰で、また振出しにに戻される気分。

検証1(2005/3/11)
昨日の経由地点通過後のルート再検索の疑問を探るべく、通勤時に再検証。
開始地点->経由地点A->目的地点を設定。総距離は約16km。 経由地点Aは開始地点から約5kmのところにある。
開始地点->経由地点A
一部ルートを無視したが、ルート再検索で経由地点Aに到着。(問題無し)
経由地点A->目的地点
経由地点AからしばらくはMioMapのルートに従い走行。
経由地点Aから約2.3km走行したあたりでルートを故意に逸脱。このときの再検索結果は問題なさそう。目的地までの距離も順当である。
続いて経由地点Aから約6km走行したあたりで再度ルート逸脱。このとき元のルートに戻そうとする結果が出たが、無視して走行。数回ルート再検索がかかる。ここで異変。昨日の現象と同じく、目的地までの距離が17kmと増えた。地図を小縮尺にして見ると、なにやら複雑なルートだ。やはり現在位置->経由地点A->目的地というルートが出たようだ。
しかしそのルートは無視してひたすら自力走行すると、ルート再検索がひたすら続く。
それでも無視して走行。目的地まで数百mに近づいた頃注視してみると、なんと今度は本来そうあるべきの現在位置->目的地の結果になっていた。
ルート再検索に異変が出たのはちょうど経由地点と目的地の中間を越えたあたりだが、この挙動は現在位置から経由地点および目的地までの距離に何か関係あるのだろうか?

MioMap1.3とPocket Mapple Digital Ver.6 for Mioの起動パラメータ

2005年12月リリースのMioMap1.3には[Mapple]ボタンが実装されている。このボタンをタップすると、Pocket Mapple Digital(以降PMD) Ver.6 for Mioが起動し、MioMapで表示していた座標を中心に地図が表示される。
逆にPMD Ver.6 for Mioにおいても、地図上の任意の地点をタップ&ホールドすると"MioMapに切り換え"メニューが出、このコマンドをタップすると、MioMapが起動し、PMDで表示していた座標を中心に地図が表示される。
これらの機能は、MioMap、PMD Ver.6 for Mioの双方がインストールされており、それぞれ該当箇所の地図がインストールされている必要がある。
それはさておき、この機能がどのように実装されているのかに興味が移った。なぜなら座標指定してそれぞれのプログラムを起動させることが出来そうだからである。この方法が分かれば、例えば自作のプログラムから、MioMapおよびPMDを座標指定して起動できるはず。

動作の挙動から察するに、それほど複雑なことはしてなさそうだ。恐らくそれぞれの実行ファイルに、座標値をパラメータとして与えているだけではないのか、と推定。
で、あれこれとハック。フェルメス・ソフトさんのDOS窓Openというプログラムを使用して、当てずっぽうでパラメータを与えてMioMapを起動させてみたりしたが、ラチがあかなかった。
が、とある方法を試してみたらあっさりと引数の与え方が判明。
で、その成果が下記。
MioMapおよびPMD Ver.6 for Mioを座標指定して起動する場合の起動パラメータ

/M_LON=<経度(ミリ秒)> /M_LAT=<緯度(ミリ秒)> /M_ANGLE=<角度> /M_TYPE=<地図縮尺>

座標指定してMioMapを起動する場合...
"\Program Files\MioMap168\MioMap.exe" /M_LON=499429980 /M_LAT=127287010 /M_ANGLE=0 /M_TYPE=6

座標指定してPocket Mapple Digital Ver.6 for Mioを起動する場合...
"\Program Files\Shobunsha\PocketMappleD6.exe" /M_LON=499429980 /M_LAT=127287010 /M_ANGLE=0 /M_TYPE=6

ファイルエクスプローラの"開く"で実行したり、DOS窓Openで実行することが可能です。

.