緯度と経度の情報があれば、距離や方位を計算することができる。精度を高めれば複雑な式になるし、地球は扁平な回転体なので球として計算するとズレが出て来る。そこでGRS80という地球楕円体のモデルによって計算する。
扁平率を考える
前回に説明した、GRS80のパラメータ値では、赤道半径は 6,378,137m である。以降の計算も、GRS80に準拠して進める。日米欧を含む多くの国で公式な測地系に使用されている。
扁平率は、298.257222101分の1 と定められている。
(海図などでは、WGS84という測地系が用いられており、扁平率は、298.257223563分の1となっている。)
扁平率というのは、円や球では値が0となり、つぶれた形になるほど、数値は1に近づく。
回転楕円体の長半径とaとして短半径をbとする。その時の扁平率は、次のようになる。
$$f = \frac{ a-b }{ a } $$
長半径と短半径の比から求めた数値である。
$$ \frac{ a-b }{ a } = 1 – \frac{ b }{ a } $$
長半径が100で短半径が99だとすると、扁平率は、0.01となる。地球の扁平率は、それよりもう少し小さくて、比率で298.257222101分の1なので、おおよそ0.00335このくらいである。
地球を赤道で輪切りにする
念のため赤道に沿って輪切りにした形を調べてみる。赤道の周回でいびつであると計算がさらに難しくなる。さて、地球はどれだけ真円なのかというと、赤道面の扁平率は、91026分の1であるので、それほど大きな値ではない。
ということで、実用上困るような誤差ではないことがわかったので、次の計算に進む。
離心率を求める
楕円の離心率eは、
$$e = \sqrt{1 – \frac {{b}^2} {{a}^2} } $$
となる。離心率とは、楕円の焦点が中心あるいは原点からどれだけ離れている度合いである。離心率は扁平率から求められる。
離心率の二乗e2を使うことがあるので計算しておく。ここでfは、扁平率をあらわす。
$${e}^2 = \frac { {a}^2 – {b}^2 } {{a}^2} = f (2 – f) $$
近似値では、0.006 694 380 022 900 788 とされている。下記の表計算ソフトでの計算用の値は0.0066944としている。実用上十分であろう。
経度1秒分の長さを求める
そして、経度1秒分の長さを求めるには次の式になる。
$$ \Delta{l} = \frac {a \cdot cos φ} { \sqrt { 1 – {e}^2 {sin}^2 φ } } \Delta λ $$
このaは地球の長半径、つまり赤道半径であり、6,378,137mである。eは離心率。近似値を示すと、e=0.081 819 191 042 815 791、e2=0.006 694 380 022 900 788である。
緯度1秒分の長さを求める
経度は、北極周辺と赤道周辺で1度の長さが劇的に異なることは簡単に想像がつく。逆に、緯度1秒の長さは緯度が高くても低くてもあまり変わらないように思っている。それでも最大で1%程度の差がある。
$$ {l} = \frac{\pi}{648000} \cdot \frac{ a(1-{e}^2) } { (1 – {e}^2 {sin}^2 φ)^{1.5}} $$
表計算ソフトで計算したい
Libre Officeやエクセルで簡単にしたいですよね。
経度1秒の長さ:
東西に渡る長さである。単位はmである。
=PI()/180/3600*6378137*COS(A/180*Pi()) / SQRT(1-0.0066944*SIN(A/180*Pi())^2)
cosやsinの中の角度Aは北緯をラジアンにして入れるために、180を掛けてπで割っている。難しいことを考えなくてよくて、Aには北緯を普通に度数で入れれば良い。北緯35度ならば、Aには35と設定すれば良いのである。十進法の度数を入れる。35度00分00秒ではなくて、35.11111の形式を使う。
緯度1秒の長さ;
こちらも同様に角度Aは北緯をラジアンにするために変換をしている。上記の数式と同じものである。こちらも同様に、単位はmである。
=(PI()/648000)*6378137*(1-0.0066944) / (1-0.0066944* (SIN(A/180*Pi()))^2)^(1.5)
今回の式では、経度は何も関係していない。赤道面が有意に扁平であるとみなしていないからである。
ここで、A/180*Pi() を Radians(A) というラジアンを計算する関数に置き換えても良い。
1度の距離は?
1秒の距離を60倍にすると1分の距離になり、1秒の距離を3600倍すると1度の距離になる。上記の表計算ソフトの式は単位がmなので、3600かけて1度の距離にすると桁数が増えるだろうから、1000で割れば単位がkmになる。
注意が必要なのは、この距離は経線や緯線に沿った距離であるので、例えば、ある地点から真東に向かった最短距離を表しているわけではない。距離が大きくなればそのズレも大きくなる。平面と球面の違いを考慮して欲しい。
一覧表
5度ずつの計算をして表にしてみた。単位はメートル(m)。
緯度 | 経度1秒の長さ(m) | 経度1度の長さ(m) |
90 | 0.0000 | 0 |
85 | 2.7040 | 9,735 |
80 | 5.3871 | 19,393 |
75 | 8.0283 | 28,902 |
70 | 10.6074 | 38,187 |
65 | 13.1043 | 47,176 |
60 | 15.5000 | 55,800 |
55 | 17.7761 | 63,994 |
50 | 19.9155 | 71,696 |
45 | 21.9019 | 78,847 |
40 | 23.7205 | 85,394 |
35 | 25.3578 | 91,288 |
30 | 26.8017 | 96,486 |
25 | 28.0417 | 100,950 |
20 | 29.0686 | 104,647 |
15 | 29.8751 | 107,550 |
10 | 30.4554 | 109,639 |
5 | 30.8052 | 110,899 |
0 | 30.9221 | 111,319 |
緯度 | 緯度1秒の長さ(m) | 緯度1度の長さ(m) |
90 | 31.0261 | 111,694 |
85 | 31.0237 | 111,685 |
80 | 31.0167 | 111,660 |
75 | 31.0051 | 111,618 |
70 | 30.9895 | 111,562 |
65 | 30.9702 | 111,493 |
60 | 30.9479 | 111,412 |
55 | 30.9232 | 111,324 |
50 | 30.8970 | 111,229 |
45 | 30.8699 | 111,132 |
40 | 30.8430 | 111,035 |
35 | 30.8168 | 110,941 |
30 | 30.7923 | 110,852 |
25 | 30.7702 | 110,773 |
20 | 30.7512 | 110,704 |
15 | 30.7357 | 110,649 |
10 | 30.7244 | 110,608 |
5 | 30.7174 | 110,583 |
0 | 30.7151 | 110,574 |
先ほどの数式で計算したものである。
次の記事:
前の記事: