2015年12月26日土曜日

2015/12/24 Verification at the Waypoint(coordinate) GARMIN Birdeye JNX Map tool for windows(ezjnxwin)

2015/12/26 GAMIN GPS用 Birdeye JNX地図作製ツールの簡単な検証
Unfortunately this text is in Japanese only.
最新情報はコチラで → [GPS地図関連]
ツール作成直後に撮った [奥穂高岳と赤岳のスクリーンショット] をよく見てみると、赤岳は良いのだか奥穂高岳のWayPoint座標と地図が一致していない様に見える。位置が正確でないと危険なため座標による確認を行った。
カシミール3DでWayPointを作成して検証。
正確を期すためマウスで指定ではなく座標数値指定を使用。

奥穂高岳

合ってる!
どうもGPS本体から検証のために入力した値がミスってた様だ。

赤岳
合ってる!よし!!

2015年12月24日木曜日

2015/12/24 making tool for creating GARMIN Birdeye JNX Map for windows(ezjnxwin)


2015/12/24 GAMIN GPS用 Birdeye JNX地図作製ツール製作
Unfortunately this text is in Japanese only.
最新情報はコチラで → [GPS地図関連]
GARMIN GPS用のフリーの登山地図作製ツールでラスター地図からJNX形式で作成してくれる秀逸なフリーソフト(GPL)としてgsijnx と ymapjnx がある。それぞれ国土地理院とヤフー地図のweb service よりラスター画像を取得しJNX形式のBirdeyeファイルを作成する。1500stepほどのPythonというプログラミング言語で記述されている。
便利に使わせていただいていたが、国土地理院の旧v3?のサービスが停止されv4の新地図に切り替わった。v4のタイル指定は [web api の国際標準化]  で書いたがGoogle方式のディフェクトスタンダートに則っていて歓迎すべき事なのだが、v3の仕様で作成されたツールが動作しなくなる。
gsijnx はエラー吐いて動作不可。 ymapjnx は動かしてはいないが動作するだろう。
山仲間よりタイミング悪く冬山山行用に北ア・南アあたりの地図作製の依頼が有ったがgsijnxが使えない。Pythonのソースを眺めて改造を試みるも旧apiの画像仕様はピクセル数が異なる様でURLスキームを単純に変更した位では無理っぽい。仕方ないので自前でプログラムを突貫工事で作成する事にした。

要件定義は
  • gsijnx やymapjnxの様にwebソース特定ではなく、複数サービスをレイヤリングできる事
  • google XYZ 形式タイル仕様のすべての地図が使用できる事
  • 地図作成範囲が簡単に指定できる事
  • インストールなしで即microsoft windowsで動作する事
  • できればmonoでも動作する様にVB.NETで書く(C#に書き直すかも)
2日間かけて何とか最低限の機能が出来ました。
レイヤー①のスナップショット
1〜2レイヤーはヤフー地図を指定。
基本的には経度・緯度範囲指定なのだが、より簡単に指定可能な様に1次メッシュ単体や2次メッシュ範囲を指定して「計算」ボタンを押すと経度・緯度範囲を算出する仕組みを採用。
左右で同じ様な画が出てるが元画像(.png)と圧縮画像(.jpg)の比較のため。
※画像は合成したイメージです
レイヤー③のスナップショット
3〜4レイヤーは電子国土地図を指定。
JNXマップの仕様で最大5レイヤーまでレイヤリング指定可能。Google map も技術要件的には指定可能だがライセンスの問題があるらしいし、使用しなくても良いでしょう。
※画像は合成したイメージです
まだ作成中ですがOpenLayer3を使用した範囲指定に使用する予定の画面。
※画像はホンモノです
マウスのドラッグで地図の移動、フォイールで拡大縮小が簡単にできるので便利。
流行りの技術で遊んでます。
※画像はホンモノです
GARMIN DAKOTA20に転送して表示させた実際のスナップショット。
上段:穂高周辺
下段:八ヶ岳連峰
更にOpenStreetMapとレイヤリングしても正しい位置に表示されている!よしよし。









今後の課題は。。。
  • web client の非同期化による高速化
  • OpenLayer3 による位置指定、2次メッシュ図葉名による検索対応
  • 異なるweb service指定時のマルチスレッド化による並列処理
  • JPEG画像の圧縮品質指定、画像処理による見易さの改善
  • 地図定義ファイル編集のGUI化
  •  取得 .png ファイルのキャッシュデータベース化
ある程度機能アップとソース整理が出来たらフィールドテスト後に公開しようかなぁ〜。
燃え尽き感が有るのでソース公開して後はお好きにとなるかも。
因みに上記の地図作製設定XMLファイル(ezjnxconf.xml)

<div class="code">
<root>
    <connection>
        <proxy>0</proxy>
        <poolmax>8</poolmax>
    </connection>
    <webservices>
        <service id="0">
            <name>OpenStreetMap</name>
            <type tag="Google">0</type>
            <url>[a,b,c,d].tile.openstreetmap.org/{Z}/{X}/{Y}.png</url>
            <scalemin>0</scalemin>
            <scalemax>18</scalemax>
            <description></description>
        </service>
        <service id="1">
            <name>電子国土</name>
      <type tag="Google">0</type>
      <url>cyberjapandata.gsi.go.jp/xyz/std/{Z}/{X}/{Y}.png</url>
            <scalemin>0</scalemin>
            <scalemax>18</scalemax>
            <description></description>
        </service>
        <service id="2">
            <name>Yahoo!(bold)</name>
      <type tag="Yahoo!">1</type>
      <url>m.map.srv.yimg.jp/m?&amp;r=1&amp;style=base:bold&amp;x={X}&amp;y={Y}&amp;z={Z}</url>
            <scalemin>0</scalemin>
            <scalemax>15</scalemax>
            <description></description>
        </service>
    </webservices>
    <jnx>
        <map>
            <productname>Sample Subscription Product</productname>
      <mapname>Sample Map Name</mapname>
      <description></description>
        <layer scale="13" webid="2" zoom="13">
        <layer scale="16" webid="2" zoom="14">
        <layer scale="17" webid="1" zoom="15">
        <layer scale="18" webid="1" zoom="16">
      <!--
        <layer Scale="17" WebID="1"/>
-->
  </layer></layer></layer></layer></map>
    </jnx>
</root>
</div>