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


修正・本文(2009.10.12)

はじめに

 これまでGARMIN社製のGPS機器で取り扱える地図データはベクトルデータのみでラスター(ビットマップ)データは取り扱えないものと思っていた。ところが最近、GARMIN社製品のオンラインショップTKA PLANETでひとつの地図に目がとまった[1]。これはどう見てもビットマップがベースになっている地図であり、商品説明にもそのような記述がある(仕様や使用データ)。何かラスターデータを取り扱う方法があるようである。そこでgoogleで検索してみると、2つのツール("Moagu"と"BMaP2MP")が存在している事が分かった。"Moagu"は$19.95であるが、デモ用として500x500までの1画像のみ作成する事が可能である[2]。"BMaP2MP"はフリーウェアであるが、開発者がロシア人らしく使用方法に関する英語のドキュメントはreadmeファイル以外あまり見当たらない[3]。少し試してみたが、使い方がよく分からなかった。

 そこでまず、Moaguでラスター地図を作成して手元のeTrex Legend HCxに載せてみた。その結果は、確かにラスター地図が使えることは確認できた。しかし、描画時間がかなり長く移動を伴う使用には厳しい、といった印象であった。実用的に使うための何かヒントはないか、とドキュメントなどを少し読んでみると「MoaguはBMaP2MPのフロントエンドとしても使える」と書かれている。試してみると、確かにBMaP2MPでラスター地図を作成できた。さらに描画時間もMoagu単独で作成したものよりもかなり速い。徒歩や自転車などでの使用には充分に実用的と思われる。MoaguとBMaP2MPの動作を注意しながら見てみると、中間ファイルとしてBMaP2MPの設定ファイルやWindows(MS-DOS?)のバッチファイルを生成していることが分かった。これらからBMaP2MPについての基本的な使い方を知ることができた。

 ところで、地図データを利用するパソコン用のソフトウェアはカシミール3D[4]が有名であり、多くのユーザが使用している。これはカシミール3Dがフリーウェアというだけではなく、市販されている解説書(いわゆるカシミール本)には2万5千分の1、5万分の1、20万分の1、などの地図データがCDやDVDに収録されている事、オンラインで地図データの参照が可能、と比較的安価で地図データを入手する事ができる、といった理由と思われる。さらにこれらの地図データは、カシミール3Dのプラグイン機能であるマップカッターを用いる事により、他のパソコンやPDAのGPSソフトでも利用する事が可能である。

 本文では、上記を組み合わせることによりGARMIN社製の携帯型GPS機器用ラスター(?)地図を広域化する手法を確立したので報告する。


注意事項(免責など)

 ここで記述した方法やプログラムの使用についてはすべて自己責任でお願いします。これにより生じたいかなる不具合、損害などに対していかなる保証も行ないません。特に、自分自身が個人的に使用する事を前提にしているため、プログラムにおいてはエラー処理などをおこなっていない、手法や結果の検証が不十分、またバグなどもあると思われます。そのため、適宜、自分の環境や目的などに合わせて、自由に改変・改良して下さるようお願いいたします。


背景と目的

 現在では、GPS機器やカーナビゲーション機器は一般的であり広く普及している。しかし、5~10年ほど前まではGPSはあまり一般的ではなく、地図と共に現在位置を知る方法は限られていた。当時の定番的な方法は大別すると2つあった。ひとつは、カシミール 3Dの地図データをマップカッターで切り出し、GPSレシーバを搭載したノートパソコンやPDAに地図データを移し、garmap[5]やomani [6]などのGPSソフトを用いるものであり、もうひとつは、GPS専用機であるGARMIN社製の機器を用いるものである。前者はGPSレシーバの性能が日進月歩の向上に対応できる事やハードウェアは手元のものを使えるので比較的安価、などといったメリットがあった。後者はフィールドワークにおける取り扱いに長けていた(携帯性、電池の保ち、防水性など)。しかし最近では、GPS受信性能も向上し製品開発も一段落した状況であり、GARMIN社製の機器も日本語版を除き安価に入手できるようになった。
 GARMIN社製の機器用の地図データは市販されているもののみならず、インターネット上の公開されているデータなどを用いて自作することもできる[7]。 自作地図の作製には手間や時間などを必要としているが、必要に応じていろいろな創意工夫も可能である。特に、登山やフィールドワークを行うものにとっては国土地理院などの地形図は馴染み深く、カシミール3Dなどの地図データを何とかGARMIN社製の機器で使用したい、という要望が潜在的にあった。
 以上のような背景から、本方法の開発目的はカシミール3Dの地図データ(地形図)からGARMIN社製のGPS機器用ラスター地図を作成する事である。さらに2万5千分の1、5万分の1、20万分の1、の各縮尺のラスター地図をGPS機器のズームレベルに応じて表示できるよう対応をおこなった。

 対象となる機種は、GARMIN社製の携帯型GPS機器で地図の表示ができるものであり、具体的にはeTrex(Legend,Vista...)、GPSmap 60CSx、Colorad、Oregonなどである。なお、実際の動作確認は英語版のeTrex Legend HCx(ファームウェアver. 3.00)とColorad300(ファームウェアver. 3.00)で行った。

方法

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

 Moaguは作業においては必ずしも必要ではないが、画像のテストといった事などに便利であり用意しておく方がよい。さらにMoaguにはsendmap20 Proが梱包されており、TYPファイルを処理するためにも事前の入手をお勧めする(フリー版のsendmap20でもTYPファイルは扱えるようであるが...)。BMaP2MPはラスターデータからポーリッシュファイル(.mp)を作成、cpgsmapperはポーリッシュファイルなどをコンパイルしてimgファイルやTYPファイルを作成、sendmap20は複数のimgファイルやTYPファイルを1ファイルにまとめる、ImageMagickはラスター画像のサイズや色数の変更、Perlは本プログラム(Perlスクリプト)の実行、にそれぞれ必要となる。これらをダウンロードしてインストールした後、コマンドプロンプト上から容易に使えるようにPATH変数を修正する。
 ちなみに当方での作業環境は下記の通りであり、他の環境では動作は未確認である。しかし、一般的なWindows環境であれば作業の速さは異なるものの、特に問題なく動作すると思われる。

 マップカッターで画像を切り出す際、garmap形式やsuunto形式などを選択できる。実用性を考えると、必要最小限の領域をその都度作成するより、ある程度大きな領域を作成する方が面倒が無い。小領域の地図データを作成する場合はsuunto形式の方が1ファイルのため煩雑さがないが、領域が大きくなるとマップカッターの動作が極端に遅くなる、BMaP2MPやcgpsmapperの関係から2000x2000程度のサイズまでにするべき事がMoaguのHELPファイルに書かれているため、本方法ではgarmap形式のみに対応する事とした。

手順

 ラスター画像を作成する作成の手順は以下の通り。
  1.  使用するツール群のインストールと環境整備・調整(PATH変数など)
    先にあげた必要なツールを入手して(ダウンロードなど)、インストールして作業環境を整える。

  2.  作業で使用するフォルダ群の作成
    適当な場所に大本(おおもと)となるフォルダ(親フォルダ)を作成し、そこにラスター画像を切り出すフォルダ(子フォルダ)を作成する。2万5千分の1の地図用のフォルダ名は"2.5"とする。同様に、5万分の1、20万分の1の地図用のフォルダ"5"と"20"を作成する。ただし、2万5千分の1の地図データのみを作製する場合は他の縮尺用のフォルダは不要。また同じレベル(子フォルダ)に作業用フォルダ"work"を作成する。さらに各縮尺用のフォルダの下に孫フォルダとして"cfg"、"work"を2つを作成する。なおフォルダ名は本プログラム中でこれらを使用しているため、名称を変更するとプログラムは動作しないので注意が必要。以下に必要なフォルダ構成を以下に示す。


  3.  本プログラム(バッチファイルとPerlスクリプト)や設定ファイルを親フォルダに展開
    親フォルダに本プログラムや設定ファイルなどを置く。

  4.  カシミール3Dのマップカッターを用いた対象の地図を所定フォルダへの切り出し
    マップカッターで画像を切り出す際の選択項目や注意事項を以下に示す。
  1. コマンドプロンプトを起動し作業の親フォルダへ移動(CD)し、バッチファイルを実行
    (または親フォルダのバッチファイルをダブルクリック)
    コマンドプロンプトを起動して親フォルダへ移動し、バッチファイルを実行する。バッチファイルは2つある("make1.bat"と"make3.bat")が、作成するデータに応じてどちらかを選ぶ。2万5千分の1の地図のみの場合は"make1"を、2万5千分の1~20万分の1の地図の場合は"make3"を実行する。このバッチファイルはPerlスクリプトを実行することにより、garmapの設定ファイル"mapinfo.dat"を読み込み、"cfg"孫フォルダに各ラスター画像のワールドファイル(".tfw")[12]とBMap2MP用の設定ファイルを作成、BMaP2MPによりポーリッシュファイル(".mp")などを生成して、cgpsmapperによりこれをコンパイルして".img"ファイルを作成していく。そして最後に".img"ファイルをsendmap20で1つのファイルにまとめてgmapsupp.imgを作成する。
  2. 作成した地図データ"gmapsupp.img"をGARMIN社製GPS機器にコピー
    親フォルダに作成された地図データ"gmapsupp.img"をGARMIN社製GPS機器にコピーする。コピー先は機種にもよるが、(USB)メモリーの"garmin"フォルダなどである。ただし、機種により異なる機器もあるので各自で確認する必要がある。ところで、地図データが大きい場合、GPS機器のmass strage機能を利用したUSB経由でのコピーは時間がかかる。むしろ多少手間でも、USBメモリーをGPS本体から外して、USBメモリーに直接コピーする方が速い。

結果

 MoaguのBMaP2MPフロントエンドの画面では、BMaP2MPの設定パラメータは"USGS Topo"と"General"の2つに分けられている。それぞれの設定で作成した地図データをeTrekに表示したものを以下に示す。ここでは、マップカッターで画像を切り出す際の「カラー」における値を「16ビット」と「4ビット」とした時のものである。

"USGS Topo"(16ビット)

"USGS Topo"(4ビット)

"USGS Topo"(16ビット) "USGS Topo"(4ビット) "General"(16ビット) "General"(4ビット)

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

 パラメータの値は、"USGS Topo"と"General"におけるそれぞれのデフォルトである。"USGS Topo"は名称からも分かるように地形図が見やすいようにMoaguの作者により調整されているようである。作成した地図を一見した印象は、等高線や文字がかすれるなど、詳細が消失する傾向があることである。これらはBMaP2MPのパラメータの調整である程度の改善はできるが、BMap2MPを使う限りあまり大きな改善は期待できないように思える(現時点で)。また"USGS Topo"では元の画像サイズを2倍に拡大して処理しているが、試しに等倍サイズで処理してみたところ、さらに等高線がつぶれるなどの詳細の消失が確認された。

 マップカッターでの「16ビット」と「4ビット」違いであるが、"USGS Topo"と"General"で結果が異なる。"USGS Topo"での顕著な違いは川の塗りつぶしが「16ビット」ではかすれが生じるが、「4ビット」ではそれが生じていない。"General"では逆に近い状況となった。それ以外にも、等高線や道路の線と文字などにおいて、かすれ方などの違いが現れた。なお、本プログラムでは用いた設定ファイル(BMaP2MP-org.cfg)はこれらの結果から、"USGS Topo"を基本としている。ただ、まだいくつかパラメータの意味(動作)が分からないものがあり、現時点で取りあえず「良い」と思われる設定である。ちなみに1都道府県の2万5千分の1の地図の作業に要する時間は半日から1日程度であり、要する時間のほとんどが手順5(ポーリッシュファイルのコンパイル)である。

 ところで、3つの縮尺の地図データを作成する場合は少し注意が必要であった。地図を表示する時、表示するズームレベルに応じて地図の縮尺を換えるのが一般的である。ポーリッシュファイルではズームレベルを"Level#=n"の形式で指定することができる。そこで、20万分の1の地図は500m、5万分の1の地図は300m~150m、2万5千分の1の地図は120m以下で表示する事を想定して、それぞれの異なる縮尺のポーリッシュファイルに"Level0=22"、"Level0=23"、"Level0=24"と記述して、コンパイルして作成された3つのimgファイルをsendmap20で合成してgmapsupp.imgを作成すると、500mから3つの縮尺の地図を重ね合わせて表示されてしまう。そこで、各ファイルのレベルを統一して、

Levels=4
Level0=24
Level1=23
Level2=21
Level3=20

などと記述して、20万分の1のポーリッシュファイルは"Data2=..."、5万分の1のポーリッシュファイルは"Data1=..."、2万5千分の1のポーリッシュファイルは"Data0=..."と記述すると、ポーリッシュファイルのコンパイル時に2万5千分の1のポーリッシュファイル以外はLevel0のデータが無いためエラーとなる。以上のような状況から、本方法では3縮尺の同一区画を1ポーリッシュファイルにまとめることにより、このコンパイルエラーを回避した。

考察

 作成した地図データを使用してまず気づくことは、ベクトルデータに比べて描画速度が遅い、線や文字など表示が見づらい、と事である。ラスターデータの場合、描画速度と表示品質は基本的にトレードオフの関係である。表示を見やすくするとレスポンスはさらに悪くなる。BMaP2MPの設定ファイルの調整する場合、これらのバランスをなどを考えて検討する必要がある。ちなみに、市販している地図画像(サンプル)[1]とを比較した場合、その表示は今回作成のものに比べて繊細な部分まで再現されている(表示速度は不明)。また表示に対する負荷がかかることから、電池の消耗はベクトルデータに比べて早いことが予想される。

 ところで本報告では画像データとしてカシミール本のものを用いたが、カシミール 3Dを使う限り国土地理院で公開している「ウォッちず」などに対しても本方法をそのまま使用する可能である。「ウォッちず」のデータは、2万5千分の1のみならず、1万2千5百分の1、6千分の1、のラスター画像がある[13]。 試しに、6千分の1の地図に対して本法を適応したところ、表示品質が向上しただけではなく、生成されたimgデータのサイズが小さくなり操作する時のレスポンスが向上した。作成に際しては2万5千分の1の地図と同様の取り扱いであり、6千分の1の地図データは"2.5"フォルダにマップカッターで切り出した画像データを保存するのみで後の処理は全く同じである。 ただし、画像は2倍に拡大せず元のサイズでおこなった(本プログラム("mk_init.pl")の"$mode=1")。

 この基本となる技術はラスター画像の点をポリゴン化してベクトル画像に変換することによりGARMIN社製のGPS機器で用いる事を可能にしている。ここではラスター画像の一般的な地形図を変換したが、Moaguのでサンプルにもあるように航空写真や衛星画像を重ね合わせることも可能である。このことはGARMIN社製のGPS機器が携帯型のGIS機器になることを意味しており、従来のGPS機器としての利用だけではなくフィールドワークにおける新たな利用方法を示唆していると考える。



参照URL

[1]  GarminGPS用 日本地形図25000 microSD/SD版 2009年8月版
  (紙の地形図・カシミール3Dともシームレスに連携), http://www.tka.jp/SHOP/tm25k.html

[2]  Moagu, http://moagu.com/

[3]  BMaP2MP, http://bmap2mp.webhop.org/bmap2mp.rar

      Free Geography Tools
     "Converting Raster Maps To Garmin Vector Format With BMap2MP",
      http://freegeographytools.com/2008/converting-raster-maps-to-garmin-vector-format-with-bmap2mp

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

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

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

[7]  例えば以下のようなサイトなどがある。
     GPS関連のお部屋, http://homepage3.nifty.com/~abel/main/GPS.html
     英語版GPSに日本地図を入れよう!,http://t-nemo-web.hp.infoseek.co.jp/gps/japan-map-gps.htm
     GARMIN mapsource対応機種用地図作成ツール MAPTOOL_G のページ, http://gak.boo.jp/gps/maptool/

[8]  cGPSmapper, http://www.cgpsmapper.com/

[9]  sendmap20 Pro, http://www.cgpsmapper.com/

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

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

[12]  GeoTIFF パラメータの詳細、World Files と Metadata,
   http://www.yaskey.cside.tv/mapserver/note/metadata_info.html#World_Files

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

[14]  エラー対策その2 , http://bqolife.blog53.fc2.com/blog-category-5.html

修正・補足