|
"Google map"など地図情報を扱っていると必ず要望として挙がるのが「○○〜□□の間にある情報を検索」や「△△地点から半径1Km以内にある情報を検索」といった座標を用いる機能だ。 "Google map"の関数自体には座標を取り扱うものがあるようだが、データベースとCGIを利用しているWebアプリケーションの場合は自作しなければならない。 PostgreSQLの場合、SQLで操作できることは以前の記事で紹介したのだが全てのクライアントがPostgreSQLで動作できる環境とは限らない。 そこで、同じことを試みた人がいないか調べたがなかなか見つからない。 しかし、緯度経度の数値がわかればある程度の距離数が割り出せることがわかった。 1.0Km ≒ 0.009 〜 0.01 若干の誤差が出るものの、おおよその算出ができそうだ。 右辺の数値は2点間の座標の距離を表す。 距離を求めるには"三角関数"しかない。 ![]() "三角関数"は3D絵画では当たり前のように使われているが、まさかここにきてまた使うことになるとは思いもよらない。 学校で訳もわからず公式の勉強をしていたが、その式がどこで利用されるかも教えてくれれば意欲を出す生徒も増えるのではないだろうか。 さて、次に早速、2点間の座標を用意する。 ![]() 大阪駅:(34.70185946446266, 135.49503922462463) なんば駅:(34.66356103107111, 135.5018788576126) この2つの座標を上記の式に当てはめて"L"を出す。 PHPの場合は以下の式になる。 $l = sqrt(pow(abs($m - $x),2) + pow(abs($n - $y),2)); Excelの場合は以下の式になる。 =(((SUM(A1)-B1)^2)+((SUM(A2)-B2)^2))^(1/2) これで算出した結果は"0.038904"。 すなわち、0.038904 ≒ 3.8Km となる。 実際に地図上で直線距離を測ってみると合っているようだ。 始めは地図座標はどこか扱いづらいイメージがあったが、数値として見れば扱いやすいことがわかる。 |
| << 前記事(2008/05/08) | トップへ | 後記事(2008/05/12)>> |
| タイトル (本文) | ブログ名/日時 |
|---|
| 内 容 | ニックネーム/日時 |
|---|---|
俺の脳内では三角関数ってsin・cos・tanのことなんだが・・・ |
葉子 2008/05/11 01:15 |
三角関数といいながら"関数"使ってないなw |
LUNARAVE 2008/05/12 08:01 |
| << 前記事(2008/05/08) | トップへ | 後記事(2008/05/12)>> |