【ymapjnx】Garmin BirdsEye JNX 作製ツール

Garmin BirdsEye JNX ファイルを Yahoo!地図 から作製します。
【Download】

ymapjnx14.zip (284KB) version 1.4 (2011-06-26)

gsijnx02.zip (26KB) version 0.2 (2011-08-28) (電子国土 使用バージョン)

【変更履歴】
version= 0.1 (2011-04-23)
  • 初版
version= 0.2 (2011-05-01)
  • 無効な地図領域"No Map"を無視する機能を追加。
  • タイルのファイル数が多くなるので、ダウンロード先を複数のサブフォルダに分けるように変更。
  • 途中で停止した場合などで壊れたタイルデータがある場合は、再ダウンロードする機能を追加。 @Image.open()
  • 出力ログメッセージを削減して、すでにタイルをダウンロードしている場合の処理スピードを改善。
version= 0.3 (2011-05-08)
  • 50000個のタイル数制限を超えた場合に自動で分割する機能を追加。
  • 引数で設定ファイルを指定できる機能を追加。
  • 海外版のYahoo! Maps(maps.yahoo.com)に対応。 mapmode = "world"
  • 緯度経度がマイナスの場合の計算値が間違っていたのを修正。
  • ダウンロードした地図タイルの確認用html_viewerを追加。
version= 0.4 (2011-05-12)
  • 指定したレベルを非表示にする機能を追加。 displaynone = (..)
version= 0.5 (2011-05-15)
  • ログ出力に時刻を追加。1分ごとに出力するよう変更。
version= 0.6 (2011-05-17)
  • 自動分割有効時に指定したレベルを非表示にする機能が有効になっていなかったのを修正。
  • 接続失敗時に10回までリトライする機能を追加。
version= 0.7 (2011-05-20)
  • 途中で停止した場合などで壊れたタイルデータがある場合は、再ダウンロードする機能を追加。 @pngimg.convert()
version= 0.8 (2011-05-22)
  • マルチプロセスによる並列処理に対応。
version= 0.9 (2011-05-29)
  • GPXファイルを読み込んで、ルート近辺のみの地図タイルを含むjnxファイルを作成する機能を追加。 gpxfile = "example.gpx"
  • 無効な地図領域"No Map"を無視するプロセスを改善。同じ位置の上位スケールのタイルが"No Map"かを確認することで判定。
version= 1.0 (2011-06-05)
  • Python3に対応。
  • キャッシュを無視して強制的にjpg変換する設定を追加。 flagForceConvert = True
version= 1.1 (2011-06-12)
  • Python3で出力が間違っていたのを修正。
version= 1.2 (2011-06-18)
  • 画像を調整(Contrast, Sharpness, Brightness)する機能を追加。
version= 1.3 (2011-06-19)
  • GPXファイルの開始点と終了点をつないだポリライン領域内の地図を作成する機能を追加。 polylinearea = True
    (簡易実装なので不要な領域が含まれることがあります。)version 1.4で修正済み。
version= 1.4 (2011-06-26)
  • GPXファイルからルートを正確に取得するように改善。
  • GPXファイルからポリライン領域内を正確に取得するように改善。
  • ガンマ補正のコードを追加。
version= 1.5 (2011-07-03)
version= 1.6 (2011-08-28)
  • 処理中データの保存場所をメモリーからデータベースに変更。
  • システムのデフォルトプロキシ設定を使用するように変更。
  • 修正: "NameError: global name 'pngpath' is not defined"
【動作に必要な環境】
【使い方】
  1. config.txt に範囲を設定します。ルート周辺のみを範囲指定する場合はGPXファイル名を gpxfile = "~" に入力します。緯度経度で範囲指定する場合は、latlon1、latlon2に入力します。 その他の設定項目は config.txt のコメントを参照してください。
    normal地図/bold地図/world地図
  2. ymapjnx.py を実行すると、jnxファイルが同じフォルダに作製されます。
  3. X:\Garmin\BirdsEye にjnxファイルをコピーしてください。
  4. ファイルサイズが大きい場合、起動時の読み込みに時間がかかりますが、しばらくすると起動完了します。
【その他】
  • 地図の切り替えレベルを調整する場合は、下記部分を変更してください。
    switchlevel = {~}
  • GPXルートの取得範囲領域を調整する場合は、下記部分を変更してください。
    aroundroute = {~}
  • jpgの画質とファイルサイズを調整する場合は、下記qualityの値を変更してください。
    pngimg.save(output, "JPEG", quality=60)
    また、強制的にpngからjpgに変換するために、flagForceConvert = True に変更してください。
  • 画像のコントラスト、シャープネス、ブライトネス、ガンマ補正を調整する場合は、下記部分のコメント(#)を削除して値を変更してください。
    pngimg = ImageEnhance.Contrast(pngimg).enhance(1.6)
    pngimg = ImageEnhance.Sharpness(pngimg).enhance(1.3)
    pngimg = ImageEnhance.Brightness(pngimg).enhance(1.1)
    gamma = 0.4
    pngimg = pngimg.point(lambda i: pow(i/255.0, 1.0/gamma) * 255.0)
    また、強制的にpngからjpgに変換するために、flagForceConvert = True に変更してください。
  • http://www.lfd.uci.edu/~gohlke/pythonlibs/#pilからダウンロードしたPython3用のPILでエラー(ValueError: Attempted relative import in non-package)が発生する場合は下記部分を修正してみてください。
    from . import ~

    import ~
  • QLandkarteGTを使うと、パソコン上でJNXファイルを表示/確認できます。
  • http://whiter.brinkster.net/en/JNX.shtml のJNXファイル解析情報を参考にしました。
  • GPXファイルは、ルートラボ - LatLongLabGMapToGPX などで作成できます。
  • 緯度経度は Google MapsGoogle Earthnormal地図/bold地図/world地図(家アイコンをクリック) などを使って調べてください。
  • free software. released under the GPL.
【BirdsEyeの制限】
  • スケールレベルは、5段階以下です。※
  • 1レベルあたりのタイル数は、50000個以下です。※
  • デバイスが読み込めるjnxファイルの数は、250個以下です。

  • ※複数のjnxファイル or microSDを使えばこれらの制限以上の数を持つことができます。
【パッチのあて方】

※注意: ファームウェアの更新に失敗すると起動できなくなる恐れがあります。自己責任でお願いします。

※パッチをあてるファーム以上のバージョンが既にデバイスに入っている場合は、GCD形式ではファームウェアを更新できません。RGN形式でファームウェアを更新してください。


● GCD形式 (Edge800)
  1. ファームウェアをダウンロード
    http://www.garmin.com/software/Edge800_220.gcd
  2. ファームウェアパッチプログラムをダウンロード
    http://whiter.brinkster.net/en/JNX.shtml
    link http://www.sendspace.com/file/nviq0q (latest version is 2.7, released on 2011/08/20)
  3. FirmwarePatcher.exe を実行して、 Edge800_220.gcd をドラッグアンドドロップすると、同じフォルダに Edge800_220_Patched.gcd ができます。
  4. Edge800_220_Patched.gcd を GUPDATE.GCD にリネームして X:\Garmin にコピーします。
  5. Edge800 を起動すると、Validating Update の表示の後、プログレスバーが表示されます。
    正常に終了すると、初期設定画面が表示されます。
  6. バージョンを確認します。ver.bmp

● RGN形式 (Edge800)
  • Updater.exe は 適当なUpdateファイル から取り出してください。
  • "Edge800_210.gcd" の部分は最新ファームに読み替えてください。
  • 以下 "【GARMIN】自転車でGPS 38周目【US/UK/TWN】" から引用。
    519 sage [] 2011/03/21(月) 16:36:48.33 ID:yz+rzZBP Be:
    1.パッチ済みrgnファイルの作成
    RGN toolを以下からダウンロードし、Edge800_210.gcd を開く。
    http://turboccc.wikispaces.com/RGN_Tool (最近のバージョンはGUI)
    fw_all.binだけ切り出して、FirmwarePatcherを適用。
    再度、RGN toolでEdge800_210.gcdを開き、fw_all.binのところで
    Loadを選び、上記のパッチ済みfw_all.binにすり替え、rgn形式で保存。

    2.パッチ済みrgnでファーム更新
    Edge800のLAP/RESETを押しながらUSBケーブルを介してPC(windows)に接続。
    すかさず、updater.exeに先ほどのrgnファイルをドラッグアンドドロップを
    する形で起動。USB欄にEdge800が出てくるので、そのままアップデート。
    2回目の書き込みが終わると何も進まなくなるので、ケーブルを引っこ抜いて
    電源長押しでEdge800再起動。これでファーム更新終了。

    3.JNXファイルの読み込み
    Garmin/BirdsEyeというディレクトリの下にjnxファイルを置く。
    修正ファームでないと、起動時にinvalid jnx fileと怒られる。


    とりあえず、5段階のズームが埋め込まれた拾いもののサンプルで表示できるのを確認。
    http://biciliata.appspot.com/yhkmz.htm 等で作成できる
    カスタムマップとの違いは、ズームレベルが5段階まで設定でき、その上、
    表示範囲が全然違うので、日本語地図をこちらの路線で補うのもありかも。
    mobile atlas creatorが地図作成時に触るソフトになりそう。

    あと、rgn形式の強制ファーム適用ができることも確認できたので、
    日本語フォントの問題もなんとかなる? バイナリの編集はよくわからん。
【screen shot】
【screen shot (ymapjnx)】

【screen shot (gsijnx)】
【関連ソフト】
ルート計算可能なマップ"GMAPSUPP.IMG"を作成するツール
gpxrtbl