僕ならばここにいる2002



法林 浩之

(株)インターネット総合研究所
hourin@suplex.gr.jp







(page 1)


今日お話しすること







(page 2)


僕ならばここにいる









(page 3)


なんでこんなシステムを作ったのか







(page 4)


前提条件


私が使うための条件であって、一般的な制約ではない




(page 5)


システム構成





(page 6)


最初の実装






(page 7)


最初の実装に向けて行ったこと









(page 8)


GPS(Global Positioning System)







(page 9)


GPSを使ってみよう


現在使っているのはGARMIN eTrex




(page 10)


地図Webサイトについて


著名な地図サイトは、URLで緯度経度を指定して地図を表示できる

http://www.mapion.co.jp/c/f?el=139/43/22.200&nl=35/41/03.600&
scl=10000&pnf=1&uc=1&grp=all&size=500,500
http://www.mapfan.com/index.cgi?ZM=11&MAP=E139.43.22.2N35.41.03.6
http://www.mapoo.or.jp/cgi-bin/gis.cgi?N=35.41.03.6&E=139.43.22.2
http://mapbrowse.gsi.go.jp/cgi-bin/nph-blsearch.cgi?b=354103.6&l=1394322.2




(page 11)


「位置情報」として記録する項目の具体化



(記録しないがフォームには入力する項目)



(page 12)


データベース作り







(page 13)


PostgreSQLによるテーブルの作成


foo=> create table bartbl (unixtime integer, nanboku text, ido text, touzai text, keido text, comment text);
foo=> \d
          Table "bartbl"
 Attribute |  Type   |
-----------------------------
 unixtime  | integer | 	…… UNIX時刻
 nanboku   | text    | 	…… 南北(SかN)
 ido       | text    | 	…… 緯度(xx.xx.xx.x、xは数字)
 touzai    | text    | 	…… 東西(EかW)
 keido     | text    | 	…… 経度(xxx.xx.xx.x、xは数字)
 comment   | text    | 	…… コメント(場所など)



(page 14)


PostgreSQLによるデータ入力


foo=> insert into bartbl values ('1033722220','N','35.41.23.0','E','139.41.54.0','新宿野村ビル');
foo=> select * from bartbl;
 unixtime     nanboku    ido           touzai     keido           comment
------------------------------------------------------------------------------
 1033722220 | N       | 35.41.23.0  | E      | 139.41.54.0  | 新宿野村ビル
 1034330710 | N       | 35.41.49.1  | E      | 139.46.41.7  | たん清
 1034933548 | N       | 35.41.03.6  | E      | 139.43.22.2  | jus事務局



(page 15)


PostgreSQLによるデータ検索


foo=> select * from bartbl order by unixtime desc;
 unixtime     nanboku    ido           touzai     keido           comment
------------------------------------------------------------------------------
 1034933548 | N       | 35.41.03.6  | E      | 139.43.22.2  | jus事務局
 1034330710 | N       | 35.41.49.1  | E      | 139.46.41.7  | たん清
 1033722220 | N       | 35.41.23.0  | E      | 139.41.54.0  | 新宿野村ビル



(page 16)


PHPを用いた各種処理プログラム作成






(page 17)


データベースに保存するPHPプログラム


アルゴリズムの概略(inputsamplephp.txt参照)





(page 18)


データ検索と表示を行うPHPプログラム


アルゴリズムの概略(outputsamplephp.txt参照)





(page 19)


位置情報から地図へのリンク用URLの作成


MapFanWebへのリンクの例

// 緯度を度/分/秒/小数に分解
if (ereg("([0-9]{1,2}).([0-9]{1,2}).([0-9]{1,2}).([0-9]{1})",$ido, $iregs)) {
print "$iregs[1]度$iregs[2]分$iregs[3].$iregs[4]秒";
}
// 経度を度/分/秒/小数に分解
if (ereg("([0-9]{1,3}).([0-9]{1,2}).([0-9]{1,2}).([0-9]{1})",$keido, $kregs)) {
print "$kregs[1]度$kregs[2]分$kregs[3].$kregs[4]秒";
}
// MapFanへのリンク用URLを作成(実際には1行)
$mapfanurl = "http://www.mapfan.com/index.cgi?ZM=8&MAP=" .
"$touzai$kregs[1].$kregs[2].$kregs[3].$kregs[4]
$nanboku$iregs[1].$iregs[2].$iregs[3].$iregs[4]";
// Webに表示
print("MapFan\n");



(page 20)


最初の実装できました






(page 21)


第2期工事






(page 22)


携帯電話の活用







(page 23)


携帯電話用Webページ


         サービス名  プロトコル   Web記述言語
--------------------------------------------------------------
au         EZWeb        WAP          HDML
i-mode    i-mode        独自       コンパクトHTML
J-Phoneもまた別の仕組み




(page 24)


WAP用Webページ作成時の注意点




AddType text/x-hdml; charset=Shift_JIS hdml



(page 25)


HDMLで書く入力フォーム


(hdmlsample.txt参照)




(page 26)


出力の工夫


$sql = "select * from bartbl where unixtime >= $oneweekago order by unixtime desc";
$sql = "select * from bartbl order by unixtime desc limit 50";
$sql = "select * from bartbl where comment ~* '$keyword' order by unixtime desc";
$sql = "select * from bartbl where unixtime >= $fromtime and unixtime <= $totime order by unixtime desc";



(page 27)


入力したデータの修正/削除

$sql = "delete from bartbl where unixtime='$unixtime'";



(page 28)


入力したデータの再利用








(page 29)


かなり便利になったのですが…







(page 30)


地図サイトの検索機能を使ったデータ入力(1)





(page 31)


地図サイトの検索機能を使ったデータ入力(2)







(page 32)


Googleへのリンク

$googleurl = "http://www.google.co.jp/search?ie=EUC_JP&oe=EUC_JP&q="
. urlencode($srchword);
print("Google\n");
$rplc_comment = str_replace("(","、",$comment);  ……"("を"、"に置換
$pos = strpos($rplc_comment,"、");               ……"、"の位置を検出
if ($pos != False) {
   $srchword = substr($rplc_comment,0,$pos);     ……"、"より前だけ取り出す
} else {
   $srchword = $comment;
}




(page 33)


すべての到達地点を白地図に描画

	139.68594   35.62617
	129.84711   32.75361
	……
	
	psbasemap -R125/142.5/25/37.5 -Ba5f2.5 -K > map.ps ……外枠を用意
	pscoast -Jm -R -Di -G200 -K -O >> map.ps           ……海岸線を描画
	psxy -Jm -Sc0.1 -W1 -R -O < data.txt >> map.ps     ……到達地点を描画
	



(page 34)


僕ならばここにいる予定








(page 35)


今後の課題(1)


位置情報取得に関して
http://map.navitime.jp/?datum=0&unit=0&lat=+35.41.23.00&lon=+139.41.54.00
http://www.at-navi.com/map/dispMap.jsp?datum=1&unit=0&
lat=+35.41.23.00&lon=+139.41.54.00&sc=1



(page 36)


今後の課題(2)


その他



(page 37)


まとめ







(page 38)


質問受け付けます



(page 39)