地球の表面に線が与えられた場合、それに垂直な線をどのようにプロットしますか?


9

地球の表面に線が与えられた場合、それに垂直な線をどのようにプロットしますか?

これが非常に単純な質問である場合はお詫びします。これは簡単な作業だと思いましたが、直観に反していることがわかりました。

下の図の青い線から始めます(リンクを参照してください-まだ数値をアップロードできません)。青い線(m)の勾配を計算し、次に勾配-1 / mの別の線(緑)をプロットして、垂直線を見つけました。( 'plot'と 'axis equal'を使用して)Matlabで線をプロットすると、期待どおりに垂直に見えます。

http://imgur.com/7qMkx

ただし、これらの線を(KMLツールボックスを使用して)Google Earthにエクスポートすると、垂直に見えなくなります(下のリンクを参照。短い方の線は前の図の青い線です)。

http://imgur.com/ncJQ7

曲面で奇妙なことが起こることは理解していますが、線は少なくとも局所的に垂直に見えるべきだと思いました。これはGoogle Earthの投影に関係しているのではないかと思います。特に、グリッドセルはほぼ同じ辺の長さを持っているように見えますが、縦の辺の長さは1度ですが、緯度の辺の長さは0.5です。程度。

つまり、要約すると:

  • 垂線を見つける方法は曲面で有効ですか?(つまり、勾配-1 / mの線をプロットします)
  • Google Earthの画像で、垂線が期待どおりに表示されますか、それとも何か奇妙なことが起こっていますか?

更新:

より多くのコンテキストを提供するために:私は飛行機から取られたレーダーデータを見ています。マルチカラーの領域は、観測が記録されている「帯」です。上記の説明で始めた青い線は、スワスと平行です。これは航空機の飛行線です(飛行機はほぼ南西方向に動いていました)。レーダーは、左側の飛行線に直交する方向を向きます。私は飛行線に垂直な線を引こうとしています。これは、レーダーが見ている方向であり、帯をきれいにカットする必要があります。ご覧のとおり、そうではありません。

ここに画像の説明を入力してください


2
実際、Googleは角度を正しく描写していますが、Matlabプロットはそうではありません...
whuber

返信ありがとう、whuber。それは、私が計算した線が実際には元の線に対して垂直ではないということですか?それとも、Matlabで線を表示する方法がどういうわけか間違っているということですか?Matlabで「軸が等しい」コマンドを使用して、線が垂直であることを確信させましたが、これは地球の曲率を適切に表していないと思います。
Paul Keating

2
ポール、あなたの最初の解釈は正しいです。(lon、lat)をデカルト座標であるかのように使用すると、方向がひどく歪み、ほとんどの角度が目に見えてゆがみます。したがって、デカルトの公式-1 / mを使用しても、2つの幸運な方向(または赤道)を除いて、直角に近づくことさえできません。別の方法を提供するには、どのような種類の「線」が必要か(たとえば、測地線または横線)、それをプロットする目的、およびその線の長さを知ることが役立ちます。(短い長さを使用すると、単純な概算を使用できます。)
whuber

2
ところで、コンフォーマル投影に関するサイトのスレッドのいくつかを読むことで、これらの問題について多くを学ぶことができます。
whuber

どうもありがとう、whuber。とても興味深い。上記の問題の説明で、より多くのコンテキストを提供しました。私が必要とする長さは比較的短い(上に示したスワスの幅。これは10分の1度程度です)ので、有効な近似についての提案があれば、高く評価されます。リンクもありがとう-チェックする。
Paul Keating

回答:


10

エレガントな原則は単純な答えを提供します:

滑らかな曲面上のすべての点は、十分に大きなスケールで平坦です。

これは、座標のアフィン変更後(通常は座標の1つだけの再スケーリングを含む)、距離を計算するためのピタゴラスの定理や、垂線を見つけるための負の逆勾配の式など、ユークリッドジオメトリの式を使用できることを意味します。

球体の緯度と経度の座標(経度が特異になる極から離れている)では、東西方向にスケールを変更して、極に近づくにつれて経度の縮む長さを反映します。地球の球体モデルでは、その収縮は緯度の余弦によって与えられます。 これは単にプロットのアスペクト比の変更であり、それ以上のものではありません。

これは、南北の緯度が数度以下で、どちらの極にも近づかない地域で機能します。

したがって、必要なことは次のとおりです。

  1. すべての経度に典型的な緯度の余弦を掛けます。

  2. 垂線を計算します。

  3. 座標調整を元に戻します。

たとえば、飛行機の航跡が(lon、lat)=(-78、40)から(-79、41)になったとします。40.5のように、40〜41の範囲にある標準的な緯度を使用する場合があります。

ステップ1 調整された座標は、(-78 * cos(40.5)、40)=(-59.31167、40)および(-79 * cos(40.5)、41)=(-60.07207、41)です。

ステップ2 質問は、負の逆勾配法を使用してこれを行うことを提案します。それは正しいですが、場合によっては失敗します(勾配が無限大の場合)。ベクトル演算を使用する方がより一般的で強力です。計算方法は次のとおりです。

飛行経路の方向ベクトルは、最初から最後までの変位です。

v =  (-60.07207, 41) - (-59.31167, 40)
  =  (-0.7604, 1.0).

ベクトル(x、y)を時計回りに直角に回すと(y、-x)が生成されますが、右への垂直方向は

w = (1.0, 0.7604).

ピタゴラスの定理によれば、このベクトルの長さは、その係数の2乗の合計の平方根です。

|w| = sqrt(1^2 + 0.7604^2) = 1.256268

飛行機の飛行の始点からこのベクトルに沿って、たとえば0.2度移動します。開始点は(-59.31167、40)で、変位は0.2 / | w |です。時間w、最終的に

(-59.31167, 40) + 0.2 / 1.256268 * (1.0, 0.7604) = (-59.15247  40.12106).

ステップ3 調整を元に戻すには、結果のポイントの最初の座標を、ステップ1で使用したのと同じコサインで割ります。

(-59.15247/cos(40.5), 40.12106) = (-77.79064, 40.12106)

1:1のアスペクト比を使用してこれらのポイントをプロットすると、角度は直角ではなく鈍角に見えます。ただし、アスペクト比を1:cos(40.5)(約4:3)に変更すると、角度は正しく90度に見えます。等角投影(Googleのメルカトル図法を含む)を使用して点をプロットすると、角度も正しくなります。


2
これは素晴らしいです、whuber。どうもありがとう。これは、どこで問題が発生し、どのように問題を修正できるかを非常に明確に説明しています。垂直線を取得するためにMatlabの「方位角」と「レコン」関数を使用することになりましたが、これを行う方法のより詳細な第一原理の説明を見るのは良いことです。どうもありがとう。
Paul Keating
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.