人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

緯度経度であらわされる2点の間の地点を求める式を教えてください

Pa:(lat1, lng1)
Pb:(lat2, lng2)

PaとPbの間のPcを求める式を教えてください。
ただし、「ちょうど真ん中」ではなくPaからPbに向けて、割合rの地点とします。

r = 0.0 → Pc=Pa
r = 0.5 → Pc=PaとPbのちょうど真ん中
r = 1.0 → Pc=Pb

よろしくお願いいたします。

●質問者: you_got
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

質問者から

【補足】Pc は地表上にあるものとします。

【参考】ちょうど真ん中を求める式でしたら、下記サイトにありました
http://www.movable-type.co.uk/scripts/latlong.html


1 ● rsc
●125ポイント

こちらは参考になるでしょうか。一度、下記URLの公式から2点の間の距離を求めて、その後、割合rをかければいいと思います。
●2都市間の距離と方位角
http://keisan.casio.jp/exec/system/1315820022
上のは球モデルで分かりやすいですが、楕円体に基づくヒュベニの公式という、もっと精度が高いのがあるみたいです。(^_^;
●二地点の緯度・経度からその距離を計算する(日本は山だらけ?)
http://yamadarake.jp/trdi/report000001.html
さらに調べてみると、Lambert-Andoyerの公式が一番精度がいいようです。下記の二つ目のURLには誤差の評価のグラフがあります。Pa - PB 間の距離が短いので比較的簡単なヒュベニの公式でもいいのかな。(^_^;
●PHP:Distance - Gadgety
http://www.gadgety.net/shin/web/php/distance.html
●緯度経度から2点間の距離を求める
http://bit.ly/13nkUbS
●測地線航海算法 (Geodesic Sailing)
http://www.toyama-cmt.ac.jp/~mkawai/lecture/sailing/geodetic/geosail.html
●道のり計算方法について
http://www.yuyuyu.jp/other/google_maps/inv_distance.htm

※参考URL
●地球を測ろう
http://www.ic.daito.ac.jp/~mizutani/gps/measuring_earth.html
●[PDF] 1 球面上の直線 - 熊本大学
http://www.sci.kumamoto-u.ac.jp/~hisinoue/2010/2010SphericalGeometry.pdf


rscさんのコメント
あんまり難しく考えるより、#2さんの方法が一番いいかも知れません。(^_^;

rscさんのコメント
質問者様のURLの下記の公式において、θは同じなので、dをr*dに置き換えればよいと思います。(^_^; >> Destination point given distance and bearing from start point φ2 = asin( sin(φ1)*cos(d/R) + cos(φ1)*sin(d/R)*cos(θ) ) λ2 = λ1 + atan2( sin(θ)*sin(d/R)*cos(φ1), cos(d/R)-sin(φ1)*sin(φ2) ) <<

rscさんのコメント
上の公式を使ってJavaでプログラムを作って検証してみました。(^_^; http://d.hatena.ne.jp/rsc96074/20130811/1376171841

you_gotさんのコメント
検証用のプログラムまで!ありがとうございます。

2 ● holoholobird
●250ポイント ベストアンサー

コメント欄にあるように、地理座標系はその特性上メルカトル図と同様に計算することができます。

Pc:(lat3,lng3)とします。

緯度の定義より(lat1-lat3):(lat3-lat2)=Pa-Pcの弧の長さ:Pc-Pbの弧の長さ

なぜならば、緯度は地球の中心と赤道を基底面とした角度で表されるので、
Pa-Pcの弧の長さ=地球の円周*(lat1-lat3)/2π
Pc-Pbの弧の長さ=地球の円周*(lat3-lat2)/2π

同様に経度についても成立します。

よって、求める地点のlat3とlng3はこの比に等しく、

(lat1-lat3):(lat3-lat2)=r:1-r
(1-r)*lat1-(1-r)*lat3=r*lat3-r*lat2
lat3=(1-r)*lat1+r*lat2

同様に
lng3=(1-r)*lng1+r*lng2

もともと経緯度自体が(主に海図の)座標計算を簡便に行うために発達したものなので、20世紀前半を中心に発達した高等数学を使わずとも、初等数学で導けるようになっています。


you_gotさんのコメント
こんな簡単に求められるんですね!「緯度経度の座標計算は複雑でわかりにくい」と思い込んでいました。勉強になります。ありがとうございます!

3 ● だわかき
●125ポイント
  1. 2地点間の距離と方位角を求めます。
  2. 求まった距離にrを掛けて移動距離を算出します。
  3. 方位角と移動距離から、緯度・経度を求めます。

Java, 経度緯度から2点間の距離と方角(方向・方位)を求める
http://www.serendip.ws/archives/5281

距離と方位角から楕円面上で到達点を求める
http://www.gammasoft.jp/direct/


you_gotさんのコメント
シンプルな問題にわけると解きやすそうですね。ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ