|
基盤地図情報から等高線地図作成
T.序
前回、基盤地図情報からGARMIN携帯GPS(map60CSx、eTrex、Nuvi等)用自作地図(自作マップ)を、フリー・ソフトだけで作成したが等高線地図だけは
実用的ではなかった(「4.1
基盤地図情報で自作地図事始め」に既述)。標高データが変換途中で欠落してしまう為だ。解決方法として、XMLファイルから直接PFMへ書き出すVBAモジュールを作成してみた。登山地図に等高線は必須なので、GPSの小さい液晶画面でも見やすくなるよう、等高線の間隔、太さ、色も工夫してみた。
|
|
U.使用ツール
| ツール(バージョン) |
MS-EXCEL2000、2007
GPSMapEdit フリー版 (1.0.56.2)
cGPSmapper.exe フリー版 (0098c)
sendmap20.exe フリーソフト (4.0)
|
@検証には、GARMIN Map60CSx(USA版)、OSはWindows2000、XP、Vistaを使用。
A上記必要ツール(ソフト)は、あらかじめインストールしておく。ここを参考に!
|
|
V.構想/仕様
-
書き出すPFMファイルには、新しい表記形式を採用。具体的には、下記のような形式で書き出す。(詳しくはcGPSMapperのマニュアル参照。)
[POLYLINE]
Type=0x0022 ← 線種コード
Label= 2000 ← 標高
EndLevel= 1 ← ズームレベル設定
data0=(35.971854722,138.706038333),(35.971753333,138.706100556),・・・・・・・・・・・・
[END]
|
ここでdata0が緯度経度による等高線(contour)データ。
-
等高線の間隔は、20mとする。なおかつ、100m毎、500m毎に線の太さと色を変え視認性を良くする。
-
500m毎、100m毎等高線には標高を表示するが、表示が煩わしくなるので20m毎の標高は表示しない。
-
データを小さくし表示スピードを上げるため、標高500m以下の等高線は、作成しない。
|
|
W.等高線地図作成手順
-
国土地理院の基盤地図情報サイトから「標高点(数値標高モデルを除く)」データ(*.ZIP)をダウンロードし解凍するとXMLファイルが現れる。それを任意のフォルダーへ保存する。手順は、ここに記載してあります。
-
MS−エクセルを起動し、自作変換VBAモジュールを実行する(詳しくは後述する)。
-
「ファイルを開く」ダイアログが現れるので、XMLファイルを1つ選択し「開く(O)」をクリックする。
変換作業中はトップのワークシートに、「処理中です・・・1/6」のように進捗が表示される。
下のメッセージが出ると、変換完了。
-
変換されたPFMファイルは、「newPFM.mp」という名前で、XMLファイルと同じフォルダーに出来ているので確認する。
-
出来たPFMファイル(「newPFM.mp」)を「GPSMapEdit」で呼び込み、プロパティー等を修正したら任意の名前に変更し
、一旦PFMファイル(*.mp)として保存する。これをしないと怒られる。これ仕様。GPSMapEditについては、ここを参考に!
↓プロパティ「Map Properties」の設定例(英語版 GPS用)
-
GPSMapEditメニューの「File」「Export」「Garmin
IMG/cgpsmapper.exe」でGPS地図(*.img)へ変換する。「cgpsmapper.exe」へのパスを指定することを忘れないこと。「Run」ボタンをクリックすると変換作業が始まる。(この作業はファイルサイズが大きくなるほど「べき乗」的に時間がかかるので忍耐とPCの性能が試される)
-
出来たGPS地図(*.img)を「sendmap20」でGarmin
GPSへアップロードする。(注意:@SDカードに登録済みのマップは消去されるので、必要なマップは一緒に再アップロードする。ASDカード無しGPSの場合、登録済みベースマップが消えてしまうので要注意!!)
-
GPSの「Map Set Up」メニューでアップロードを確認する。実際に地図を表示させて確認することも必要である。
結果
ここで詳細レベルとは、ガーミン60CSxの「Setup
Map」メニューで現れる「Detail」プロパティのことである(下)。私は、最近「Normal」 で使っている。
それから線の太さだが、同じコードでもGPSMapEditとGPSでは同じに表示されない。どのように表示されるかは、内部のソフトウエアに依存するからだ。GPSに色々表示させて検討した結果、500m毎等高線には「0x0008」、100m毎等高線には「0x0029」、それ以外には「0x0021」を割り当てた。これは各自好みで変更すると良いだろう。参考の為、GPS画面コピーを下に添付する。「0x」の後に「00」を加えて読みます。「0x08」は「0x0008」と同じです。注意:
ファーム・ウエアのバージョンが異なると表示結果も異なる可能性があります。
|
【VBAモジュール】
VBA for MS-エクセルを、参考掲示する(ここをクリック)。VBAの知識のある方の為に使用方法を簡単に記す。
-
Web画面のスクリプトを"コピー&ペースト"して、エクセルの「ツール」「マクロ」「Visual Basic
Editor」の「標準モジュール」へ転記する。(ソースをコピーしないこと。メタ文字を使用しているので・・・)
-
VBAモジュールの実行(起動)方法
下記「a」か「b」、どちらでもOK。(ワークシート上のコマンドボタンやツールバーへ割り当てる方法もある。)
(a) メニューバーの「ツール」-「マクロ」から起動する方法
マクロとして「Converter_CntrXML_to_PFM」を選択し「実行」ボタンをクリックする。
(b) 「Visual Basic Editor」から起動する方法
サブ・プロシージャの「Converter_CntrXML_to_PFM」を「イミディエイト欄」に記述し「Enter」で実行する。
-
何m毎に等高線を作成し、線種、標高表示をどうするかは、下記のスクリプト(今回修正)で決まる。適宜変更可能。
|
【後記】
これに道路地図や河川地図を被せれば立派な登山地図となる。道路/河川地図は前項の方法(シェイプ・ファイル経由)で作成すれば良い。
我流、かつ速攻で作成したので洗練されたコードになっていない。ロジックの誤りなど、ご指摘をお願いする。(くれぐれも、掲載モジュールは等高線地図専用で、且つ、対象データは、「標高点(数値標高モデルを除く)」データであることに留意願う。)改変は自由とします。
なお、本項の等高線地図を、前項の方法(シェイプ・ファイル経由)で作成した地図と、GPSMapEditで合成しないこと。そのままではレベルの記述方法が違うので期待通りに表示されない。別々のファイルとしてそのままGPSへアップロードして、マルチ・レイヤーで表示させるのが正解である。(記述変換すれば合成も可能だが...)
なお基盤地図情報から作成するPFM(*.mp)ファイルは、かなりサイズが大きくなる。あるサイズ(私のPCで約400MB)を超えると「cGPSmapper」で変換中、エラー表示が出て失敗する。具体的には、長野県全域と北海道全域。原因は、不明。PCの性能というより、「cGPSmapperフリー版」の仕様と推察する。対策として地図を分割して作成している。
【免責事項】
この記事は個人的な備忘録です。筆者はこれ(VBAモジュール)を使用して生じたいかなる不具合、損害に対して暗黙の保証も含め、いかなる保証も行ないません。
|
【出来上がりサンプル】
@本項で作成した等高線地図、およびA3.1項の方法で作成した道路地図、B昔作った山名地図(全国)、の3つをsendmap20でGPSへ送信し表示させた例を掲載する。
| Detail (詳細レベル): Normal(普通) 文字サイズ: Large(大)
位置: 槍ヶ岳周辺 |

|

|

|

|

|

|

|

|
槍ヶ岳ではないがGPS画面コピーをつなぎ合わせたのが下の地図。
崖記号は無いが、地形は十分認識できるので満足している。ただし、今回20m等高線の標高表示は廃止した。
検証していないが、eTrexやNuvi(ヌビ)にもこの自作地図は搭載できるはずだ。

【変更歴】
7.VBAモジュール改訂と解説修正(赤字): 09年9月30日
500、100、20m毎各等高線の出現タイミング(Level)を変更
6.GPS画面コピー(大)追加: 09年5月8日
5.VBAモジュール起動方法を追記: 09年5月7日
4.全面改訂: 09年4月20日
3.加筆: 09年4月15日
2.お願いを削除: 09年4月4日
1.作成: 09年01月10日
|
|