手動で回転を逆にすると、うまくいくはずです。球座標系を回転するための式がどこかにあるはずですが、私はそれを見つけることができないので、ここに派生があります('回転座標系をマークします;通常の地理座標は普通の記号を使用します):
最初に、2番目のデータセットのデータを球面(lon '、lat')から(x '、y'、z ')に変換します:
x' = cos(lon')*cos(lat')
y' = sin(lon')*cos(lat')
z' = sin(lat')
次に、2つの回転行列を使用して2番目の座標系を回転させ、最初の「通常の」座標系と一致させます。座標軸を回転させるので、軸回転行列を使用できます。ECMWF定義で使用される回転方向に一致するように、ϑ行列の符号を反転する必要がありますが、これは標準の正の方向とは異なるようです。
座標系の定義で説明されている回転を元に戻しているため、最初にy =軸(回転グリニッジ子午線に沿って)= =-(90 + lat0)= -55度回転し、次にφ=-回転しますlon0 = z軸を中心に+15度):
x ( cos(φ), sin(φ), 0) ( cos(ϑ), 0, sin(ϑ)) (x')
y = (-sin(φ), cos(φ), 0).( 0 , 1, 0 ).(y')
z ( 0 , 0 , 1) ( -sin(ϑ), 0, cos(ϑ)) (z')
展開すると、これは次のようになります。
x = cos(ϑ) cos(φ) x' + sin(φ) y' + sin(ϑ) cos(φ) z'
y = -cos(ϑ) sin(φ) x' + cos(φ) y' - sin(ϑ) sin(φ) z'
z = -sin(ϑ) x' + cos(ϑ) z'
次に、次を使用して 'normal'(lat、lon)に変換します
lat = arcsin(z)
lon = atan2(y, x)
atan2がない場合は、atan(y / x)を使用してxとyの符号を調べることで自分で実装できます。
三角関数を使用する前に、すべての角度をラジアンに変換してください。そうしないと、奇妙な結果が得られます。それがあなたが好むものであれば最後に度に変換します...
例(回転した球座標==>標準の地理座標):
回転したCSの南極は(lat0、lon0)
(-90°、*)==>(-35°、-15°)
回転したCSの主子午線は、地理的に-15°の子午線です(北に向かって55°回転)
(0°、0°)==>(55°、-15°)
対称性では、両方の赤道が新しいCSで90°/ -90°、または地理座標で75°/ -105°で交差する必要があります
(0°、90°)==>(0°、75°)
(0°、-90°)==>(0°、-105°)
編集: whuberによる非常に建設的なコメントのおかげで答えを書き直しました。マトリックスと展開は同期化され、回転パラメーターに適切な符号を使用しています。マトリックスの定義への参照を追加。回答からatan(y / x)を削除しました。変換の例を追加しました。
編集2:デカルト空間に明示的に変換することなく、同じ結果の式を導出することが可能です。x、y、z結果の対応する表現で置換することができ、そして同じことのために繰り返すことができるx'、y'とz'。いくつかの三角関数のアイデンティティを適用すると、次の単一ステップ式が現れます。
lat = arcsin(cos(ϑ) sin(lat') - cos(lon') sin(ϑ) cos(lat'))
lon = atan2(sin(lon'), tan(lat') sin(ϑ) + cos(lon') cos(ϑ)) - φ