Dropbox

kml ファイルの軌跡を Google マップ に表示する方法

Googleマップのヘルプにも方法は書いてあるのですが、最初なかなか気がつかなかったので簡単に手順を紹介します。

GPSのログは元々はNEMAという形式が一番ポピュラーだったようです。Googleの力は偉大で最近ではkmlという形式のデータを使う人が増えています。これはGPSログだけではなく様々な地理的情報を表現出来るxmlファイルで、これをサポートする代表的なプログラムとしてGoogle Earthがあります。

GPSログをkmlファイル形式でPC上に取り込みGoogle Earthに読み込ませて軌跡を確認するといった使い方が一般的です。一方Web上のGoogle Mapsに軌跡を書きたいと思うことも良くあります。kmlファイルをwebサーバーに置く手段を持っている人ならば簡単に実現できますのでお試しください。

  • kmlファイルをwebサーバー上にアップロードする。
    http://www.nkozawa.com/kml/huangshan.kml のようにどこからでもURLで参照できるようにします。
  • Google Mapsを開き検索欄に上のkmlファイルのURLを入れ検索ボタンを押す。

これだけでOKです。後はマイマップに登録するも良し、ページのリンク(上のkmlファイルの地図リンクになってます)をメールで誰かに送りつけても良いです。

中国版Googleマップ でも同じ事が出来ます。ただし測地系の問題があるので詳細な地図にするとズレが目立ってしまいます。参考までに上の黄山の地図をリンクしておきます。実際の軌跡と道路に大きなズレがあるのが分かると思います。

KML data from Shanghai to Huangshan

夏休みの家族旅行で安徽省の黄山に行ってきました。普通は飛行機とか利用するくらいの距離なのですが、いわゆる高速バスを利用したので長距離のGPSログ取りに挑戦してみました。私の使っているのはBluetoothでPDA、PCもしくは携帯電話と接続しないと何も出来ない単機能なGPSデバイスです。そこでNOKIA E61にSports Trackerというプログラムを導入してログを取ることにしました。移動距離506Km、時間にして9時間20分にわたるログ取りでした。さすがにNOKIA E61です見事に最後までログを取ってくれました。

因みに利用した高速バスは上海から安徽省に帰省する人が主に利用するバスで高速道路を降りてからは山間の集落を細かく回っていきます(それに加えローカルなバスに乗り継いだため到着まで9時間以上もかかっています)。感心したのは山に囲まれてテレビも観られないような集落を走っている時でも確認した限り携帯電話(China Mobile, China Unicomともに)が圏外にならずPush Mailで、ばしばしメールが届いていたことです。

Sports Tracker altitude - Huangshan到着の翌日、朝早く起きて黄山に登りました。これもログ取りを行ったのですが、何故か途中で切れてしまいました。Nokia Sports Trackerは、もともと様々なトレーニングに役立つ情報を提供するためのプログラムです。左のグラフはその中の一つで移動距離と高度の関係を表しています。海抜500m付近のホテルをバスで出発し海抜1000m弱の所まで登ります。その後直線的に海抜1700m位までグラフが上がっているのはロープウェイです。それからの上り下りは自らの足による物です 8) 、これが延々と続くのですが記録が途切れてしまっていて残念です。疲労の程度や筋肉痛はたいしたことはなかったのですが、最後は下るときに膝の関節が泣いていました(年かなぁ)。

Sports Tracker自体は良くできていますし、ログを取りながら様々な情報をリアルタイムで提供してくれるので面白いです。しかしながら確実に簡単にログを取るためにはTJさんreveilさんが紹介されているようなGPS単体でログの取れる物が欲しくなりますね。

Google Maps Chinaの測地系は中国独自のものらしくMGMapsにGPSを連動させても使い物にならないということを以前書きました。この問題についてはMGMapsのフォーラムでも取り上げられていて、オフセット付きで地図を取得するアイデアなどが出されていました。

実際のところ、測地系の違いによる座標の変換は単純にオフセットを加えるというだけでは正確には行えません。 どこからか変換のための公式を探してきてMGMapsに組み込んでもらおうかと思っていた矢先にGoogle Mapsの使用差し止め問題が起こりました。ということで公式を探す前にアイデアは頓挫しました。

もう一度、オフセットについて考えてみました。広い中国のどこでも正確に座標を変換するにはオフセットでは問題がありますが、一都市の中であれば固定したオフセットでも実用上問題ないでしょう。よってローカルマップの作成ならば都市ごとにオフセット値を自分で調節しながら取得していけば大丈夫だと思われます。しかしながら手作業が入るので一般的な手順に落とすことが出来ないですしGoogle Maps使用差し止め問題もありますので妄想の域を脱しませんね。 😛

中国移動通信のナビソフト 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でフォーマットするようにしよう。