2004年 3月 20日(土)春分の日

自分の居た所履歴

前々から思っていたのだが、山やウォーキングをしているときに、自分の居る場所のプロットを取りたいと思っていた。こんなハンディGPSのとかが欲しかったのだが、高い。
せっかくGPS携帯を買ったのだから、ハンディGPSもどきにしてみた。

インターフェイスとかはまったく拘らずに、
特定のURLにアクセスすれば自分の位置を確認出来ることを目標とした。

auのGPS機の位置測位の方法はauの技術情報に「簡易位置情報」が有るが、これはあくまでも簡易である。実際に

device:location?url=http://server/location.cgi

というURLをアクセスするようなページを作る。

<html> <a href="device:location?url=http://server/foo.cgi">check</a> </html>
こんなのでよい。 このhtmlを保存して、携帯でアクセスすると
http://server/location.cgi?datum=AAA&unit=BBB&lat=XXX&lon=YYY
というURLに変換され、サーバに送信する。 だが、この位置情報がかなりいい加減。基地局の位置を出している。 あくまでも「簡易」なのだから。 こっちのURLを使うと携帯のGPSが測位をして、その結果をURLにしてサーバに送ってくる
device:gpsone?url=http://server/location.cgi&ver=1&datum=1&unit=0&acry=0&number=0

さっきのhtmlを次のようにする
<html>
<a href="device:gpsone?url=http://server/print.php&ver=1&datnum=0&unit=0&acry=0&number=0">check</a>
</html>

このURLにアクセスした時のログは次の様になる

wacc2s4.ezweb.ne.jp - - [19/Mar/2004:12:21:31 +0900] "GET /print.php?ver=1&datum=0&unit=0&lat=%2B35.40.34.26& lon=%2B139.47.20.40&alt=69&time=20040319122149&smaj=18&smin=10&vert=26&majaa=12&fm=0 HTTP/1.1" 200 155 "-" "K DDI-TS26 UP.Browser/6.2.0.5 (GUI) MMP/2.0" mod_gzip: DECLINED:NO_ACCEPT_ENCODING In:0 Out:0:0pct.

それぞれの変数の意味は、後で書きます。
とりあえず、timeはそのGPS測位時間。latが緯度,lonが経度。altが高度(単位調査中)
※注意!!!この緯度経度はdatumの値に関わらずWGS-84(世界測地系)であること。日本の地図サイトへのURLに変換する場合は日本測地系に変換する必要がある。


print.phpとしてこんなファイルを作ってみた


<html>
<body>
<?
if (isset($_REQUEST['datum'])) {
$datum=$_REQUEST['datum'];
}
if (isset($_REQUEST['unit'])) {
$unit=$_REQUEST['unit'];
}
if (isset($_REQUEST['lat'])) {
$lat=$_REQUEST['lat'];
}
if (isset($_REQUEST['lon'])) {
$lon=$_REQUEST['lon'];
}
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$agent=$_SERVER['HTTP_USER_AGENT'];
}
if (isset($_REQUEST['time'])) {
$time=$_REQUEST['time'];
}
if (isset($_REQUEST['fm'])) {
$fm=$_REQUEST['fm'];
}
if (isset($_REQUEST['smin'])) {
$smin=$_REQUEST['smin'];
}
if (isset($_REQUEST['smaj'])) {
$smaj=$_REQUEST['smaj'];
}
if (isset($_REQUEST['majaa'])) {
$majaa=$_REQUEST['majaa'];
}
if (isset($_REQUEST['alt'])) {
$alt=$_REQUEST['alt'];
}
if (isset($_REQUEST['vert'])) {
$vert=$_REQUEST['vert'];
}
$now_date = date ("y/m/d H:i:s") ;
$log = fopen("location","a") ;
$output = date("U") . "," .
$agent . "," .
$time . "," .
$fm . "," .
$datum . "," .
$unit . "," .
$lat . "," .
$lon . ",".
$smin . ",".
$smaj . ",".
$majaa . ",".
$alt . ",".
$vert . "\n";
if (flock($log , LOCK_EX)) {
fwrite ($log,$output) ;
flock($log,LOCK_UN) ;
}
fclose ($log) ;

print "now: $now_date <br> ";
print "gpstime: $time <br> ";
print "N: $lat <br> ";
print "E: $lon <br> ";
print "ALT: $alt <br> ";
?>
</body>
</html>

USER_AGENTと、後は携帯から送られてきたデータをすべてファイルにcsvで落とし込む。

1079663066,KDDI-TS26 UP.Browser/6.2.0.5 (GUI) MMP/2.0,20040319112452,2,0,0,+35.40.25.24,+139.47.19.42,131,197,162,49,95
1079666330,KDDI-TS26 UP.Browser/6.2.0.5 (GUI) MMP/2.0,20040319121910,0,0,0,+35.40.33.90,+139.47.19.61,16,23,174,15,29
1079666491,KDDI-TS26 UP.Browser/6.2.0.5 (GUI) MMP/2.0,20040319122149,0,0,0,+35.40.34.26,+139.47.20.40,10,18,12,69,26

このようなファイル(location)が出来る。
あとは、このデータをどう加工するかは使う人次第。
簡単に、マピオンと国土地理院の25000分の1地形図にリンクする表示スクリプトを書いてみた。

<ol> <? $log = fopen("location","r");

while (!feof($log)) {
$info = fgets($log) ; ;
chop($info) ;
# print $info ;
if ($info) {
list ($t, $agent, $time, $fm, $datnum, $unit, $lat, $lon, $smin, $smaj, $majaa, $alt, $vert) = split(",",$info) ;
list ($nd,$nm,$ns,$nss) = split("\.",$lat,4) ;
list ($ed,$em,$es,$ess) = split("\.",$lon) ;
print "<li>". date("r",$t). " " . $lat . " " . $lon ." alt = ".$alt. "</li><br>\n" ;
$url_gsi = sprintf("http://mapbrowse.gsi.go.jp/cgi-bin/nph-mm.cgi?b=%02d%02d%02d.%d&l=%03d%02d%02d.%d",$nd,$nm,$ns,$nss,$ed,$em,$es,$ess) ;
$url_mapion = sprintf("http://www.mapion.co.jp/c/f?el=%d/%d/%d.%d&scl=10000&size=954,768&uc=1&grp=MapionBB&nl=%d/%d/%d.%d",$ed,$em,$es,$ess,$nd,$nm
,$ns,$nss) ;
printf("GSI <a href=\"%s\"> %s </a><br>",$url_gsi,$url_gsi ) ;
printf("MAPFAN.com<a href=\"%s\"> %s </a><br>",$url_mapfan,$url_mapfan ) ;
printf("MAPION <a href=\"%s\"> %s </a><br>",$url_mapion,$url_mapion ) ;
}
$info = NULL ;
}

?>
</ol>

これで、超カンタンな位置情報履歴閲覧システムが完成!


Posted by thomas at 2004年03月20日 01:08 | トラックバック / アフィリエイトはエーハチネット

« ヤフオク | Main | 発送がめんどくさい・・ »

トラックバック

このエントリーのトラックバックURL:
http://test.uwan.net/mt-tb.cgi/97

このリストは、次のエントリーを参照しています: 自分の居た所履歴:

» GPS from PukiWiki/TrackBack 0.1
GPSメモ ↑ 使えるサイト 国土地理院測地部 世界測地系と日本測地系2000 http://test.uwan.net/archives/000107.html [続きを読む]

トラックバック時刻: 2004年11月29日 20:53

コメント

That's test

投稿者 thomas : 2004年07月16日 11:30