オンライン健康相談、gooドクター

いつもお世話になっています。

緯度と経度が分っている2点の方位角をプログラム(C言語)求めたいのですが、国土地理院のHPにあるような計算式だと計算に時間が掛かってしまいます。
精度はそこそこで簡単な計算方法があれば教えてください。
【国土地理院HP】
http://vldb.gsi.go.jp/sokuchi/surveycalc/algorit …

gooドクター

A 回答 (3件)

その「そこそこの精度」が一体どの程度かお示し下さらないと回答する方はちょっと困ります。


例えば目的が測量とカーナビゲーションとでは月と鼈ほどの大きな差があります。

以下の方法は地球を球体とみなして球面三角法で解く簡便なものなので測量には使えませんが、
日本付近の緯度での2点間の距離400kmほどで誤差は0.1度を少し超える程度です。

地点Aの経度と緯度をそれぞれL1,B1とし、
地点Bの経度と緯度をそれぞれL2,B2とし、
地点Aからみた地点Bの方位(真北を0度として東回りにはかった角度)をθとすると以下の手順で
求められます。

Y = cos(B2) * sin(L2 - L1)
X = cos(B1) * sin(B2) - sin(B1) * cos(B2) * cos(L2 - L1)
θ[rad] = atan2(Y, X)
もし θ[rad]<0 なら θ = θ + 2π とし結果を0から2π未満に収めます。
θ[deg] = θ[rad] * 180 / π

※ 「*」は乗算、「/」は除算、sin()は正弦関数、cos()は余弦関数、
  atan2(y, x)は逆正接関数(返り値は-2π~+2π)、
  θ[rad]は弧度法でのラジアン単位の角度、θ[deg]は度単位の角度をそれぞれ表す。
  経度は東経を「+」西経を「-」、緯度は北緯を「+」南緯を「-」の数として扱います。

地球を回転楕円体として扱うもっと精度の高い式もありますので先の式で不足なら必要な精度をお示し下さった上でお尋ね下さい。

まずは参考ページをご覧下さい。
http://forum.nifty.com/fyamap/kyorihoi.htm
@niftyでの距離と方位の計算に関する書き込みのLOGです。

http://www.arknext.com/utility/contents/gccj.html
様々な回転楕円体要素(球体を含む)での距離と方位を計算してくれるページです。

書籍では「現代測量学 第4巻 測地測量1」社団法人日本測量協会 をお薦めします。

参考URL:http://forum.nifty.com/fyamap/kyorihoi.htm
    • good
    • 3

http://vldb.gsi.go.jp/sokuchi/surveycalc/algorit …
を使って出したいということですよね?
見ると三角関数と四則演算しか使ってませんが
これで時間がかかるということは、
1.パソコン自体が遅い
2.大量のデータを使う
のどちらかだと思いますが、
1.だったら買いなおすことをお勧めします。
今のPCは感動するほど速いです。
2.ならどうしようもないと思います。
問題を分割して、複数のPCで計算させる・・・とか。
    • good
    • 0

そこの計算式が難しいなら、曲率半径だの、


場所による座標系の違いを無視して、完全球体の
座標で考えればいいんじゃないですか?
その程度の精度でいいのならば。
計算方法というか、考え方は、国土地理院の
方法をそのまま利用すればいいと思います。
というか、その方法以外にないんじゃないのかな?
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング