カシミール3Dの地図データによるGARMIN用地図データの作成(その2、改訂)


改訂(2009.11.13)
新ファームウェアについての補足(2009.11.23)


はじめに

 さきに「カシミール3Dの地図データによるGARMIN用地図データの作成」を書いたばかりだが、驚くべきことにこの1ヶ月で状況が一変した。なかざわさんのブログ「風を聴け」[1] によると「ラスター地図自作を公式的に公開した」とある。早速、情報ソースである"Creating Garmin Custom Maps in Five Easy Steps" [2] を一読してみたが、どうもイメージがつかめない(方法・手順が理解できない)。何故なら、JPEG画像を使う事はともかくとして、ベクトルデータへの変換方法がどこにも無いからである。そこで、実際にこの5つの手順通りに作成してみたところ、やっとこの疑問を理解した。 これはまさに長年待ち望んでいた(?)ラスター(ビットマップ)データを直接処理するものであり、ベクトルデータへの変換はそもそも必要としないのである。そのため、対象となる機種は ColoradoOregonDakota のみであり、さらに英語版の最新ファームウェア(ただしβバージョン)が必要である[補足]

 ここで紹介されている方法 [2]は"Google Earth"[3]のオーバーレイ機能を使い最後にKMZファイル[4]を作成する方法ではある。でも"Google Earth"は必須ではない。さらに直接ラスター(ビットマップ)地図として表示するため、先に書いた方法と比べると表示もレスポンスも速く感じられる。

 本文では、先の報告と同様にカシミール3Dとマップカッターを用いて切り出した地図データをKMZファイルにする方法を述べる。


注意事項(免責など)

 ここで記述した方法やプログラムの使用についてはすべて自己責任でお願いします。これにより生じたいかなる不具合、損害などに対していかなる保証も行ないません。特に、自分自身が個人的に使用する事を前提にしているため、プログラムにおいてはエラー処理などをおこなっていませんのでご注意願います。


方法

 本方法での対象となる機種は、ColoradoOregonDakotaである。 また現時点ではファームウェアは英語版の最新のものが必要である。例えば、Coloradoシリーズの場合、ファームウェアのバージョンは3.02beta(リリース日は"Oct 07, 2009"であり、他機種も同様)である[5]

 本方法でGARMIN用ラスター地図の作成として用いたツールなどは下記の通り。

 ImageMagickはマップカッターで切り出したPNG(またはBMP)画像をJPEG画像に変換するために用いる。Perlは、JPEG画像に緯度・経度の情報を付加するためのKMLファイル(doc.kml)作成、JPEG画像への変換実行、などのPerlスクリプト実行に必要となる。これらをダウンロード、インストールして実行環境(PATH変数の設定・確認)を整える。ただし、これらはKMZファイルの構造と作成方法が理解できれば手作業または他の方法は可能であり、必ずしも必須ではない。 データファイル作成の大筋の流れ・手順は以下の通りであり、極めてシンプルである。

  1. 必要とする地図データの切り出し(カシミール3D・マップカッター)
  2. JPEG画像への変換
  3. 地図データと位置情報のリンクファイル"doc.kml"の作成
  4. これらのファイルを一つのファイルにzip形式で圧縮したKMZファイルの作成

手順

 自作Perlスクリプトを用いたKMZファイル(JPEG画像と位置情報を含んだファイル)の作成手順について以下に示す。ただし先に述べたように、本スクリプトは必ずしも必要ではない。本スクリプトを用いない場合は、手順"1"は不要、手順"4"は各自に合わせて対応することが必要となる。また本スクリプトでは、1画像のサイズ制限(1024x1024)[9]から、マップカッターでの画像の切り出す形式はgarmap形式のみである。

  1.  使用するツール群のインストール

  2.  作業フォルダの作成
    マップカッターで切り出す画像データを置くためのフォルダであるとともに、Perlスクリプトなどを置く。

  3.  カシミール3Dのマップカッターで地図を作業フォルダへの切り出し
    マップカッターで画像を切り出す際の選択項目や注意事項を以下に示す。
  1. Perlスクリプトの実行
    Windowsのコマンドプロンプトを起動して作業フォルダへ移動する。Perlスクリプトの実行(コマンドプロンプト上で"perl  mk-kmz.pl"と入力)により、作業フォルダ上に"doc.kml"ファイル(位置情報とJPEG画像の対応づけ)と"files"フォルダ(このフォルダにJPEG画像がある)を作成する。
    この作業がKMZファイルの作成において骨格となる部分である。詳細については付記にまとめた。

  2. KMZファイルの作成
    作成された"doc.lml"ファイルと"files"フォルダを選択("Ctrl"キーを押しながらマウスでクリック)して、さらにマウスの右ボタンをクリックすると下図のようなメニューが表示される。そこで「圧縮」-「zip」を選択する。そして作成した圧縮ファイルの名前(特に拡張子)を”~.kmz”と変更する。(例えば、"map.kmz")



  3. 作成したKMZファイルをGPS用の内部メモリーまたは(micro)SDメモリーにコピー
    GPS用の内部メモリーまたは(micro)SDメモリーを開くと"garmin"フォルダがある(ハズ)。もし無ければ"garmin"フォルダを作成する。さらに"garmin"フォルダの下に"CustomMaps"フォルダを作成して、このフォルダに作成したKMZファイルをコピーする。

結果

 GARMIN社の公開した方法で作成した地図データを以下に示す(右側の2つ)。比較のために先に書いた方法(BMaP2MPベース)で作成しeTrek Legend HCxで表示したものも併せて示す(左側の2つ)。ただし、先に書いた時のデータではなく新たに等高線が重ならないようパラメータを変更したものであり、前回のものとは少し異なっている(全体的に悪い・かすれている)事については考慮する必要がある。またColoradoとeTrek Legend HCxでは画面の解像度が全然異なるのでため、表示画面を比較するのは少し酷ではあることを前提に見ていただきたい。




前方法:eTrek(120m) 前方法:eTrek(80m) Colorado300(120m) Colorado300(80m)

(地図データはカシミール本の2.5万分の1を使用)

 実際の可視性は良く、50mまで拡大しても拡大に伴う荒さは出てくるものの特に違和感なく使える。ちなみに「ウォッちず」[10]の6千分の1の地図を用いて作成したKMZファイルでは、50mまで拡大しても荒さは目立たなかった。 使用感は、以前に良く用いていた"PDA + GARMAP[11](またはomani[12]) + カシミール3D(マップカッター)地図データ"に近い感じもするが、拡大・縮小ができるのでかなり便利である。またこれらの機種は、必要に応じて他の地図(ベクトル地図など)を選択して使用する事もできる事も良い。 ただし、ラスター(ビットマップ)地図とベクトル地図を両方を選択した場合、ラスター(ビットマップ)地図にベクトル地図を重ね合わせた表示なる。この辺は利用状況や利用者により評価が分かれるところである。いずれにしても利用者の利用用途に応じて選択の幅が大きく広がった事はまさに朗報といえる。

 描画速度に関しては、一時的にダンマリ状態になる。全体的には先の方法で作製した地図よりは体感速度的に速く感じられる(レスポンスがやや速い?)。"Garmin Forum"[12]によると「描画にかかる時間は画像サイズ(ファイルサイズ)に依存する」との事である。 また、ズームアウトして複数画像の表示となる場合、その画像枚数に依存して時間を必要とするようである(最初の表示にかかる時間)。

 制限事項[9]については、実際に制限以上の大きな画像にしてみると、表示データが間引かれて解像度は悪くなった。また、表示速度も確かに遅くなる。また画像の制限枚数を超えた場合は地図画像を自身が表示されない。しかし、先の制限値の範囲[9]であれば特に問題にはならない。

 ところで、このファームウェアはがラスター(ビットマップ)地図を使用していると頻繁に落ちる。確かにβバージョンだからしょうがないところではある。しかし、どうも落ち方に一定の法則があるようである。当方での落ちる時の状況を以下に示す。

 この状況はColoradoだけではなくOregonでも同様のようである[13]。ちなみに200m以上で使った限りでは特に問題は発生していない。ただし、このファームウェアを使用してまだ日が浅いのでまだいろいろ問題があるのかもしれない。


考察

 GARMIN社からラスター(ビットマップ)地図を取り扱う方法とそのファームウェアが公開された事は、大きな一歩・進展である。これまで、GARMIN社製のGPS機器用の自作地図を作成する場合、非常に多くの手間と時間、知識や技術などが必要であった。今回の公開により、自作地図ユーザはこれらの膨大な作業から解放されることになる。さらに自作地図で用いるKMZファイルの構造もいたってシンプルであり、自作地図の作成に対する敷居が非常に低くなった。

 しかし一方で、現時点においてまだ問題点も多いのも確かである。例えば、ファームウェアがβバージョンであり不安定であること、KMZファイル作成おける制限事項も多い、などである。制限事項[9]に則してKMZファイル(地図データ)を作成して注意を払いながら使用する限りにおいては、実用的な使用は可能であるがとても安心して使える状況ではない。動作の不安定(特にズーム時に落ちる)については、"Garmin Forum"[12]を見ると、機種固有の問題ではなく対応機器全体で起こっているようである。このことから、ラスター(ビットマップ)地図の処理におけるコアな部分での問題であることが推測される。もしそうであれば、GARMIN社が多くの労力を投入する事も考えられ、結果として早い時期に解決される可能性もある。そのような対応を期待するところである。

 KMZファイルの制限についは、"Garmin Forum"[12]での情報にもあるように複数のKMZファイルを扱える。実際に複数のKMZファイルを作成してみるとそれらは確かに表示できる。ただし最大画像枚数は100枚である。これは1つのKMZファイルあたりの制限ではなく、複数のKMZファイルでの全画像の総枚数である。この制限(100枚)は、制限事項[9]の中でもっとも大きな制約は画像枚数(最大100枚)と考える。使用する地図の領域を考えた時、この制限(100枚)というのはある程度広さをカバーできるものの1都道府県単位での作成は無理である(2万5千分1の縮尺などの場合)。しかし現状のまま、この制限(100枚)がなくなり広範囲のデータを扱えるようになった場合、レスポンスのさらなる低下は避けられない。もしかすると、この折り合いのつくところとして、この制限(100枚)を設定したのかもしれない。
 もし都道府県単位以上の広域で利用する場合、それぞれの地域ごとにデータを収めたSDカードをあらかじめ複数枚用意する、といった対応が考えられる。だが、これはかなり煩雑である。もし"CustomMaps"フォルダに置いた複数のKMZファイルを他の地図のように切り替えながら使用できるようになれば、多少は改善できるようにも思える。しかし、現状では複数のKMZファイルを選択する事も出来ない。 今後、これらの点については是非とも改善して頂きたいところである。



参照URL

[1]  風を聴け(2009.10.13) Creating Garmin Custom Maps in Five Easy Steps, http://gps.cocolog-nifty.com/mt/2009/10/creating-garmin.html

[2]  Creating Garmin Custom Maps in Five Easy Steps, http://garmin.blogs.com/softwareupdates/2009/10/creating-and-using-garmin-custom-maps-in-five-easy-steps.html

[3]  Google Earth, http://earth.google.co.jp/

[4]  KML チュートリアル, http://code.google.com/intl/ja/apis/kml/documentation/kml_tut.html

[5]  GARMIN Additional Software, http://www8.garmin.com/support/blosp.jsp

[6]  カシミール3D, http://www.kashmir3d.com/

[7]  ImageMagick, http://www.imagemagick.org/

[8]  例えばActivePerl, http://www.activestate.com/activeperl/

[9]  "Garmin Forums" - "Creating Garmin Custom Maps" - "Technical Details", href="https://forums.garmin.com/showthread.php?t=2646

[10]  地図閲覧サービス(ウォッちず), http://watchizu.gsi.go.jp/

[11]  Garmap Home Page, http://harukaze.sakura.ne.jp/garmap/garmap.html

[12]  omani, http://xurkmanitu.hp.infoseek.co.jp/prog/omani/

[13]  "Garmin Forums" - "Creating Garmin Custom Maps", https://forums.garmin.com/forumdisplay.php?f=205



付記 "doc.kml"について

 "doc.kml"の基本的な記述例を以下に示す("Technical Details" [9]を参考にした)。"doc.kml"は、地図画像とその位置情報を記述している。ひとつの地図画像に対する情報は<GroundOverlay>~</GroundOverlay>で完結する。そのため複数の地図画像がある場合は、その数だけ<GroundOverlay>~</GroundOverlay>を書く必要がある。位置情報の表現として「地図の左上の緯度と経度、右下の緯度と経度」と示す方法が比較的一般的である。"doc.kml"をみると「北端の緯度、...、西端の経度」と書かれているが、これは同じ事である。もし画像に回転がある場合は、<LatLonBox>タグ中に<rotation>タグを記述する事により回転補正が出来るようである(未確認)。
 ところで本文では地図画像を"files"フォルダの下に置いたが、このフォルダ名は任意である。<href>フォルダ名/~</href>の部分を適宜変更すればよい。フォルダ自体が不要であればファイル名(地図画像の)のみすれば"doc.kml"と同じ場所に地図画像を置く事を意味する。


補足 "新ファームウェア"のリリース(2009.11.19)

 期待通り(?)に比較的早い段階で"新ファームウェアをリリースした"とのアナウンスが先日あった。対象機器は、Colorad、Oregon、Dakotaである。いままでβ版であったが今回のものは正規版である。早速、このファームウェアを試してみた。印象を以下に簡単にまとめた。ただし、テスト環境は、Colorad300(ファームウェアver.3.10)であり、他の機種について不明である。