Garmin GPSの地図を自作するために試したツール"Osm2Garmin"についての覚書です。等高線については荒いものしか作成出来ませんが、GUI操作で取っつき易いツールです。
環境
以下の環境で地図データの作成を行いました。地図データ作成には大容量のファイルがダウンロード/生成されますのでHDDの空き容量に注意してください(色々と試していると100GByte近くまでいったりしました)。
- Windows10(64bit)
- Oracle Java 1.8.0_131(64bit版)
- Osm2Garmin(OpenStreetMap Garmin Maps Generator) 1.2.271
Osm2GarminはWindows/Mac/Linux版があります。この記事ではWindows版を使用します。他の環境では適時読み替えてください。
実行環境の用意
Javaのインストール
Osm2Garminを使用するのにJavaが必要です。まだインストールしていない方は以下のサイトからダウンロードしてインストールしてください。Javaは64bit版を推奨します。32bit版でも起動しますが警告メッセージが表示されます(もしかすると作業途中でエラーが発生するかもしれません)。
Osm2Garminをインストール
次に以下のサイトからOsm2Garminをダウンロードします。ダウンロードページのリンクが少し見づらいですが、ここではWindows版をダウンロードします(ほかにMac/Linux版があります)。ダウンロードしたファイルを実行するとインストーラーが立ち上がるので指示に従えば問題ありません。
- Osm2Garmin
http://osm2garmin.mantlik.org/
設定
osm2garmin.confの修正
インストールが完了したら、一度Osm2Garminを立ち上げてください。おそらく以下のように画面上に"Only xxxx mb of memory available"と赤文字の警告が表示されていると思います。Javaのメモリ割り当てが不足しているということですので、まずはこれを修正します。
メモ帳等のテキストエディタで以下の設定ファイルを編集します。
- <Osm2Garminのインストール先>\etc\osm2garmin.conf
修正するパラメータ
修正するのは"default_options"と"jdkhome"のパラメータです。
(1):default_options
- 修正前:default_options="--branding osm2garmin -J-Xms256m -J-Xmx1380m"
- 修正後:default_options="--branding osm2garmin -J-Xms256m -J-Xmx2000m"
(2):jdkhome
ここは環境によって異なります。jdkhomeにはJava(64bit版)のパスを指定してください。私の環境にはJavaが32/64bit両方がインストールしていたのですが、ここのパスは32bit版Javaのパスになっていました。32bit版ではメモリサイズに制約があるため64bit版Javaのパスに修正してください。
また、Javaをバージョンアップするとパスが変わるので、その都度設定を修正してください。
- 修正前(例):jdkhome="C:/Program Files (x86)/Java/jre1.8.0_131"
- 修正後(例):jdkhome="C:/Program Files/Java/jre1.8.0_131"
ここでは、osm2garmin.confの修正前/修正後は以下のようになりました。設定ファイルを修正後に起動して、赤文字の警告が消えていることを確認してください。
修正前
# ${HOME} will be replaced by user home directory according to platform default_userdir="${HOME}/${APPNAME}/dev" default_mac_userdir="${HOME}/Library/Application Support/${APPNAME}/dev" # options used by the launcher by default, can be overridden by explicit # command line switches default_options="--branding osm2garmin -J-Xms256m -J-Xmx1380m" # for development purposes you may wish to append: -J-Dnetbeans.logger.console=true -J-ea # default location of JDK/JRE, can be overridden by using --jdkhome &amp;amp;amp;amp;lt;dir&amp;amp;amp;amp;gt; switch jdkhome="C:/Program Files (x86)/Java/jre1.8.0_131" # clusters' paths separated by path.separator (semicolon on Windows, colon on Unices) #extra_clusters=
修正後
# ${HOME} will be replaced by user home directory according to platform default_userdir="${HOME}/${APPNAME}/dev" default_mac_userdir="${HOME}/Library/Application Support/${APPNAME}/dev" # options used by the launcher by default, can be overridden by explicit # command line switches #default_options="--branding osm2garmin -J-Xms256m -J-Xmx1380m" default_options="--branding osm2garmin -J-Xms256m -J-Xmx2000m" # for development purposes you may wish to append: -J-Dnetbeans.logger.console=true -J-ea # default location of JDK/JRE, can be overridden by using --jdkhome &amp;amp;amp;amp;lt;dir&amp;amp;amp;amp;gt; switch #jdkhome="C:/Program Files (x86)/Java/jre1.8.0_131" jdkhome="C:/Program Files/Java/jre1.8.0_131" # clusters' paths separated by path.separator (semicolon on Windows, colon on Unices) #extra_clusters=
作業フォルダの指定
まずOsm2Garminの作業フォルダをどこにするか指定します。手順は以下の通りです。
- メニューバー > ツール > オプションを選択する
- "Osm2garmin" > "Processing parameters"タブを開く
- "Working/Maps/SRTM"の各作業フォルダを指定する(適当なフォルダを作成する)
- フォルダの作成/設定が完了したら"適用"ボタンを押す
指定したフォルダには大量のファイルがダウンロード/生成されるので、空き容量に余裕のあるHDDにフォルダを作成して指定してください。私の場合はDドライブがHDDなのでそこに適当なフォルダを作成しました。
- Working directory : D:\osm2garmin_temp\work
- Maps directory : D:\osm2garmin_temp\maps
- SRTM data directory : D:\osm2garmin_temp\srtm
Osm2Garminの設定内容は上記フォルダに保存されるので、パスを変更すると設定をやり直す必要があります。
SRTM3 download URLの変更
次に"Download sources"タブを選択して"SRTM3 download URL"を変更します。これは高度情報のダウンロード先が変更されていてそのまま実行すると等高線が生成されない為です。
- 修正前:http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/
- 修正後:https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/
ところで、SRTM3にはVersion2.1とVersion3.0が存在しています。Version2.1では所々に高度情報が存在しない空白があり、Version3.0ではその部分が補完されています。残念ながらこのツールで自動ダウンロードできる高度情報はVersion2.1のため、所々に不自然な等高線が生成されてしまいます。
どうしても気になるのであれば、かなり手間ですがVersion3.0のデータを手動でダウンロードしてきてVersion2.1のデータと置き換えることも出来ます。以下のURLから入手可能です。なお、ダウンロードにはあらかじめユーザ登録が必要になります。
- NASA Earthdata - SRTM3 Version3.0
https://e4ftl01.cr.usgs.gov/SRTM/SRTMGL3.003/2000.02.11/
regionの設定
"region"タブを選択して、地図データを作成する範囲を経緯度で設定します。ざっくりした地域は最初から項目にあるのですが、ここでは日本の地図を作りたいので新しく設定します。
- "Add"ボタンを押す
- 新しく追加された行に経緯度を入力する(試行錯誤する場合は、テスト用に狭いエリアを選択しておくと処理時間が短くなります)。
- Name:japan
- Lat1:20.425278
- Lon1:122.93361
- Lat2:45.55722
- Lon2:153.98639
- 追加した行のチェックボックスにチェックをいれる
- "適用"ボタンを押す
日本の端となる経度緯度は国土地理院のサイトを参照しました。
- 国土地理院 - 日本の東西南北端点の経度緯度
http://www.gsi.go.jp/KOKUJYOHO/center.htm
osm2img.argsの修正
作業ファルダで設定した"Working directory"に地図生成ツールのオプション設定ファイル"osm2img.args"があります。これをメモ帳等のエディタで編集します。見当たらない場合は、一度Osm2Garminトップ画面で"start"ボタンを押して処理を開始してみてください。恐らくファイルが生成されると思いますので"stop"で処理停止します。
- <Working directory>\osm2img.args
以下の行を追加してください。code-page:932は文字コードをShift-JISに設定するという意味です(65001とすればUTF-8になるはずですが、組み込まれている地図生成ツールが古いため対応していないかもしれません)。
- code-page:932
- name-tag-list:name_ja,name:ja_rm,name_en
設定ファイルは以下のようになります。
# This is mkgmap arguments file used for converting OSM maps to Garmin format. # Osm2garmin uses the file as follows: # java -jar mkgmap.jar --output-dir=&lt;output_dir&gt; --series-name=&lt;region&gt; -c osm2img.args \ # -c &lt;template.args generated by the splitter&gt; code-page:932 name-tag-list:name_ja,name:ja_rm,name_en draw-priority: 20 remove-short-arcs route net add-pois-to-areas copyright-message: (C) OpenStreetMap Contributors http://www.openstreetmap.org/copyright # Uncomment the next line to generate all cycling options. #make-all-cycleways
地図を生成する
Osm2Garminトップ画面の"start"を押せば、必要なデータのダウンロードから諸々の処理まで全て自動的に行われます。完了まで数時間はかかるので寝る前に処理開始するといいかもしれません。地図データは以下のフォルダに格納されます。
- <Maps directory>/region名
出来上がった地図データの確認
設定の"Maps directory"で指定したフォルダを覗くと地図データが出来上がっているはずです。使い方としては、
- "gmapsupp.img"をGPSの内蔵メモリもしくはSDカードに転送する
- Garmin BaseCampに地図を登録して、そこから転送する
のいずれかです。簡単なのは"gmapsupp.img"をそのまま転送する方法でしょう。念のため、元々ある"gmapsupp.img"はどこかにバックアップしておくと良いかと思います(そのまま上書きするとプリインストールされている地図が消えてしまう)。
BaseCampに地図を登録する場合は、フォルダの中にある"install.bat"を管理者権限で実行してください。その後にBaseCampを起動すると作成した地図(region名)が登録されていると思います。登録を削除する場合は"uninstall.bat"を同じく管理者権限で実行してください。
なお、登録後に地図が格納されているフォルダを移動したり名前変更をしないでください。BaseCampが地図を読み込めなくなります。
所感
この記事で取り上げた"Osm2Garmin"はGPS用地図データを作成するための各処理をボタンひとつで行えるようにしたツールです。色々なツールをダウンロードしたりコンソールにコマンドを打ち込んだりしなくてもよいので、コマンドプロンプトとかよく分からんけど自分で地図を作ってみたい、という方におすすめ出来るかと思います。
惜しむらくは、しばらく更新されていないためかツール内部に組み込まれている地図作成用ツールが古かったり、最新の高度情報を取り込めないことです。特に高度情報は等高線の生成に使われるので、等高線を重視する人は別なツールを使うことをお勧めします(加えて、SRTM3は90mメッシュと解像度が荒いため等高線がカクカクになります)。
参考
本記事は以下の内容を参考に記載させていただきました。
- OpenStreetMap for GARMIN
https://osm-for-garmin.org/ - OpenStreetMap Wiki - JA:OSM Map On Garmin
http://wiki.openstreetmap.org/wiki/JA:OSM_Map_On_Garmin - OpenStreetMap Wiki - JA:Mkgmap
http://wiki.openstreetmap.org/wiki/JA:Mkgmap - OpenStreetMap Wiki - Mkgmap/help/TYP files
http://wiki.openstreetmap.org/wiki/Mkgmap/help/TYP_files - Osm2Garmin
http://osm2garmin.mantlik.org/ - phyghtmap
http://katze.tfiu.de/projects/phyghtmap/ - 国土地理院 - 日本の東西南北端点の経度緯度について
http://www.gsi.go.jp/KOKUJYOHO/center.htm - hibomaの日記 - Garmin Edge 520J の地図を作る - OpenStreetMap 地図データを mkgmap でイメージ化
http://hiboma.hatenadiary.jp/entry/2016/09/20/113702 - Hatena::Diary - 屑籠というかゴミ箱 - [メモ] OSMを利用してGARMIN地図を作成する方法
http://d.hatena.ne.jp/teandt/20120319 - toshisa's public notebook - planet.osm の日本部分だけを効率よく更新する方法https://www.netfort.gr.jp/~tosihisa/notebook/doku.php/planet_osm_japan_update
- カシミール3D - スペースシャトル地形データ Shuttle Radar Topography Mission (SRTM)
http://www.kashmir3d.com/srtm/ - シルクロード雑学大学(歴史探検隊)のAnnexサイト - SRTM(Shuttle Radar Topography Mission)の高度データのdownload/install
http://kyrgyz2009.sakura.ne.jp/ngps_08_srtm/ngps_08_srtm.html - 小道具展示室 - Garmin GPS英語版用 日本地図データ
http://tmz.skr.jp/data/gmap.html - 上野家のホームページ - PC/地図/Locus map用ベクター地図
http://yueno.net/xoops/modules/xpwiki/?PC%2F%E5%9C%B0%E5%9B%B3%2FLocus%20map%E7%94%A8%E3%83%99%E3%82%AF%E3%82%BF%E3%83%BC%E5%9C%B0%E5%9B%B3 - いかそのだらだら綴書き。 - OpenStreetMap地図をGarminGPSで使えるimgファイルに変換しよう♪
http://ikasono.blog.fc2.com/blog-entry-108.html?sp
OpenFietsMap - Customize the maphttp://www.openfietsmap.nl/tips-tricks/customize