学位の長さの式の用語を理解していますか?


13

http://www.csgnetwork.com/degreelenllavcalc.html(ページのソースを表示)などのオンライン計算機は、次の式を使用して度ごとのメートルを取得します。一般に、緯度ごとに1度あたりの距離がどのように変化するかは理解していますが、それが以下にどのように変換されるかはわかりません。より具体的には、定数、各式の3つの「cos」項、および「lat」の係数(2、4、6、3、5)はどこから来るのでしょうか。

    // Set up "Constants"
    m1 = 111132.92;     // latitude calculation term 1
    m2 = -559.82;       // latitude calculation term 2
    m3 = 1.175;         // latitude calculation term 3
    m4 = -0.0023;       // latitude calculation term 4
    p1 = 111412.84;     // longitude calculation term 1
    p2 = -93.5;         // longitude calculation term 2
    p3 = 0.118;         // longitude calculation term 3

    // Calculate the length of a degree of latitude and longitude in meters
    latlen = m1 + (m2 * Math.cos(2 * lat)) + (m3 * Math.cos(4 * lat)) +
            (m4 * Math.cos(6 * lat));
    longlen = (p1 * Math.cos(lat)) + (p2 * Math.cos(3 * lat)) +
                (p3 * Math.cos(5 * lat));

3
円上では、m = 0、1、2、...のcos(m * x)形式の項は、単項式1、x、x ^ 2、x ^ 3、...と同じ役割を果たします。ライン上のシリーズ。この種の拡張を見たとき、あなたはそれを同じように考えることができます:各項は関数の高次近似を与えます。通常、このような三角級数は無限です。しかし、実際の使用では、近似の誤差が許容されるとすぐに切り捨てられます。多くの回転楕円体投影はそのようなシリーズを使用して計算されるため、そのような技術の一部はすべてのGISの内部にあります。
whuber

これはまた、オーバーレイとしてX、Yグリッドがある場合メルカトルマップ上の点をプロットする場所を判断するために有用な、緯度の線間の距離が変動算出距離のために非常に有用である

ヒント:用のラジアンを使用することを忘れないでくださいlat(たとえ結果の変数latlenlonglenラジアンごとに、度あたりメートルメートルではありません)。度にを使用latすると、に負の値を設定することさえできますlonglen
ルークハッチソン

回答:


23

WGS84回転楕円体の主半径はa = 6378137メートルであり、その逆平坦化はf = 298.257223563です。

e2 = (2 - 1/f)/f = 0.0066943799901413165.

緯度phiでの子午線の曲率半径は

M = a(1 - e2) / (1 - e2 sin(phi)^2)^(3/2)

平行に沿った曲率半径は

N = a / (1 - e2 sin(phi)^2)^(1/2)

さらに、平行線の半径は

r = N cos(phi)

これらはMNの球面値に対する乗法的補正であり、どちらも球面半径aに等しく、これはe2 = 0の場合に減少します。

図

北緯45度の黄色の点で、半径Mの青い円盤は子午線の方向の接触(「キス」)円であり、半径Nの赤い円盤は平行の方向の接触円です:両方ディスクには、この時点で「下」方向が含まれています。この図は、地球の平坦化を2桁誇張しています。

曲率半径は度の長さを決定します:円の半径がRの場合、長さ2 pi Rの円周は360度をカバーし、1度の長さはpi * R / 180 です。RをMおよびrに置き換える- -つまり、Mrにpi / 180を掛けると、次数の長さの単純で正確な公式が得られます。

これらの式は、与えられたafの値(多くの場所にあります)と回転楕円体としての回転楕円体の記述にのみ基づいていますが、質問の計算で0.6パーツ以内に同意します100万(数センチ)は、問題の最小係数とほぼ同じ大きさであり、それらが一致することを示しています。(近似値は常に少し低くなります。)プロットでは、緯度の長さの相対誤差は黒で、経度の相対誤差は赤で破線になっています。

図

したがって、質問の計算は、上記の式の近似(切り捨てられた三角級数による)であると理解できます。


係数は、緯度の関数としてMおよびrのフーリエ余弦級数から計算できます。それらは、e2 の楕円関数で与えられます。WGS84スフェロイドの場合、私の計算は

  m1 = 111132.95255
  m2 = -559.84957
  m3 = 1.17514
  m4 = -0.00230
  p1 = 111412.87733
  p2 = -93.50412
  p3 = 0.11774
  p4 = -0.000165

p4式の入力方法は推測できます。)コード内のパラメーターに対するこれらの値の近さは、この解釈の正確さを証明します。この改善された近似値は、あらゆる場所で10億分の1をはるかに上回る精度です。


この答えをテストRするために、両方の計算を実行するコードを実行しました。

#
# Radii of meridians and parallels on a spheroid.  Defaults to WGS84 meters.
# Input is latitude (in degrees).
#
radii <- function(phi, a=6378137, e2=0.0066943799901413165) {
  u <- 1 - e2 * sin(phi)^2
  return(cbind(M=(1-e2)/u, r=cos(phi)) * (a / sqrt(u))) 
}
#
# Approximate calculation.  Same interface (but no options).
#
m.per.deg <- function(lat) {
  m1 = 111132.92;     # latitude calculation term 1
  m2 = -559.82;       # latitude calculation term 2
  m3 = 1.175;         # latitude calculation term 3
  m4 = -0.0023;       # latitude calculation term 4
  p1 = 111412.84;     # longitude calculation term 1
  p2 = -93.5;         # longitude calculation term 2
  p3 = 0.118;         # longitude calculation term 3

  latlen = m1 + m2 * cos(2 * lat) + m3 * cos(4 * lat) + m4 * cos(6 * lat);
  longlen = p1 * cos(lat) + p2 * cos(3 * lat) + p3 * cos(5 * lat);
  return(cbind(M.approx=latlen, r.approx=longlen))
}
#
# Compute the error of the approximation `m.per.deg` compared to the 
# correct formula and plot it as a function of latitude.
#
phi <- pi / 180 * seq(0, 90, 10)
names(phi) <- phi * 180 / pi
matplot(phi * 180 / pi, 10^6 * ((m.per.deg(phi) - radii(phi) * pi / 180) / 
       (radii(phi) * pi / 180)),
        xlab="Latitude (degrees)", ylab="Relative error * 10^6",lwd=2, type="l")

との正確な計算をradii使用して、次のように度の長さのテーブルを印刷できます。

zapsmall(radii(phi) * pi / 180)

出力はメートル単位で、次のようになります(いくつかの行が削除されています)。

          M         r
0  110574.3 111319.49
10 110607.8 109639.36
20 110704.3 104647.09
...
80 111659.9  19393.49
90 111694.0      0.00

参照資料

LM BugayevskiyおよびJP Snyder、Map Projections-リファレンスマニュアル。 テイラー&フランシス、1995年(付録2および付録4)

JP Snyder、Map Projections--A Working Manual。 USGS Professional Paper 1395、1987。(第3章)


単純な式のペアに対してこのような複雑な近似が使用される理由はわかりません...
whuber

なんて徹底的で素晴らしい答えでしょう!正しいようです。今、私はそれを理解するためにこの数学を磨く必要があります。:)
ブレント

@Brent数学を理解するのに役立つ図を追加しました。
whuber

0

奇妙な方法で表現されていますが、これはHaversine式です。


それは明らかに、Haversineフォーミュラではありません!これは、スフェロイドに使用される摂動です。任意のポイントペア間の距離も見つけられません。これは、Haversineの式が(球体上で)使用されるものです。
whuber

1
言い換えると、Haversine式は大圏距離を計算しますが、この式はより正確な楕円体距離を計算する摂動です。
ブレント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.