Excelでの緯経度計算について教えてください。

いま分かっている情報は
 ・基準点の緯度経度
 ・基準点からの方角(基準点真北が0°です。)
 ・基準点からの距離
です。この3つの情報を使って、目標ポイントの緯度経度を算出します。

Excelシートは、以下の通り作成しました。
★印の列(I列〜M列)に入力すべき数式を教えてください。

A列 基準点緯度(度)
B列 基準点緯度(分)
C列 基準点緯度(秒)
D列 基準点経度(度)
E列 基準点経度(分)
F列 基準点経度(秒)
G列 方角(度)
H列 距離(km)
I列 ★算出点緯度(度)
J列 ★算出点緯度(分)
K列 ★算出点緯度(秒)
L列 ★算出点経度(度)
M列 ★算出点経度(分)
N列 ★算出点経度(秒)

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/09/15 22:12:01
  • 終了:--

回答(5件)

id:sugiyasato No.1

sugiyasato回答回数157ベストアンサー獲得回数22004/09/15 23:41:46

ポイント30pt

http://oshiete1.goo.ne.jp/kotaeru.php3?q=934745

2点の緯度経度から2点の交点の緯度経度を求めるには? - 教えて!goo

地球の実際の形状を考慮してまじめにやるには難しいらしいですが,

球体の仮定でよければ,ここの回答1に式が書いてあります。

実際は角度をラジアンに変換して戻す手間もいりますね。

http://www.vector.co.jp/soft/win31/home/se078044.html

距離と方位から経緯度を計算(Windows3.1 / 家庭&趣味)

答えが欲しいだけならこんなソフトもあるようです。

参考まで。

id:yasunorin

う〜ん。ズブの素人なので読み解くのに時間が掛かりそうです。ありがとうございます!

2004/09/17 02:31:13
id:meia No.2

meia回答回数11ベストアンサー獲得回数02004/09/16 03:08:23

ポイント30pt

地球は楕円形ですし、0度を貫通した時の処理も考えると数式だけで対応するのはかなり無理があると思います。マクロを使えば不可能ではないでしょうが‥‥。

id:yasunorin

例えば距離を500mとして、始点と終点を図示したいのですが、やはり難しいのでしょうか…。

2004/09/17 02:38:47
id:sugiyasato No.3

sugiyasato回答回数157ベストアンサー獲得回数22004/09/17 09:00:23

ポイント50pt

1番です。500mとかその程度であれば,平面とみなしても十分でしょう。

北を0度として角度θ[度]をはかり,d[km]だけ離れているとすると,

東西方向の距離x=d×sinθ

南北方向の距離y=d×cosθ

(ただしエクセルで計算するときは角度をラジアンにしなければいけないので,

θの変わりにθ×(π/180)とします)

地球の1周の長さを約40000kmとすると,これが360度にあたりますから,

東西方向の角度差Δλ=360×(x/40000)

南北方向の角度差Δφ=360×(y/40000)

となります(単位は[度])。

原点の緯度,経度をλ,φとすると,

目標ポイントの緯度,経度λ’,φ’は,

λ’=λ+Δλ, φ’=φ+Δφ

となります。

ただし,度分秒に変換しないといけません。

分は度で表した角度の小数部分を60倍したものの整数部分です。

秒はその残りの端数を60倍したものになります。

P列でΔφ,Q列でΔλを計算するとすると,

緯度の方だけ書くと,

P=360*H*Cos(G*Pi()/180)/40000

I=A+Trunc(P)

J=B+Trunc((P-I)*60)

K=C+((P-I)*60-J)*60

のようになります(Truncは切り捨て)。

ただし,分,秒が足して60を超えたら桁上がり

させないといけません。

あとは,0に近いときの計算の精度と,

方向による正負の判断があっているか気をつけないといけません。

基本はこんなところだと思いますが,

チェックしていませんので気をつけてください。

id:yasunorin

地図を眺めるだけならは簡単そうなのですが、実際とても難しいのですね。

ありがとうございます。

2004/09/18 13:54:47
id:misakey339 No.4

misakey339回答回数19ベストアンサー獲得回数02004/09/17 14:13:17

ポイント30pt

http://www.arknext.com/utility/contents/gccj.html

アークEFI航空情報センター Javascript Great Circle Calculator

計算式をズバリ書くことはできませんが、やろうとしていることは、このURLの2番目のプログラムと同じでしょうか?

計算式はここに書いてあるようですが、言葉の意味がわからず、何にどの数値を入れれば良いのか具体的に書いてあるサイトは見つかりませんでした。

緯度経度計算+Survey.DLL

計算するためのDLLがここにあるみたいですが、どうやって使えば良いのかよくわかりません。

「ずばりこの計算式!」という回答がほしかったのかもしれませんが、ここまでしかお手伝いすることができませんでした。すみません。

id:yasunorin

私も言葉じりは全く分かりません(笑)

2004/09/18 14:02:09
id:kabatotto No.5

kabatotto回答回数88ベストアンサー獲得回数42004/09/19 18:30:25

ポイント50pt

以下は地球を周囲40,000kmの完全な球体と仮定した場合です。

O=SIGN(A)*(ABS(A)+B/60+C/3600)/57.29578

P=(D+E/60+F/3600)/57.29578

Q=G/57.29578

R=H/40000*PI()*2

S=sin(R)*sin(Q)

T=cos(O)*cos(R)-sin(O)*sin(R)*cos(Q)

U=ATAN2(T,S)

V=sin(O)*cos(R)+cos(O)*sin(R)*cos(Q)

W=ASIN(V)*57.29578

X=(P+U)*57.29578

Wに算出点の緯度、Xに同じく経度がそれぞれ度の小数の単位で入ります。

あとはsugiyasatoさんの書かれている注意にしたがって度分秒に

換算されればいいと思います。

id:yasunorin

早速やってみます。

ありがとうございます!

2004/09/20 12:49:37
  • id:sugiyasato
    訂正・補足(回答1,3)

    1、3の回答者です。
    質問者様にはすでにポイント送信で間違いを伝えてあります。
    ・回答1ですが,リンク先の球面近似での計算は経度の計算がなんか変です。
     正しい計算は下に示したもの,またはkabatottoさんの回答5です。
    ・回答3では経度差を計算するときの一周の長さが,
    緯度によって違うということを書き忘れていました。
    赤道で40000キロだとすると,緯度φではcosφだけ小さくなるので,
    40000で割る代わりに40000*cosφで割らないといけません。
     また,繰り上がりの心配をしないといけないと書きましたが,
    最初から度の単位で足していればこの心配はいりません。
    分かりやすくするために度/分/秒を分けたつもりがややこしくしてしまいました。
    (ただし,地球を一周してしまうような指定もありうる場合は
    やっぱりいろいろと注意が必要です。)

    ・5列目を使うということにして,入れるべき式を書くと以下のようになります。
     どちらもP5,Q5に目標ポイントの緯度・経度が小数部を含む度の単位で入ります。
     東経・北緯の範囲では,数値(方位)の判断は不要です。

    ●平面上の直角三角形で近似する場合(回答3の考え)
    I5=TRUNC(P5)
    J5=TRUNC((P5-I5)*60)
    K5=((P5-I5)*60-J5)*60
    L5=TRUNC(Q5)
    M5=TRUNC((Q5-L5)*60)
    N5=((Q5-L5)*60-M5)*60
    (O5は空き)
    P5=(A5+(B5+C5/60)/60) + 360*(H5*COS(G5*PI()/180))/40000
    Q5=(D5+(E5+F5/60)/60) + 360*(H5*SIN(G5*PI()/180))/(40000*COS(P5*PI()/180))

    ●球面上の三角形で近似する場合
    I5〜O5は上と同じ。
    P5=(PI()/2-U29)*180/PI()
    Q5=D29+(E29+F29/60)/60 +V29*180/PI()
    R5=H29/6371
    S5=PI()/2-(A29+(B29+C29/60)/60)*PI()/180
    T5=G29*PI()/180
    U5=ACOS(COS(R29)*COS(S29)+SIN(R29)*SIN(S29)*COS(T29))
    V5=ACOS((COS(R29)-COS(S29)*COS(U29))/(SIN(S29)*SIN(U29)))

    以下,いいわけと補足をします。
    ・上の回答3の訂正版や球面にした場合,または回答5を使えるのは,
     地球上のあまり広くない範囲だけです。(必要精度によります)
     地球は球面ではないので,実際は回答に書いたように複雑です。
     具体的に通用する範囲を考えると,
     距離が数十キロくらいで数10m〜100mくらいの誤差と思ってください。
     首都圏内(数100km)くらいなら誤差1km以内で計算できると思います。
     この範囲では3つのどれを使ってもほとんど変わりません。
     これ以上(1000kmとか)では平面近似では誤差が大きく出てきます。
     球面近似ではこれでもまだ誤差数kmくらいで使えます。
     それほど手間は変わらないので球面近似を使うのがいいでしょう。
     計算結果は回答1のURLにも引用されている,
     http://www.arknext.com/utility/contents/gccj.html
     などでチェックができます。

    ・計算に必要なのは以上ですが,上の球面の場合の説明をしておきます。
     ここでは角度はラジアンで表します(360°=2π)。
    地球を半径Reの真球とする。
    A点を北極点,B点を基準点(φ,λ),C点を目標ポイント(φ’,λ’)とすると,
    BからCへの方位角はθ(方位角と方向角は,等しくθであるとする)。
    BC間の距離はd(距離は大円距離),
    地球平均半径をReとする。
    BC点を通る大円と,B点C点をそれぞれ通る経線で囲まれる,
    球面三角形ABCの要素は,次のようになる。
      a=d/Re     (既知)
      b=π/2 - φ’ (求めたい)
      c=π/2 - φ  (既知)
      A=Δλ     (求めたい)
      B=θ      (既知)
      C=?       (使わない)
    (a,b,cは頂点間の角距離,A,B,Cは球面三角形の内角)
    球面三角法の公式より,
      cos(b) = cos(a)cos(c) + cos(B)sin(a)sin(c) …①
      cos(B)sin(a) = cos(b)sin(c) - sin(b)cos(c)cos(A) …②
    これらより,
      cos(A) = (cos(a) - cos(b)cos(c)) / (sin(b)sin(c)) …③
    よって,①,③のcosの逆関数(Excelではacos関数)をとればb,Aが求まる。
    b,Aを用いると,目標ポイントの緯度経度は
      φ’= π/2 - b
      λ’ = λ + A
    となる。

    ・エクセルでややこしい式を使うときは,PI()/180とか40000などの定数は,
     本当は別のセルに入れて名前をつけて絶対参照する方が間違いが少なくなります。

    ・まじめにやるにはどうするか?
     回答4のようなプログラムを使わないと非常に大変ですが,
     計算だけの問題ではなく,地球のモデルをどうするかという問題が出てきます。
     もし勉強されたいのであれば,以下のURLなどが参考になるでしょう。
      http://watchizu.gsi.go.jp/
      http://www.gsi.go.jp/LAW/G2000/g2000.htm
      http://vldb.gsi.go.jp/sokuchi/
      http://www.tawatawa.com/chizu1/page009.html

    ・回答時のプレビュー,回答後オープン前の訂正・取り消しができるといいですね。
     簡単だと思ってソラで書き込むとこんな手間がかかってしまう。なめたらアカン..

    ご迷惑おかけしました。

     

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません