qpeGPSに適した地図画像の作成

qpeGPS の現行バージョン(Ver.0.9.2) では隣接する複数の地図画像を並べて表示させることができない。そのため、地図表示にブランク(領域外=黒色)が現れないようにするには、隣接する画像に画面サイズ分の重なりが必要である。地図画像はカシミール3Dマップカッタープラグインを用いて格子状に切り出すことができるが、切り出された画像には重なりがない。そこでカシミール3Dを用いてあらかじめ画面サイズ単位で地図画像を切り出しておき、それらを縦横に連結して1枚の画像ファイルを作る。これに隣接する画像ファイルは周辺部を重複させるように連結して生成する方法が考えられる。しかしこれらを手作業で行うのは大変面倒である。そこでこの連結作業を自動的に行うソフトウェアを作成した。このツールと既存のソフトを使用することで、容易にqpeGPS用の地図を生成することができる。

1. 地図画像の切り出し
地図の切り出しにはカシミール3Dを用いる。まずパレットの選択で『マップカッター専用』を選択しておくとPDA上で見やすくなるだろう。広範囲を切り出したい場合は、あらかじめ領域の緯度・経度を調べておき、『緯度経度の指定』により切り出し範囲を選択すれとよい。マップカッターで切り出すときの設定は以下の通り。

2. 画像の連結
ここで拙作 gar2qpe.exe を使用する(ソースコード gar2qpe.c をBorland C++ 5.5.1でビルドしたもの)。WindowsのDOS窓で動作するはず。
上記の方法で切り出したBMPファイル(ファイル名は0からの通し番号.bmp)、およびmapinfo.datが存在するフォルダに移動し、DOS窓から以下のコマンドラインを入力する。
gar2qpe 4 3
これはそれぞれの画像ファイル(240×320)を横に4枚、縦に3枚連結することを意味する。この場合、新しく生成された画像は960×960のサイズとなる。ファイル名は map????.bmp となる。北西部分から順に生成する。隣接するファイルは境界部分がオーバーラップする。連結された画像ファイルはすべて同じサイズとなる。つまり指定された連結数を確保されない部分は無視される。この半端な部分は選択領域の東の端と南の端に生じる(バグではなく仕様です)。これはマップカッターで切り出された画像ファイルの縦横の枚数と、縦横の連結数で決まる。
また同時にqpeGPSの地図情報を格納するファイルである maps.txt が生成される。

3. BMPからPNGへの変換
ここではWindows用のフリーソフトTinuousを使用する。フォルダ内のすべての画像ファイルに対して一括処理ができることが特長である。

なお、私が使用したバージョン(1.80)では多数のファイルを連続して変換しているときに変換作業が途中で終わってしまうことがあった。メモリ管理に問題があるように思える。何回かに分けることによって必要なファイルをすべて変換することができた。

4. PDAへの転送
maps.txt と map????.png をPDAに転送する。変換元のBMPファイルは不要。

備考(言い訳)
初めからPNG形式で連結できれば後の変換作業は必要ないのだが、PNGで連結するのは面倒そうだったのでBMPで連結することにした。また16ビットBMPにした理由は、8ビット以下ではパレットが画像ファイルごとに存在し、マップカッターで切り出される個々の画像は異なるパレットを持ち、それらを統合するのがとても面倒そうだったからである。16ビット以上のBMPにはパレットは存在せず、ピクセルごとに色情報を持つため連結しやすい。


戻る