Dropbox

中国移動通信のナビソフト TeleNav を試す

TeleNav Opening ScreenTeleNav Map

Read the rest of this entry

Mobile GMapsフォーラムによるとMGMaps作者のCristian StrengさんのところにGoogleよりMobile GMapsでGoogle Mapsを使わないように要請があったそうです。次のバージョンからGoogle Mapsの選択は出来なくなるそうです。

ローカルマップについては今までの物は無駄にはならないみたいです。MapTileCacher, MapTileFEさえあれば大丈夫ってことかな。

Googl Maps China and Google Satellite

以前、オンラインモードでMGMapsを上海で試した時にGPSの位置情報と中国版Google Mapsにズレがあるかもと書きました。

今回オフラインマップ搭載のMGMapsで試してみると、やはりズレています。検証のためにGoogleの衛星写真と比較してみると見事にズレていました。どうも測地系問題があるようです。Google MapsはGPSで使用されている世界測地系WGS84に合わせて作られています。中国版Google Mapsは、どうも中国ローカルな基準になっているように見えます。Google Mapsが中国と中国以外に分けられているのは地政学的な意味合いが濃いのだと思っていましたが、ローカルな測地系を採用するためだったのかも知れませんね。

調べてみると中国にはBJ-54という測地系があるようです。これが中国版Google Mapsに使われているのかどうかは確証はありませんが、文献によるとBJ-54とWGS84の間のズレは80mから120mにおよぶということなので検証の結果と一致するように思います。

せっかくMGMapsに中国地図がありGPSレシーバーも持っているのに衛星写真と地図とを併用しないと正確な位置が分からないのは情けない話しです。何か解決方法がないか調査した上でMGMapsフォーラムに報告しようと思います。やみくもに地図取得のURLにdatum=wgs84などと書き加えてみましたがダメでした。かなりな難問のような感じです。 🙁

MGMapsのローカルマップを使用すると大量の小さな画像ファイル(Map Tiles)をメモリーカードに持つことになります(jar等にまとめることも検討中のようです)。それがデバイスの画像ギャラリーから見えてしまう、あるいはデバイスが画像ファイルとしてカタログしてしまうという問題はMGMapsのフォーラムでも早くから提起されていました。ファイル数が少なければ良いのですが時には何万というファイル数になるので影響は大きいです。

MGMapsのローカルマップ対応版がα2に成ったときに画像ファイルの拡張子がmgmに変更されたのは、画像ファイルに見せないようにするための対策でした。これは一部のデバイスには有効なのかもしれませんが、私のNOKIA E61は画像ファイルであると判断してしまいました。

対策は単純です、Windows PCなどを使用してMGMapsCacheフォルダーに隠し属性を設定するとE61のギャラリーからは見えなくなります。ただし、一度ギャラリーにカタログされたファイルは隠し属性設定後も見えてしまいます。忙しくて 🙁 、解決方法を確定できていません。たしかMGMapsCacheを見えている状態だか隠しの状態だかで別の名前に変更しギャラリーに一度見せてから隠し属性を持ったMGMapsCacheにしたように思います。詰めの甘い報告で申し訳ないです。

追記) ギャラリーのカタログの消し方をコメントにてJackOneさんに教えていただきました。
一度でもギャラリーが画像ファイルとして認識すると隠し属性を設定しても画像ファイル一覧に現れてしまいます。これを解決するためには、
– E:/System/data/mg2/DB/Eフォルダを削除
– もしローカルマップのフォルダ内に_PAlbTNフォルダが出来ていたらそれも削除
を実行します。

kml2map – KMLファイルから MGMaps のローカルマップを作成

MGMapsのフォーラムにてKMLファイルからローカルマップ(Stored Map)が作れたらいいなぁという書き込みがありました。それに応えて作成したのがkml2map.plです。このプログラムはKMLファイルを読み込みMapTileFE.plに与える地図定義を出力します。

KMLファイルはGoogle EarthやGoogleマップにおける地理データの規格です。ここで取り扱うKMLファイルはGPSのログとして移動の軌跡を記録した物です。その中のLineStringタグ内にある経緯度の情報を分析し、軌跡が含まれる範囲のローカルマップを作成します(実際に地図を作成するのはMapTileFE.plですが)。

プログラムはMGMapsフォーラムのPost .map file hereトピックの最初のメッセージにあります。

パラメーターとしてKMLファイル名を与えると画面に地図定義を出力します。実際にMapTileFEに与えるためにはリダイレクトでファイルにしないといけません。オプションにより地図の種類(GoogleMapのようなもの)、軌跡の周りに取るマージンなどを変更出来ます。詳しくはプログラムに添付されているreadme.txtをご覧ください。

MGMaps ローカルマップ(Stored Map)で中国の地図を見ることが出来るようになりました。実際にはMGMaps本体は最初から対応していたようです。地図を取得するためのMapTileCacher v1.11にてGoogleChinaの指定が出来るようになったものです。

そこで蘇州、杭州の詳細地図を含む上海地区の地図定義ファイルを作りMGMapsフォーラムのPost .map file hereトピックにアップロードしました。

MGMapsローカルマップ(Stored Maps)を使用すると、マップタイルと呼ばれる地図ファイルが大量に必要となります。そのファイルの一つ一つが数KBと比較的小さなファイルであるため断片化により実際のファイルサイズ以上のエリアを消費してしまいます。

この問題は既にMGMapsのフォーラムで話し合われています。断片化を防ぐためには大きなファイルにzip やjarでまとめるなどの方法が提案されていますが、技術的な問題もありどうなるかは判明していません。

そこで取りあえずの対策として、もしメモリーカードがFAT16でフォーマットされている場合はFAT32に変更しクラスターサイズを小さくして断片化の影響を軽減する方法があります。

私の場合Nokia E61に2GBのMiniSDカードを入れています。このカードは(多分)購入してきたままの状態で使用していましたのでFAT16になっています。この時Mac OS Xのファインダーでボリューム情報を見ると空き容量849MB、使用状況1.06GBとなっていました。

このMiniSDカードの中身をPC上に移動し、FAT32でフォーマットし直しました。その後PC上に移動したデータを書き戻してみたら、空き容量1.21GB、使用状況692.1MBとなりました。なんと300MBほども節約できています。地図以外にも小さなファイルは沢山入っているし最初からFAT32にしておくべきだったなぁと思います。これからはカードを最初にFAT32でフォーマットするようにしよう。

MGMapsのオフラインマップ作成に挑戦されている方は、経緯度を調べて、キーボードから何度も同じ経緯度を入力しなければならないのに退屈している頃と思います。将来のMap作成ツールは何かしら改善があるものと期待しますが、とりあえず現在の物を補う形の補助ツールを作成しましたのでお知らせします。

このツールではマップ定義ファイルというものを使用することにより経緯度を何度も入力するという手間から解放されます。また定義ファイルをユーザー間で交換することにより、他の人が作った地図の定義を再利用できるという利点もあります(交換の場が必要ですね)。実際、ツールに添付するサンプルとして多少ましな物を作るのに、ツールをプログラムする時間より多くの時間を費やしました。それくらい面倒な仕事ですし、ユーザー全員が苦労する必要は無いと思います。

マップ定義ファイルをポストするためのトピック「Post .map files here」がMGMapsのフォーラムで立ち上がりました。MGMapsの作者、ほんとうに対応が早いです。(2007/06/17 00:00更新)

このツールにはTokyoとHongKongの二つの定義がサンプルとして入っていますので、これをそのまま使用すれば手間無しで東京と香港の地図が手に入ります。また自分用に手直しするのも簡単だと思います。

[ ツールの入手 ]
MGMapsのフォーラム、Stored Mapsスレッドの15ページ目くらいに貼り付いているMapTileFE.zipをダウンロードしてください。
新しいトピックが立ち上がりました。Post .map files hereにプログラムがあります。

[ 前提 ]
MapTileCahaer.perlが動作すること。「MGMaps オフラインマップの作り方、具体例」参照。

[ 準備 ]
MapTileFE.zipの中身をMapTileCacher.perlと同じフォルダーに展開してください。MapTileFEはマップ定義ファイル(拡張子がmapのファイル)に基づいて地図ファイルを取得します。オリジナルの地図を作成する場合はサンプルとしてTokyo.mapとHongKong.mapが入っていますので、これらを参考に定義ファイルを作成します。

[ 実行 ]
perl MapTileFE.pl をコマンドラインに投入します。定義ファイルの一覧が表示された後に、定義ファイル名を入力してください(拡張子は入れません)。または perl MapTileFE.pl Tokyo のようにパラメーターとして指定することも出来ます。

[ マップ定義ファイル ]
サンプルの中身を見てもらうと大体は分かると思います。
– シャープ記号 ‘#’ で始まる行はコメントです。
– コメントを除いて最初にあらわれる行はMap Type (GoogleMapのようなもの)を表します。
– 残りの行は、Zoomレベルと座標の定義です。この定義は必要なだけ幾つでも入れることができます。フォーマットはZoom_level : TopLeft : RightBottomのようになっています。それぞれのパートはセミコロンで区切ります。Zoom_levelは、一つのZoomレベルもしくは0-10のように範囲でも指定できます。TopLeft, RightBottomは、取得する地図の左上と右下をそれぞれ緯度、経度で表した物です。このあたりはサンプルを見てもらった方が良いでしょう。

MGMaps the second alpha versionが出ています。MGMapsフォーラムのStored Mapsスレッドにてアナウンスおよび実行ファイルの配布が行われています。

ただいま検証中ですが主な変更点は以下のようになっています。

  • Nokia S40デバイス・サポート
    うーむ、持っていないので検証出来ないです。
  • titles(地図ファイル)の拡張子がmgmに変更された。これはギャラリープログラムが大量のtitlesを表示してしまうことを回避するためのようです。
    わたしのE61では依然としてMedia/Gallery/Imagesで沢山の地図が見えています。
  • 地図のフォルダー名がMGMapsCacheに変更された。
  • 地図の表示が速くなった。
    たしかにスクールして行ったときの感じが良くなりました。
  • Mac OS Xでは追加のプログラム(wget)無しで地図が作れるようになりました。
    わたしの提案したパッチを採用してくれました。 🙂

最初のアルファ版で作った地図ファイルと拡張子が変わったりしてるので、そのまま使えません。古い地図ファイルを新しい物に変更するためのPerlスクリプトも提供されています。アルファ版なので大胆な変更も致し方ないのですが、ちゃんとフォローがあるので安心ですね。

マップの作り方も後で更新しておきます。

MGMapsのローカルマップを作るMapTileChacher.perlの私の環境での実行例です。二日前の記事もあわせてご覧ください。

[ 変更の履歴 ] – 長いエントリーなので最初に変更履歴を書いておきます
2007/06/13 07:56 MGMapsのSuite settingsの項目追加 [デバイスでの表示 ]
2007/06/14 08:16 アルファ第2版対応

[ 準備 ] – Windowx XP, Linux, Mac OS X (Tiger)別に書いておきます

共通
専用のディレクトリー(フォルダー)を作成しておくのがお勧めです。そこにMapTileCacher.perlを置きます。

Windows XP
ActiveStateから無料のActivePerlをダウンロード(Windows, MSI)し導入します。バージョンは5.6、5.8のどちらでも構わないと思います。

SunsiteのFTPサーバーからsslibsXXXc.zipとwgetXXXXXXXXb.zip(ただしXはバージョンを表す数字)をダウンロードします。それぞれを解凍しlibeay32.dllとssleay32.dllをC:¥windows¥system32へ、wget.exeをパスの通っている場所もしくはMapTileCahcer.perlと同じ場所にコピーします。「wgetの使い方」というページにさらに詳しい手順が紹介されていますので参考にしてみてください。

Linux
おそらく標準的なパッケージに必要なコマンドは含まれていると思われるので特別な準備は必要ないでしょう。

Mac OS X
wgetをAndrew’s Denからダウンロードし導入します。 MapTileCacher.perl v1.10 ではMac OS X標準のcurlをwgetの代わりに使用するので特別な準備は必要ありません。

[ 確認 ]

コマンドライン・ウインドウ(Mac OS Xならターミナル)を開きMapTileCahcer.perlのある場所をカレント・ディレクトリーとします。mapというディレクトリーを作成したとして cd c:¥mapとかcd ~/mapみたいな感じです。

perl -v を投入し This is perl, v5.8.6みたいなメッセージが表示されることを確認。
Mac OS X以外の場合、wget を投入し wget: missing URLなどと表示されることを確認。

[ 実行例 ] – WindowsでGoogle Mapを取得した例です

Read the rest of this entry