PHPで外部プログラムを実行する・・・GPSBabelを使ってみる
昨日は久しぶりに那須岳へ登山に行ってきました。春の雪山でリフレッシュ!
さて今日もNetBeansにて「PHP逆引きレシピ」のサンプルコードを教材にPHPの勉強をしました。今日のお題は第1章1-13「外部プログラム」です。そういえば exec() 関数で外部プログラムを直接実行する練習はしていませんでした。外部プログラムとしては GPS の各種データフォーマットを相互変換してくれる GPSBabel を選びました。案外簡単に動いたのでメモしておきます。
<実施手順>
・GPSBabel のサイトからダウンロードして c:\xampp\GPSBabel にインストールする。
・ c:\xampp\GPSBabel\temp フォルダを作る。
・ここから GPS データのサンプルを入手し、temp フォルダに入れる。
・NetBeans にて 225_2_1.php というファイルを作り、内容を下記とする。
<?php //このコマンドはWindowsの実行環境でしか動作しません // header("Content-Type: text/plain; charset=UTF-8"); $exec = 'c:\xampp\gpsbabel\gpsbabel.exe'; $infile = 'c:\xampp\gpsbabel\temp\track-176884.gpx'; $outfile= 'c:\xampp\gpsbabel\temp\track-176884.gpx.kml'; $command = "$exec -i gpx -f $infile -o kml -F $outfile"; $safe_command = escapeshellcmd($command); $last_line = exec($safe_command, $lines, $status); echo "実行するコマンド => ".$safe_command."<br />\n"; echo "コマンド出力の最終行 => ".mb_convert_encoding($last_line, "UTF-8", "SJIS")."<br />\n"; echo "コマンド実行結果のステータス => {$status}<br />\n"; echo "コマンド出力結果\n"; foreach($lines as $line) { rtrim($line); echo mb_convert_encoding($line, "UTF-8", "SJIS")."<br />\n"; } ?>
これを実行すると、GPX 形式の GPS データが KML 形式に変換されて temp フォルダに出力されます。PC にGoogle Earth が入っていれば、これをダブルクリックすると水戸の偕楽園付近のお散歩ルートが表示されるはずです・・・(^^;;;