eTrex用にトラックのポイントを減らす

 GPSのファイルをコンバートするにはgpsbabelを使うのが定番。形式がバラバラだった(今はだいぶまし)gps関係の相互変換を可能にしようというコマンドラインアプリで、ファイル形式の多さを工事現場で複数の言語が飛び交っていたというバベルの塔の故事になぞらえてこのネーミングとなっている。
www.gpsbabel.org

 変換アプリだけど、減数やwaypointのみ削除などもできるし、入力ファイルと出力ファイルが同じ形式でも構わない。
 eTrexのトラックには表示できるポイント数に限りがあって、今使っているeTrex 30cxは10,000だったかに増えているものの、500というモデルも使っていたことがある。RIdeWithGPSの有料オプションで「500に間引く」という機能があるのもこの名残り。
 これまで間引きが必要なときにはGUI皮のgpebabelfeを使って、在りし日のルートラボや今のRideWithGPSで作ったgpxトラックファイルのポイント数を減らしていたけど、このたびスクリプト化。

<?php
$num = 2000;
array_shift($argv);
foreach($argv as $filename){
	if(preg_match('/\.gpx$/i', $filename) ==1) {
		$lines = rtrim(`grep '<trkpt' $filename | wc -l`);
		var_dump($lines);
		if($line >= $num) {
			$newfilename = preg_replace('/(\.gpx)$/i', "_${num}$1", $filename);
			system("gpsbabel -w -r -i gpx -f $filename -x duplicate,location -x simplify,count=${num} -o gpx -F $newfilename");
		}
	}else {
		system("zenity --width=600 --info --text='${filename}は\.gpxファイルではありません。' 2>/dev/null");
	}
}
?>

 制限いっぱいに使うのもあれだし、ブルペのような超ロングを走るわけでもないので、ポイント数2000で決め打ち。ファイル名も後ろに_2000をつけるよう決め打ち。エラーチェックもテキトー。ファイラnemoの右クリックメニューに登録。
 gpsbabelはwindowsやMacOS版もあるので、zenityのところを変えれば動くんちゃうかな。
 もちろんそれぞれGUI皮もあるのでそっちを使って細かい設定をするのも可能。kmlファイルも変換可能。