俺のやりかた:eTrexでJNX

リトルサウス

2016年06月22日 22:48

2016/06/22 公開
2016/06/28 更新


※ 写真のPOIの日本語表示「白馬岳/SIROUMADAKE」の日本語部分は別途日本語表示が出来るようにしてないと表示されない

ハンディGPS eTrex30(英語版)を買って以来、これまでKMZ形式の地図を使っていた。

KMZ形式はタイルマップが100枚以下、山域ごとにファイル化しておいて複数を切り替えて使いたいと思っても出来ず、JNX形式のように複数の縮尺の地図を使ってズームレベルを設定できないなどいろいろ制限があって使い勝手がいいとは言えないものだった(しかも表示・移動がとても遅い)。
※ 同じズームレベルでも1枚のタイルマップの大きさを大きくすることで100枚の枚数制限の中で収容エリアを広くすることは出来る

買った当初から JNX 形式の地図が使いたいと思って辿り着いたツール gsijnx, ymapjnx だったが、自分には複雑すぎてやる気になれず放置していた。

それから4年、長い放置期間を経て久しぶりにやる気になって調べてみると、マップ側の仕様が変わってうまく動かないとかツールの配布サイトがなくなってるとか、、、OTL

出来ないとわかるとなんとかならないかと思うものでいろいろ探したところ自分にも出来そうなツールを遂に発見した。




◆ いきなり完成版

赤の左向き矢印からそれよりも拡大側の次の同じ印のひとつ手前のスケールまで同じ地図が表示され、この設定では120m以上拡大の時は120mスケールの地図が表示される。尚、このJNXファイルでは8kmより広域は設定していないので表示されない。


※ ハードコピーオリジナルはもっと彩度・明度・コントラストが高いが、実際のeTrex30の見え方に近いよう補正している





◆ はじめに
eTrex30英語版の細工としては本体表示の日本語化、POIの日本語化、JNX形式の地図利用などあるが、やりたいことと必要な仕込みがわかりにくいので整理してみる



必要な仕込み
jnx形式マップの利用
ハンディGPSの日本語表示
POIの日本語表示


パッチ済みファームウェアの適用





日本語フォントファイルの設置





etrexの日本語ローカライズファイルの設置






・・言った割には大してややこしくないか。JNX形式の地図を使えるようにするための仕込みはパッチ済みファームウェアの適用のみ。

ちなみに今回の作業環境はWindows10 Pro





◆ パッチ済みファームウェアの仕込み

■ ファームウェアの入手
実機のファームウェアバージョンと同じかそれ以上のバージョンのファームウェアファイル(.gcd )を入手する。

※ 最新のファームウェアはここ↓から入手可能
ttp://whiter.brinkster.net/generated/LatestGarminFirmwares.html

※ 古いのが欲しい場合はここ↓から入手可能
ttp://www.gawisp.com/perry/agree.html

■ パッチ当てツール FirmwarePatcher の入手
※ パッチ当てツールはここ↓から入手出した
ttp://whiter.brinkster.net/FirmwarePatcher.html


■ パッチの適用
パッチ当てツール FirmwarePatcher.exe を起動(保証がなくなる等々の警告ダイアログが出る)。

パッチ適用したいファームウェアを画面へドラッグアンドドロップかBrowse...から指定で即パッチ適用される。

実機の現在のファームウェアより新しいバージョンでなければファームウェアが適用されないので、上のハードコピーではファームのリビジョンをあげている(上の場合4.30から0.01上げて4.31にしている)。

■ パッチ適用済みファームウェアの反映
パッチ適用済みファームウェアを本体に適用する。マスストレージモードに設定したeTrex30をPCに接続し、Garmin eTrex30のドライブ直下/Garmin/以下にパッチ適用済みファームウェアをコピーする。


上のハードコピーではファイル名をGUPDATE.GCDとしているが、拡張子が同じだったら適用されると思う(リビジョンを上げたくないので未確認)。

コピーが終わったらPCと切り離し、デバイスの電源を入れると勝手にファームウェアアップデートが行われる。

そしてバージョン確認、、、


Setup > About を見たところ表示されるバージョン自体は変わっていなかった。







◆ JNX形式地図の作成

JNX形式の地図作成に使用したツールはどんなのかというと、、、
・・という、まさにこんなのが欲しかったという感じの ezjnxwin というツールを使用(作者の方に感謝)。


■ ツールの入手
ezjnxwin は作者の方のページ↓で公開されている。
ttp://myslowdays.blogspot.jp/p/gps_15.html

今回は 2016/06 時点の最新 Ver 0.3β を使用した。


■ ツールのインストール
ダウンロードしたファイルを解凍するだけ。


■ JNXマップの作成

とりあえず地図作成

地図レイヤーの数と種類、地図のズームレベル、eTrex30側での表示スケール、画像処理のパラメータなどを設定ファイル ezjnxconf.xml で変更できるようだが、とりあえず初期値のまま地図作成、、、

ezjnxwin.exe を起動する。

起動直後に表示される「初めに」はツールの使用方法などの記載もあるので最初によく読んで理解しておいた方がいいだろう。

地図の作成自体は「マップ作成」タブだけで出来る。

マップ作成タブでの操作は大雑把に言うと地図の範囲を最初に述べた3つの指定方法のいずれかで指定して > 「計算」 > 「地図作成」 のボタンを押すだけ。

ここでは地図範囲を経度緯度で指定することにする。

地図範囲の指定の仕方は「初めに」に詳しい説明があるが、1点補足を、、、

緯度経度指定で南西端・北東端を指定する際に直接入力してもいいが、「マップ」タブの「地理院地図」ボタンで表示される地図で指定した場所を代入してくれる機能がとても便利。座標の代入は、地図上で任意の場所をクリックするとその場所が地図表示エリアの中心に移動し「座標設定」ボタンでその座標が代入されるという操作になるが、座標を代入するのが南西端か北東端かはアプリに判断できないので、「座標設定」ボタン操作前に南西端又は北東端の緯度又は経度のテキストボックスを選択しておく必要がある。

「計算」を押すと、指定した範囲と ezjnxconf.xml の設定から各レイヤーの地図のズームレベル・タイル数などを計算し、結果が表に出力される。

そして「地図作成」

たったこれだけで複数の種類・ズームレベルを使ったJNX形式の地図が作れてしまう。


実行例。画面下の画左は元画像、右は画像処理後。プログレスバー左は処理中のレイヤー、右は全体の進捗。X1, Y1, X2, Y2 はズームレベルが一つ上がると倍になっているので各ズームレベルでのタイルの位置ではないだろうか。

処理が終わるとツールと同じフォルダに ezjnxmap.jnx ファイルが出来る。

後はこれをeTrex30の/Garmin/BirdsEye/ ディレクトリにコピーして完了。eTrex30を起動してSetup Map > Select Map で作成した地図を Enable にすれば表示される。
※ 地図ファイルはMicroSDに /Garmin/BirdsEye/ ディレクトリを作ってそこに置いても認識されるようだ

※ 同じJNX形式の地図でもMAPIDが違うとeTrex30の Select Map で別物として個別に有効無効を切り替えられるようだが、ezjnxwin で作成される地図はeTrex30にデモで入っている Demo.JNX と同じようで一括りに表示される。Demo.JNX がどんなエリアが入ってるのかは知らないが、気になるようならリネーム(もちろん拡張子側)すれば認識されないようなのでそれでいいだろうう、、、


参考 : Ver 03.β デフォルトの ezjnxmap.jnx で作成される地図


eTrex30のズームレベル
地図の種類
地図のズームレベル


20km~




5km-12km
Yahoo地図(Normal)
10


1.2km-3km
Yahoo地図(TopoGraphic)
12


500m-800m
Yahoo地図(TopoGraphic)
14


300m
地理院地図
15


~200m
地理院地図
16






2016/06/28 修正
2016/06/26リリース ver0.4test バージョンではezjnxconf.xml のLevelScaleの記述が変更され、表示させたいレベルを直感的に指定できるようになっていた、、、


eTrex30のズームレベルで表示される地図

出来たJNX形式の地図をeTrex30に入れるとKMZ形式に比べて随分早くなった地図表示やズームレベルで地図の種類が変わっていくのが新鮮で嬉しかったが、地図が切り替わるズームレベルを変更したいと思うところが出てきた。


そして↓ここで JNX のことを勉強
ttp://whiter.brinkster.net/en/JNX.shtml


JNX レベルと表示される最低スケール値には決まりがあって、例えばズームレベル120m の時に地図表示させるには地図のスケールが139(HEX)以上ないと表示されないようだ。

JNXレベルと表示される最低スケール値



GPSユニットのズームレベル
Lower visible JNX scale value(DEC)
Lower visible JNX scale value(HEX)

800km
2,083,334
0x1FCA06


500km
1,302,084
0x13DE44


300km
781,250
0xBEBC2


200km
520,834
0x7F282


120km
312,500
0x4C4B4


80km
208,334
0x32DCE


50km
130,209
0x1FCA1


30km
78,125
0x1312D


20km
52,084
0xCB74


12km
31,250
0x7A12


8km
20,834
0x5162


5km
13,021
0x32DD


3km
7,813
0x1E85


2km
5,209
0x1459


1.2km
3,125
0xC35


800m
2,084
0x824


500m
1,303
0x517


300m
782
0x30E


200m
521
0x209


120m
313
0x139


80m
209
0xD1


50m
131
0x83


30m
79
0x4F


20m
52
0x34


12m
32
0x20


8m
21
0x15


5m
14
0xE




一方、以下は DigitalGlobe 社が提供するデータのズームレベルとスケール値の一覧で、これと同じデータが ezjnxconf.xml の LevelScale タグに記述されている。

DigitalGlobe 社によるズームレベルとスケール値



Zoom Lebel
Scale Value
(DEC)
Scale Value
(HEX)

0
156543033+
0x954A839


1
78271516+
0x4AA541C


2
39135758
0x2552A0E


3
19567879
0x12A9507


4
9783939+
0x954A83


5
4891969+
0x4AA541


6
2445984+
0x2552A0


7
1222992
0x12A950


8
611496
0x954A8


9
305748
0x4AA54


10
152874
0x2552A


11
76437
0x12A95


12
38218+
0x954A


13
19109
0x4AA5


14
9554+
0x2552


15
4777
0x12A9


16
2388+
0x954


17
1194
0x4AA


18
597
0x255


19
298+
0x12A


20
149
0x95


21
74+
0x4A




上の2つの正しい関係性は自分にはわからないが、ezjnxwin の中では ezjnxconf.xml の Scale の Value 値と「JNXレベルと表示される最低スケール値」の表の関係に合っていることはわかった。

自分は地理院地図のズームレベル16 の地図を ~120m で表示したかったが、デフォルト状態の Scale 19 はValue が 0x12A なので 120m のズームレベルで必要なスケール値 0x139 に足りず ~80m までしか表示されない。


こんなやり方が正しいのかわからないが

ezjnxconf.xml の LevelScale タグのところを
<Scale Zoom="19" Value="12A" />
<Scale Zoom="19" Value="139" />
として、Map タグのところで
<Layer Zoom="16" Scale="19" WebID="1">

として地図作成したら期待したとおりズームレベル16 の地図が ~120m で表示出来るようになった。

他にも同様のやりかたでズームレベルで表示される地図を変更したが、念のため POI から地図表示させズームレベルを変更しても位置ずれはないように思う。


ちなみに Scale Value はマップタイル1枚 256px x 256px の 1px が何mmに該当するか・・というものらしく、赤道上の円周を 256 で割ったものがズームレベル 0 の値(地球全体)で、その半分がレベル1、そのまた半分がレベル2・・なのだそうだ。




メッシュ指定の範囲設定

ezjnxwin の「マップ作成」タブで地図範囲をメッシュ指定する際に入れる値の話。

普通知ってて当たり前?自分は最初何を指定していいのかわからなかったが、わかればメッシュ単位で地図作成するのも管理上無駄がなくていいように思う。


値は国土地理院の↓基盤地図情報ダウンロードサービスで確認出来る。
ttp://fgd.gsi.go.jp/download/menu.php

上記ページで「基盤地図情報基本項目」クリック > 「地図から選択」で表示される地図を拡大していってこの枠の区切りで表示されるのが1次メッシュ。




もっと拡大していって↓エリアが分割されたこの状態が2次メッシュ。



見えにくいので部分的に拡大。

白地図だと自分がほしいエリアがよくわからないが、画面左下のボタンから地図の種類を変更して普通の地図を表示できる。





こうじゃないと自分は必要な地図のエリアを見つけられない、、、



ちなみに2次メッシュ単位で地図作成した自分のeTrex30の地図選択画面はこんな感じ
(表示されていないが100個近くJNX形式のマップファイルを入れている)。







以上、一気に快適な地図環境になった。


グッバイ KMZ 、もう2度と使うことはないだろう





関連記事
俺のやりかた・・シリーズ:eTrexで日本語POI



あなたにおススメの記事
関連記事