10
13
2009
GPSBabelをGPS-CS3に対応させる
GPSBabelをSONY GPS-CS3対応に改造する
先の記事『GPS-CS3のデータを活用する(その1)』でSONYのGPSロガー GPS-CS3 のデータを汎用のGPSデータ変換ツール “GPSBabel+” を使って変換する方法について紹介しましたが、今回はGPSBabelのソースコードを書き換えて、直接 GPS-CS3のデータを読み込めるようにする方法を紹介します.
GPS-CS3 のデータの先頭行には “@Sonygps/ver1.0/wgs-84/gps-cs3.0” というテキストが記述されており、この行を削除すればGPSBabelがエラーを起こさずにデータ変換できますが、先頭行を削除することにより、その副作用としておまけで付いてくるSONY純正のツールが使えなくなってしまいます.
それでは困る、或いは毎回データの先頭行をテキストエディタで書き換えるのは面倒だという方の為に、元のデータを一切変更せずに、GPSBabelそのものを改造する方法を紹介します.幸いなことにGPSBabelはオープンソースなので、オリジナルのソースコードを入手することができます.但し、ソースコードを変更してプログラムを再コンパイル仕直すという結構厄介な操作が必要ですので、その筋の人達でなければ難しいかもしれません.
【その筋の人向け】
オリジナルのソースコードをGPSBabelのホームページからダウンロードして下さい.ダウンロードしたソースコードを解凍し、適当なディレクトリに展開して下さい.
jeepsディレクトリの中に、gpsdatum.h というファイルが有りますので、そのファイルの223行目辺りにある、{ “WGS-84”, 118 }, という行の下に、次の行を追加して下さい.{ “WGS-84/gps-cs3.0”, 118 },
後は、gpsbabel-1.3.6の下で、”configure”, “make”, “make install” を行って実行プログラム “gpsbabel” を生成して下さい.何も指定しなければ、”/usr/local/bin/” 配下に実行プログラムが作成されます.
後は、新しく生成された実行プログラム “gpsbabel” をオリジナルの実行プログラムと置き換えて下さい.
修正作業は以上です.簡単ですね!!! (^_^)b
【補足】GPSBabel-1.3.6 のソースコードにはMac用のGUIラッパー “GPSBabel+” に関するコードやリソースも入っているのですが、何故か Mac用のバイナリイメージ(.dmgファイル)として配られているバージョンよりもかなり古い物になっています.
Mac用のバイナリイメージで配布されている物はPowerPC用のコードになっていますので、Intel Mac を使用している場合はIntel用にコンパイル仕直した方が良いでしょう.
【一般人向け】
ごく普通のMac ユーザにとっては、上記の説明では何が何だか分からないと思いますので、実例を示しながら、もう少し易しく説明します.
説明の中で、“ディレクトリ”という聞き慣れない用語が出てきますが、LinuxなどのUNIX系のOSではフォルダという用語ではなく、ディレクトリと呼んでいます.Mac OS X は勿論UNIXなのでディレクトリと呼ぶのが正しいのですが、これまでのMac OS の流れから一般には“フォルダ”と呼んでいます.ここでは、コマンドライン上の操作はUNIXの慣習に従ってディレクトリという用語を使い、Finder上のGUI操作の対象の場合はフォルダとしています.
困ったことにMac OS X の日本語環境では、Finder上のフォルダの名前が勝手に”書類”, “ダウンロード”などのように日本語の表記になってしまいます.これはFinder上での見かけの上だけで、Mac OS X の内部では全てオリジナルの英語の表記のまま取り扱われます.コマンドラインなどで何かフォルダ(ディレクトリ)に対して操作を行う場合、日本語の表記ではなく必ず元の英語の表記に従って指示を出す必要があります.
日本語での表示は鬱陶しいので、いつも英語表記のまま使用している関係で、画面の表示例が英語になっていますが、見た目がほんの少し違うだけですのでそのまま日本語に置き換えて下さい.
Step 1. XCode (Mac OS X の開発環境ツールセット)のインストール
先ず、最初にMacユーザが行うべき事は、今使っているMac OS X にプログラミングに必要な開発環境をインストールしなければなりません.幸いなことにMac OS X にはMac OS XのインストールDVDの中に開発環境が含まれています.ここでは、”Mac OS X 10.5(Leopard)” の例を示しますが、最新の “Mac OS X 10.6(Snow Leopard)” でも殆ど同じです.
インストールDVDをMacに挿入すると、次のようなウインドウが現れると思います.その中に”Optional Installs” というフォルダが有ります.さらにその中に”Xcode Tools” フォルダが有り、その中の ”XcodeTools.mpkg” をダブルクリックしてインストーラを起動して下さい.
Mac OS X 付属のDVDから Xcodeツールをインストールする
何回かダイアログが出てきて、同意を求められるますが、他のアプリケーションのインストール方法と大差有りませんので、指示に従ってインストールを進めて下さい.幾つか設定する箇所が有りますが、何も変更せずにそのまま “OK” を押していくだけで通常問題有りません.
Step 2. GPSBabel+ のソースコードの入手
GPSBabel のホームページからソースコードを入手して下さい.ソースコードのダウンロードリンクはLinuxの下に “GPSBabel-1.3.6.tar.gz” というボタンが有ります.ダウンロードが終了したときに使っているWEBブラウザの設定で、どのような処理(自動的にファイルを解凍する or そのままファイルに保存するなど)を行うのかは個人の環境に依存しますので、ここではSafariの標準設定でダウンロードした場合(安全なファイルの場合はダウンロード後開く)を想定しています.
GPSBabelのソースコードをダウンロードする
Safariの場合、ダウンロードしたファイルは通常個人のホームディレクトリ(フォルダ)の中にある”Downloads”に保存されます.”GPSBabel-1.3.6.tar” という解凍された1個のファイルが有るはずです.元のファイルは、”GPSBabel-1.3.6.tar.gz” というGNUの圧縮ツールで圧縮されていましたが、Safariが自動的に解凍してくれています.”Downloads”フォルダの中にある”gpsbabel-1.3.6.tar” をダブルクリックして開いてみて下さい.Mac OS X のアーカイブユーティリティーが自動的に起動され、TAR形式のファイルが展開され、”gpsbabel-1.3.6″ という名前のフォルダが作成されます.
gpsbabel-1.3.6.tarというTARファイルをダブルクリックで開く
尚、ブラウザが勝手にファイルを開いて解凍しない場合は “GPSBabel-1.3.6.tar.gz”という名前のファイルが保存されますので、自分で解凍・展開処理を行う必要があります.StuffIt等のファイル解凍・圧縮ユーティリティーを使うか、自分でコマンドラインで展開して下さい.( 例: $tar xvzf GPSBabel-1.3.6.tar.gz )
Step 3. インクルードファイル “gpsdatum.h” の修正
必要なツールとデータが揃ったので、いよいよGPSBabelのソースコードを修正します.修正の必要が有るファイルはたったの1つです.”gpsbabel-1.3.6″ フォルダの中にある、”jeeps” フォルダを開き、その中にある “gpsdatum.h” という名前のファイルを探して下さい.
jeepsフォルダの中にある gpsdatum.h ファイルを探す
”gpsdatum.h” ファイルが見つかったら、それをテキストエディタで開きます.自分が使い慣れているテキストエディタで構いませんが、専用のテキストエディタがなければ Mac OS X に標準で備わっている “TextEdit” でも構いません.
TextEdit だと行数の表示がないので分かり難いのですが、ファイルの後の方(242行目辺り)に有る、
{ “WGS-84”, 118 },
という行の下に
{ “WGS-84/gps-cs3.0”, 118 },
という1行を付け加えて下さい.行を付け加えたらそのまま上書き保存して下さい.( Plane Text 以外で保存すると、後でエラーになってしまいますので、良く分からない場合は、そのまま上書き保存するようにして下さい.)
{ “WGS-84/gps-cs3.0”, 118 }, という行を追加する
修正作業は以上で終了です.
Step 4. GPSBabel 実行プログラムの再生成
いよいよ最後の難関、GPSBabel 実行プログラムの再生成作業に移ります.ここでの作業は使い慣れないコマンドラインでの作業が必要になります.コマンドラインを使わずとも、XCodeツールだけで何とかなるのですが、Xcode自体の設定をいじくり廻さなければならなくなるので、ここはオーソドックスにコマンドラインで作業を行うことにします.
まずコマンドラインで作業を行うために、”Utilities(ユーティリティー)” フォルダにある “Terminal(ターミナル)” を起動します.
“Terminal(ターミナル)” を起動すると、カレントディレクトリは個人のホームディレクトリ(フォルダ)になっています.カレントディレクトリというのはコマンドラインで作業を行う場合の起点(対象)となるもので、コマンドラインで何か作業を行う場合には常に意識していなくてはならないものです.この辺のところは、コマンドラインやUNIX系のOSに関する知識がないと分からない概念かもしれません.初めての方は画面の指示に従ってそのまま作業を進めてみて下さい.
1. カレントディレクトリを GPSBabel があるディレクトリへ移動する.
ダウンロードして解凍・展開したGPSBabelのソースコードは “~/downloads/gpsbabel-1.3.6” にありますので、カレントディレクトリを移動させるコマンド “cd” を使って次のように入力して下さい. ~ (チルダと呼びます)という見慣れない記号は、個人のホームディレクトリの場所を示す特別な記号です.
imac:~ yasuaki$ cd ~/downloads/gpsbabel-1.3.6 (←行の最後で”Return”キーを押す)
上記の例のyasuakiという部分は個人のユーザ名が表示される部分ですので、この部分は自分のユーザ名に読み換えて下さい.
上記のコマンドが無事実行できていれば、カレントディレクトリがGPSBabel があるディレクトリに移動している筈です.きちんと移動できている事を確かめるため、次のコマンドを入力して確かめてみて下さい.imac:gpsbabel-1.3.6 yasuaki$ pwd (←行の最後で”Return”キーを押す)
/Users/yasuaki/downloads/gpsbabel-1.3.6
のようなメッセージが帰ってきたことと思います.(
2. コンパイル作業
ここからは、プログラミング経験の無い人にとっては意味不明の作業ですので、おまじないだと思って作業を進めて下さい.
imac:gpsbabel-1.3.6 yasuaki$ ./configure (←行の最後で”Return”キーを押す)
ずらずらとメッセージが表示されます.
imac:gpsbabel-1.3.6 yasuaki$ make (←行の最後で”Return”キーを押す)
同じようにずらずらとメッセージが表示されます.
最後に、生成された “gpsbabel” という名前のGPSBabelの実行プログラムファイルを、一般のコマンド(アプリケーションプログラム)として、Mac OS X にインストールします.
imac:gpsbabel-1.3.6 yasuaki$ sudo make install (←行の最後で”Return”キーを押す)
Password: という表示が出て、ユーザのパスワードを聞いてきますので、自分のパスワードを入力して下さい.この場合、ユーザのアカウントにはアドミニストレータ(管理者)権限が設定されていなければなりませんが、個人が普通にMac OS X を使用している場合、一番最初に登録したユーザアカウントであれば間違いなくアドミニストレータ(管理者)になっていますので問題有りません.
最後の作業を行うと、”/usr/local/bin/” というディレクトリの下に、 “gpsbabel” 実行プログラムがインストールされます.GPSBabelを個人で使うにはこの作業は必ず行わなければならないという訳ではありません.UNIX(Linux) 系のOSの一般的なお約束(流儀)として、個人がインストールしたプログラムを”/usr/local/bin/” というディレクトリの下に置くという慣習がありますので、今回はそのまま流儀に従っておきましょう.
imac:~ yasuaki$ cd ~/downloads/gpsbabel-1.3.6
imac:gpsbabel-1.3.6 yasuaki$ pwd /Users/yasuaki/ModifedGPSBabel/gpsbabel-1.3.6
imac:gpsbabel-1.3.6 yasuaki$ ./configure checking build system type... i686-apple-darwin9.8.0 checking host system type... i686-apple-darwin9.8.0 checking target system type... i686-apple-darwin9.8.0 checking for gcc... gcc
... 【途中省略】
config.status: creating zlib/empty config.status: creating config.h
imac:gpsbabel-1.3.6 yasuaki$ make gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ main.c -o main.o gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ globals.c -o globals.o gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ queue.c -o queue.o gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ route.c -o route.o gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ waypt.c -o waypt.o gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ filter_vecs.c -o filter_vecs.o gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ util.c -o util.o
... 【途中省略】
gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ height.c -o height.o gcc -c -I. -I. -g -O2 -Wall -Imac/libusb/ swapdata.c -o swapdata.o gcc main.o globals.o queue.o route.o waypt.o filter_vecs.o util.o vecs.o mkshort.o csv_util.o strptime.o grtcirc.o vmem.o util_crc.o xmlgeneric.o uuid.o formspec.o xmltag.o cet.o cet_util.o fatal.o rgbcolors.o inifile.o garmin_fs.o gbsleep.o units.o gbser_posix.o gbser.o gbfile.o parse.o avltree.o session.o pdbfile.o jeeps/gpsapp.o jeeps/gpscom.o jeeps/gpsmath.o jeeps/gpsmem.o jeeps/gpsprot.o
... 【途中省略】
jtr.o sbp.o mmo.o skyforce.o position.o radius.o duplicate.o arcdist.o polygon.o smplrout.o reverse_route.o sort.o stackfilter.o trackfilter.o discard.o nukedata.o interpolate.o transform.o height.o swapdata.o -lm -lexpat -framework IOKit -framework CoreFoundation -o gpsbabel
imac:gpsbabel-1.3.6 yasuaki$ sudo make install Password: install gpsbabel //usr/local/bin/
imac:gpsbabel-1.3.6 yasuaki$ cp ./gpsbabel /Applications/.
Step 5. GPSBabel+ と組み合わせる
このステップは今イチピンとこないかも知れませんが、先の記事で紹介したように、GPSBabel自体はコマンドラインベースのプログラムで、Mac OS X (或いは Windows)用に、GPSBabel+ というGUI ラッパープログラムを被せてあるに過ぎません.
つまり、GPSのデータを変換するプログラムの本体は、コマンドラインプログラムの “gpasbabel” で、Mac OS X のユーザインタフェース部分(メニューやダイアログを表示したりする部分)を受け持つプログラムが ”GPSBabel+” ということになります.言うなれば、”GPSBabel+” が仕切り屋さんで、下請けさんが “gpsbabel” ということになるでしょうか.
“GPSBabel” の Mac OS X 用のバイナリファイル(GPSBabel+-1.3.6.dmg)をダウンロードして開くと、”GPSBabel+”という名前のカラフルなアイコンのファイルと黒っぽい味気ないアイコンの “gpsbabel”という2つのファイルがあります.
GPSBabel の2つのプログラム
今回行った修正作業は、変換プログラム本体である”gpsbabel”の作り直しです.Mac OS X 用のバイナリファイルに含まれていた”gpsbabel”ファイルを新たに作り直した”gpsbabel”で置き換えて下さい.修正版の”gpsbabel”実行プログラムは “gpsbabel-1.3.6” フォルダの下に有りますので、通常の”Finder”の操作でファイルをコピー(置き換え)して下さい.勿論コマンドラインでコピーしても構いません.
修正済みの gpsbabel 実行プログラムが置かれている場所
”GPSBabel+”側のPreference設定で、”gpsbabel”ファイルの場所を個別に設定することも可能ですので、どちらか都合の良い方法で”gpsbabel”ファイルと”GPSBabel+”を結びつけて下さい.
GPSBabel+のPreferenceでgpsbabel実行プログラムの存在場所を指定する
以上で、SONYの GPS-CS3 に直接対応した GPSBabel の作成作業は完了です.
【 次期バージョンGPSBabel 1.3.7 】
自分で改造することを諦めた人にとっての朗報です.GPSBabelの次のバージョンV1.3.7 でSONY のGPS-CS3に対応するようです.現在ベータテスト中のようです.