地図の測地系の変換や緯度・経度の変換[メモ][PHP]

9416 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2008/11/11 20:01:07 カテゴリ: PHP, 自分用メモ, プログラミング
スポンサード リンク


メモ




少し前ですが、Google Maps APIを利用して画像(jpg)からGPSのデータを取得してマッピングするサンプルを作りました。
その時の処理は(変換しなくてもそのまま使えたはずですが)60進法を10進法に変換するだけでした。



しかし、今回違う件で日本測地系→世界測地系にする必要があったのでその辺のメモ。
※Googlemapsは世界測地系、日本の地図系APIは日本測地系がほとんどらしい。

測地系とは

測地系(そくちけい)とは、地球上の位置を経度・緯度・標高の座標で表すとき、前提とする条件のことである。

詳細は「測地系:wikipedia


測地系を日本測地系→世界測地系に変換

    function tokyoToWgs84($lng,$lat){
        // 経度変換
        $position['lng'] = $lng - 0.000046038*$lat - 0.000083043*$lng + 0.010040;
        // 緯度変換
        $position['lat'] = $lat - 0.00010695*$lat + 0.000017464*$lng + 0.0046017;
        return $position;
    }

測地系を世界測地系→日本測地系へ変換

     function wgs84ToTokyo($lng,$lat){
        // 経度変換
        $position['lng'] = $lng + $lat * 0.000046047 + $lng * 0.000083049 - 0.010041;
        // 緯度変換
        $position['lat'] = $lat + $lat * 0.00010696 - $lng * 0.000017467 - 0.0046020;
        
        return $position;
     }

60進法から10進法への変換

※60進法 →「北緯35度23分28秒・東経136度43分20秒」
※10進法 →「35.3911・136.7222」

60進法→10進法

function dmsToDeg($dms){
    $dms = array_pad(explode('.',$dms),4,'0');
    $deg = $dms[0] + $dms[1]/60 + ($dms[2].'.'.$dms[3])/3600;
    return round($deg,9);
}

ちなみに10進法→60進法

function degToDms($deg){
    $dd = $deg;
    $mm = fmod($dd,1)*60;
    $ss = fmod($mm,1)*60;
    $dms = intval($dd).'.'.intval($mm).'.'.round($ss,3);
    return $dms;
}


たぶんあってるはず。間違ってたらすみません。

参考サイト

 →ツイッターのフォローはこちら
スポンサード リンク
         

関連記事

↑ページ上部へ

アクセスカウンター

今日 : 22 昨日 : 87

ブログ内容

主にウェブ関係のことを書いてます。たまにブレイクダンスとか他のことも書いています。

プロフィール

MICK

MICKです。

1983年1月24日生まれ。ウェブの世界にいるのは、偶然のようで必然なのかも。

好きなこと :
 挑戦すること。物事に没頭すること。勉強すること。
嫌いなこと :
 自慢話を聞くこと。人の悪口を言うこと。

運営サイト

      

カテゴリ一覧

サイト広告

オススメの書籍とか

感想

紹介

色々

最近のコメント

最新記事

注目記事

人気記事

最近の人気記事

人気の記事

関連サイト

運営サイト

色々

最近のトラックバック