[プログラム全般-数学?] 緯度・経度の1度あたりの距離の求め方
計算のサンプルとしてPHPで計算を行ってみます。 また、今回は「1メートルは何度?」といったところまでやってみましょう。 1メートルの値まで分かったらばプログラムサイドで「指定座標のnメートル先の緯度・経度は?」なんて計算ができますね。 (単純にこの計算を使用した場合は簡易計算レベルとなってしまうので、1kmを越えてくると多少の誤差は発生してくるかと思いますが…)
緯度の計算
緯度は経度に比べて簡単です。 北極と南極から求める事になるので、単純の地球の半径が使えます。 地球の半径は6378150m、これをrとします。 円周の長さは2πrで求められます。 それを踏まえた上で下記を参照下さい。
<?php echo "■緯度の計算<br />\n"; $cf = 2*pi()*6378150; // 円周 echo "円周:{$cf}(m)<br />\n"; //円周:40075035.5351(m) $time = $cf/360; // 1度 echo "1度:{$time}(m)<br />\n"; //1度:111319.543153(m) $sec = $cf/(360*60*60); // 1秒 echo "1秒:{$sec}(m)<br />\n"; //1秒:30.9220953203(m) echo "1秒を度で示すと " . (1/60/60) . "度<br />\n"; //1秒を度で示すと 0.000277777777778度 echo "1メートルを度で示すと " . sprintf("%.15f", (1/60/60) / $sec) . "度<br />\n";//1メートルを度で示すと 0.000008983148616度 ?>
動作結果
経度の計算
基本的には緯度と同じ。 ただし、緯度を考慮した計算を行わなくてはいけないため、その点のみ厄介だ。 また、緯度毎に経度の1メートルは変わってくる点のみご注意頂きたい。
<?php echo "■経度の計算<br />\n"; $lat = 35; $cf = cos($lat/180*pi())*2*pi()*6378150; // 円周 echo "円周:{$cf}(m)<br />\n"; //円周:32827598.7524(m) $time = $cf/360; // 1度 echo "1度:{$time}(m)<br />\n"; //1度:91187.7743122(m) $sec = $cf/(360*60*60); // 1秒 echo "1秒:{$sec}(m)<br />\n"; //1秒:25.329937309(m) echo "1秒を度で示すと " . (1/60/60) . "度<br />\n"; //1秒を度で示すと 0.000277777777778度 echo "1メートルを度で示すと " . sprintf("%.15f", (1/60/60) / $sec) . "度<br />\n"; //1メートルを度で示すと 0.000010966382364度 ?>
動作結果 サンプル式では緯度35度として計算していますが、緯度を都合の良い値に変えるとそれなりな精度の結果が得られるかと思います。
関連リンク
地球上の2地点間の距離 Casioの「生活や実務に役立つ高精度計算サイト」のサービスです。 距離計算結果の検証としてご利用頂けるかと思います。
「google map」に関する「本」の商品を自動的に表示しています。
キーワードに関連していない商品は、Amazonがオススメする商品です。気になる物があればどうぞ。
キーワードに関連していない商品は、Amazonがオススメする商品です。気になる物があればどうぞ。
作成日:2010年12月23日(Thu)