※この記事は読者によって投稿されたユーザー投稿です:
  • 編集部の見解や意向と異なる内容の場合があります
  • 編集部は内容について正確性を保証できません
  • 画像が表示されない場合、編集部では対応できません
  • 内容の追加・修正も編集部では対応できません

今回はすっかりメジャーになったWEBデータの切り口、緯度経度をまとめてみました。
文書(文字列)としてのWEBを押さえた後は、位置情報とGoogleさんはさすがです。
あとは時間と人の軸かな。。

最近はGoogleMapsの影響か、緯度経度をデータとして扱う機会が増えてきています。
RCMSでも緯度経度はデータの切り口として、重要視しています。
(他には、時間(日付)・人などがあります)

RCMS
http://www.r-cms.jp/

日本であればここにたくさんデータがあるので、この辺を活用して、
国土数値情報ダウンロードサービス

GoogleMapsAPI
Yahoo!地図情報
などとつなぐといろいろなサービスが展開できますよね。GoogleMapsのジオコーディングを使ったり。
まあ、そうやってGoogleさんに位置情報をせっせと送信することになるのですが。。

以下は、うちで使っている緯度経度関係の関数です。
※正しい保証はありません。自己責任でご利用ください。
<?PHP
/*
 * 2地点間の距離を緯度経度データから割り出す
 * gmap_x :A地点の経度
 * gmap_y :A地点の緯度
 * gmap_x2:B地点の経度
 * gmap_y2:B地点の緯度
 * return (km)
 */
function getDistanceFromGPS($gmap_x,$gmap_y,$gmap_x2,$gmap_y2){

  $gmap_y = 3.1415926535*$gmap_y/180;
  $gmap_x = 3.1415926535*$gmap_x/180;
  $gmap_y2 = 3.1415926535*$gmap_y2/180;
  $gmap_x2 = 3.1415926535*$gmap_x2/180;

  $gmap_y = $gmap_y - ((11.55/60)*3.1415926535/180)*sin(2*$gmap_y);
  $gmap_y2 = $gmap_y2 - ((11.55/60)*3.1415926535/180)*sin(2*$gmap_y2);

  $c=cos($gmap_y)*cos($gmap_y2)*cos($gmap_x-$gmap_x2)+sin($gmap_y)*sin($gmap_y2);
  $s=sqrt(1-$c*$c);
  $t=$s/$c;

  $z=atan($t);
  $z=6369*$z;

  return $z;
}

/*
 * 緯度経度を度=>度分秒 or 度分秒=>度に変換
 * map_num :緯度経度
 * return 緯度経度
 */
function changeGPSUnit($map_num,$type = 0){

    if($type == 1){
        //度分秒=>度
      $arrMap_num = split(".",$map_num);
      return $arrMap_num[0] + $arrMap_num[1]/60 + $arrMap_num[2]/3600;

    }else{
        //度=>度分秒
        $EH = floor($map_num);
        $EM = floor(($map_num - $EH)*60);
        $ES = round(($map_num - $EH - $EM/60)*3600,1);

        return $EH.".".$EM.".".$ES;
    }
}

/*
 * 緯度経度を日本測地系=>世界測地系 or 世界測地系=>日本測地系に変換
 * ln :経度
 * la : 緯度
 * return 緯度経度
 */
function changeGPSWJ($ln,$la,$type = 0){

    if($type == 1){
        //日本測地系=>世界測地系
        $lng = $ln - $la * 0.000046038 - $ln * 0.000083043 + 0.010040;
        $lat = $la - $la * 0.00010695 + $ln * 0.000017464 + 0.0046017;
        return array("lng"=>$lng,"lat"=>$lat);

    }else{
        //世界測地系=>日本測地系
        $lng = $ln + $la * 0.000046047 + $ln * 0.000083049 - 0.010041;
        $lat = $la + $la * 0.00010696 - $ln * 0.000017467 - 0.0046020;
        return array("lng"=>$lng,"lat"=>$lat);

    }
}
?>

[元記事]http://www.diverta.co.jp/topics_detail2/&id=31

この記事が役に立ったらシェア!
メルマガの登録はこちら Web担当者に役立つ情報をサクッとゲット!

人気記事トップ10(過去7日間)

今日の用語

UX
ユーザーの体験や経験を表す言葉。ある製品サービスを利用する前の期待値、実際に利用 ...→用語集へ

連載/特集コーナーから探す

インフォメーション

RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]