dポイントプレゼントキャンペーン実施中!

PHPで2地点間の緯度経度の求め方について教えてください。

地点A(始点)と地点Z(終点)までを直線とした場合に、
地点Aから地点Z間の緯度経度を求めたいです。

求める地点Aから地点Z間の緯度経度の数は
php側で吸収し地点Aから地点Z間で、1地点(N)求めた場合、
地点Aから地点Nの距離 = 地点Nから地点Zの距離
としたい。(求める地点数を等間隔にしたい)


分かっている情報としては
・地点Aと地点Zの緯度経度
・地点Aから地点Zの距離
です。

そもそも求めることができるのでしょうか?
地点A(始点)と地点Z(終点)までの距離を求める方法等は、
サイトに載っていますが。

どなたかよろしくお願いいたします

A 回答 (3件)

補足を頂きありがとうございます。


それでは多少誤差が発生する可能性はありますが、一番簡単なアルゴリズムをご紹介します。プログラムは以下の通りです。
使い方が分からないことがあったら補足をください。

--------------------------------------
<?php
//サンプル
$lat_a = 35.6813820; $lon_a = 139.7660840; //地点Aの緯度経度
$lat_b = 34.7019090; $lon_b = 135.4949770; //地点Bの経度
$n = 10; //経由地点数

//差分計算
$d_lat = ($lat_b - $lat_a) / ($n + 1);
$d_lon = ($lon_b - $lon_a) / ($n + 1);

$lat = array(); $lon = array();
$lat_n = $lat_a; $lon_n = $lon_a;
for ($i = 0; $i <= $n + 1; $i++) {
$lat[$i] = $lat_n;
$lon[$i] = $lon_n;
//次の経由地点へ
$lat_n += $d_lat; $lon_n += $d_lon;
}

//表示
for ($i = 0; $i <= $n + 1; $i++) {
echo "地点[{$i}] 緯度:{$lat[$i]} 経度:{$lon[$i]}<br />\n";
}
?>
----------------------------------------
これをGoogleMapsにプロットするプログラムもできたので、どこかで公開することにしましょう。
    • good
    • 0
この回答へのお礼

i80286さん
回答ありがとうございます。

とてもわかりやすく理解できました。
参考にさせて頂きます。
ありがとうございました。

お礼日時:2010/03/16 13:55

まずは地球が丸いことを理解しなくてはなりません。



>地点A(始点)と地点Z(終点)までを直線

ここでいう直線とは、メルカトル的な等角航路での直線なのでしょうか?
それとも大圏コースにおける最短距離のことなのでしょうか?
はたまた、地中をとおる直線なのでしょうか?

この回答への補足

yambejpさん
返信ありがとうございます。
>ここでいう直線とは、メルカトル的な等角航路での直線なのでしょうか?
メルカトル的な等角航路です。
その直線上の緯度経度を知りたいです。

よろしくお願いします。

補足日時:2010/03/15 20:03
    • good
    • 0

「PHPで2地点間の緯度経度」の意味が分からないので確認をお願いします。

以下の意味で合っていますでしょうか?

1.地点Aと地点Zがあり、各々の緯度・経度は分かっている。
2.AとZを結ぶ直線距離上に等間隔にN個の地点(N1, N2, N3...)をプロットする。
3.N1, N2, N3...の緯度経度を求める。

ご質問は、PHPで3の答えを求めることができるかどうか、できるのならそのプログラムを教えてほしいということですか?

この回答への補足

i80286さん

返信ありがとうございます。
私の説明がヘタで申し訳ありません。

>1.地点Aと地点Zがあり、各々の緯度・経度は分かっている。
>2.AとZを結ぶ直線距離上に等間隔にN個の地点(N1, N2, N3...)をプロットする。
>3.N1, N2, N3...の緯度経度を求める。

>ご質問は、PHPで3の答えを求めることができるかどうか、できるのならそのプログラムを教えてほしいということですか?

まさしくその通りです。
上記で言うと地点Aと地点Zの緯度経度はわかっていて、
N1, N2, N3...の緯度経度を求めることが出来るかです。

お忙しいと思いますがよろしくお願いします。

補足日時:2010/03/15 19:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!