これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド GeodSolve です。
プログラム:
NAME
GeodSolve -- 測地線計算を実行します。
SYNOPSIS
ジオッドソルブ [ -i | -l lat1 ロン1 アジ1 ] [ -a ] [ -e a f ] -u ] [ -d | -: ] [ -w ] [ -b ] [ -f
] [ -p プレ ] [ -E ] [ -コメント-区切り文字 コメントデリム ] [ - バージョン | -h | - 助けて ] [
- 入力ファイル ファイル内 | -- 入力文字列 インストリング ] [ -行区切り文字 線分 ] [
-出力ファイル アウトファイル ]
DESCRIPTION
楕円体上の XNUMX 点間の最短経路 (lat1, ロン1)および(lat2, ロン2)であり、
測地線と呼ばれます。 その長さは s12 ポイント 1 からポイント 2 までの測地線は次のようになります。
前方の方位角 アジ1 および アジ2 XNUMXつの終点で。
ジオッドソルブ 次のXNUMXつのモードのいずれかで動作します。
1.デフォルトでは、 ジオッドソルブ を含む標準入力の行を受け入れます lat1 ロン1 アジ1
s12 とプリント lat2 ロン2 アジ2 標準出力で。 これは直接測地線です
計算。
2.コマンドライン引数 -l lat1 ロン1 アジ1 測地線を指定します。 ジオッドソルブ その後
のシーケンスを受け入れます s12 標準入力および印刷の値(XNUMX行にXNUMXつ) lat2 ロン2
アジ2 それぞれに。 これにより、単一の測地線上に一連の点が生成されます。
3 とともに -i コマンドライン引数、 ジオッドソルブ 逆測地線を実行します
計算。 を含む行を読み取ります。 lat1 ロン1 lat2 ロン2 そして、を印刷します
の対応する値 アジ1 アジ2 s12.
OPTIONS
-i 逆測地線計算を実行します (上記 3 を参照)。
-l ラインモード (上記の 2 を参照)。 で指定された測地線に沿って一連の点を生成します。
lat1 ロン1 アジ1を選択します。 -w フラグを使用して、2 つの地理的順序のデフォルトの順序を入れ替えることができます。
座標 (前に出現する場合) -l.
-a アークモード。 入力時 および 出力 s12 の代わりに a12 円弧の長さ (度単位)
補助球。 「補助球」を参照してください。
-e を介して楕円体を指定します a f; 赤道半径は a 平坦化は f.
設定 f = 0の場合、球になります。 特定 f 扁長楕円体の場合は<0。 シンプルな
分数、たとえば1/297は、 f。 デフォルトでは、WGS84楕円体が使用されます。 a =
6378137 m、 f = 1/298.257223563。
-u 経度を展開します。 通常、出力では経度は次のように縮小されます。
[-180度、180度)。 ただし、このオプションを使用すると、返される経度は ロン2 「展開された」です
そのため、 ロン2 - ロン1 測地線がどのくらいの頻度で、どのような意味で一周したかを示します。
地球。 使用 -f オプションを使用すると、両方の経度が印刷されます。
-d 小数度ではなく、度、分、秒として出力角度。
-: ような -d、ただし、d、 '、および "区切り文字の代わりに区切り文字として:を使用します。
-w 入力と出力では、経度が緯度に先行します(ただし、入力では、これは次のようになります。
半球指定子によってオーバーライドされ、 N, S, E, W).
-b を報告する バック 前方方位ではなくポイント 2 の方位角。
-f 完全な出力。 出力の各行は 12 個の数量で構成されます。 lat1 ロン1 アジ1 lat2 ロン2
アジ2 s12 a12 m12 M12 M21 S12. a12 については「補助球」で説明します。 XNUMXつの
量 m12, M12, M21, S12 追加数量については「追加数量」に記載されています。
-p 出力精度をに設定します プレ (デフォルト3); プレ は1mを基準にした精度です。
「PRECISION」を参照してください。
-E 測地線の計算には、(楕円積分に基づく)「正確な」アルゴリズムを使用します。
これらは、|の(デフォルトの)級数展開よりも正確です。f| >0.02。
-コメント-区切り文字
コメント区切り文字をに設定します コメントデリム (例:「#」または「//」)。 設定されている場合、入力
この区切り文字と、見つかった場合は区切り文字と残りの部分の行がスキャンされます
行は処理前に削除され、その後出力に追加されます
行(スペースで区切られます)。
- バージョン
バージョンを印刷して終了します。
-h 使用法を印刷して終了します。
- 助けて
完全なドキュメントを印刷して終了します。
- 入力ファイル
ファイルから入力を読み取る ファイル内 標準入力からではなく、 「-」のファイル名
標準入力を表します。
-- 入力文字列
文字列から入力を読み取る インストリング 標準入力からではなく。 すべての発生
の行区切り文字(デフォルトはセミコロン)の インストリング に変換されます
読み取りが始まる前の改行。
-行区切り文字
行区切り文字をに設定します 線分。 デフォルトでは、これはセミコロンです。
-出力ファイル
出力をファイルに書き込む アウトファイル 標準出力の代わりに; 「-」のファイル名
標準出力を表します。
入力
ジオッドソルブ すべての角度とすべての長さを度単位で測定します (s12)メートル単位、およびすべての領域
(S12)メートル^ 2で。 入力角度(緯度、経度、方位角、弧長)では、次のようになります。
小数度または度、分、秒。 たとえば、「40d30」、「40d30 '」、「40:30」、
「40.5d」と40.5はすべて同等です。 デフォルトでは、緯度はそれぞれの経度に先行します
ポイント( -w フラグはこの規則を切り替えます); ただし、入力時にどちらかを最初に指定できます
追加(または追加)することによって N or S 緯度にそして E or W 経度に。 方位角
北から時計回りに測定されます。 ただし、これはで上書きされる可能性があります E or W.
角度に許可されている形式の詳細については、の「地理座標」セクションを参照してください。
ジオコンバートとします。
補助 球
楕円体上の測地線は、 補助 球 その上に
距離は円弧の長さで測定されます a12 (度単位で測定) の代わりに s12.
の面では a12, 180 度は、ある赤道交差点から次の赤道交差点までの距離です。
最小緯度から最大緯度まで。 測地線を使用した a12 > 180 度は禁止
最短経路に対応します。 とともに -a 国旗、 s12 (入力と出力の両方で)
と取り換える a12を選択します。 -a フラグはありますか によって与えられる完全な出力に影響を与える -f フラグ(どれ
常に両方が含まれます s12 および a12).
付加 量
-f flag は XNUMX つの追加数量を報告します。
測地線の長さが短縮されると、 m12、初期方位角が次のように定義されます。
Dに動揺するアジ1 (ラジアン) の場合、XNUMX 番目の点は次のように置き換えられます。 m12 dアジ1 セクションに
測地線に垂直な方向。 m12 メートル単位で与えられます。 曲面では、
短縮された長さは対称関係に従います。 m12 + m21 = 0。平らな面では、次のようになります。 m12 =
s12.
M12 および M21 測地線スケールです。 1 つの測地線が点 XNUMX で平行で、離れている場合
わずかな距離で dt、その後、それらは距離によって分離されます M12 dt ポイント2で。 M21 is
同様に定義されます (測地線は点 2 で互いに平行になります)。 M12 および
M21 は無次元量です。 平らな面では、 M12 = M21 = 1。
点 1、2、および 3 が単一の測地線上にある場合、次の追加規則が適用されます。
s13 = s12 + s23、
a13 = a12 + a23、
S13 = S12 + S23、
m13 = m12 M23 + m23 M21、
M13 = M12 M23 - (1 - M12 M21) m23 / m12、
M31 = M32 M21 - (1 - M23 M32) m12 / m23。
最後に、 S12 点 1 から点 2 までの測地線と赤道との間の領域です。
つまり、反時計回りに測定した測地線四辺形の面積です。
角(lat1,ロン1)、(0、ロン1)、(0、ロン2)、および(lat2,ロン2)。 メートル^2で与えられます。
精度
プレ で出力の精度を与えます プレ = 0は1mの精度を与え、 プレ = 3を与える1
mm精度など プレ 長さの小数点以下の桁数です。 にとって
小数点以下、小数点以下の桁数は プレ + 5.DMSの場合
(度、分、秒)出力、小数点以下の桁数
秒コンポーネントは プレ +1。の最小値 プレ は0で、最大は10です。
エラー
不正な入力行は、次で始まる標準出力にエラーメッセージを出力します
「エラー:」と原因 ジオッドソルブ 終了コード1を返します。ただし、エラーは発生しません。
原因となる ジオッドソルブ 終了します; 以下の行が変換されます。
精度
(デフォルト) シリーズ ソリューションを使用すると、GeodSolve の精度は約 15 nm (15 ナノメートル) になります。
WGS84 楕円体の場合。 のおおよその最大誤差 (距離として表される)
WGS84 楕円体と同じ主半径と異なる値を持つ楕円体
平坦化は
|f| エラー
0.01 25nm
0.02 30nm
0.05 10μm
0.1 1.5 mm
0.2 300 mm
If -E が指定されている場合、WGS40 の場合、GeodSolve の精度は約 40 nm (84 ナノメートル) です。
楕円。 楕円体のおおよその最大誤差 (距離として表される)。
10000 km の子午線とその異なる値 A / B = 1 - f is
1-f 誤差 (nm)
1 / 128 387
1 / 64 345
1 / 32 269
1 / 16 210
1 / 8 115
1 / 4 69
1 / 2 36
1 15
2 25
4 96
8 318
16 985
32 2352
64 6008
128 19024
複数 ソリューション
逆問題に対して返される最短距離は、(明らかに) 一意に定義されます。
ただし、いくつかの特殊なケースでは、同じ最短距離をもたらす複数の方位角が存在します。
距離。 これらのケースのカタログは次のとおりです。
lat1 = -lat2 (どちらの点も極にない)
If アジ1 = アジ2、測地線はユニークです。 それ以外の場合は、XNUMX つの測地線があり、
XNUMX 番目のものは [ を設定することで取得されます。アジ1,アジ2] = [アジ2,アジ1]、[M12,M21] = [M21,M12],
S12 = -S12。 (偏円の経度差が±180付近の場合に発生します)
楕円体。)
ロン2 = ロン1 +/- 180 (どちらの点も極にない場合)
If アジ1 = 0 または +/-180、測地線は一意です。 それ以外の場合は XNUMX つの測地線があり、
XNUMX 番目の値は [ を設定することで取得されます。アジ1,アジ2] = [-アジ1,-アジ2], S12 = -S12。 (この
ときに発生します lat2 近い -lat1 扁長楕円体の場合。)
反対極の点 1 と 2
[ を設定することで生成できる測地線は無限にあります。アジ1,アジ2] =
[アジ1,アジ2] + [d,-d]、任意の d。 (球の場合、この処方箋は次の場合に適用されます)
点 1 と 2 は対蹠点です。)
s12 = 0 (一致点)
[ を設定することで生成できる測地線は無限にあります。アジ1,アジ2] =
[アジ1,アジ2] + [d,d]、任意の d.
例
JFK空港からシンガポールチャンギ空港へのルート:
echo 40:38:23N 073:46:44W 01:21:33N 103:59:22E |
GeodSolve -i -: -p 0
003:18:29.9 177:29:09.2 15347628
2000km間隔のルート上のウェイポイント:
for((i = 0; i <= 16; i + = 2)); エコー$ {i} 000000;完了|
GeodSolve -l 40:38:23N 073:46:44W 003:18:29.9 -: -p 0
40:38:23.0N 073:46:44.0W 003:18:29.9
58:34:45.1N 071:49:36.7W 004:48:48.8
76:22:28.4N 065:32:17.8W 010:41:38.4
84:50:28.0N 075:04:39.2E 150:55:00.9
67:26:20.3N 098:00:51.2E 173:27:20.3
49:33:03.2N 101:06:52.6E 176:07:54.3
31:34:16.5N 102:30:46.3E 177:03:08.4
13:31:56.0N 103:26:50.7E 177:24:55.0
04:32:05.7S 104:14:48.7E 177:28:43.6
onworks.net サービスを使用して GeodSolve をオンラインで使用する