회전을 수동으로 되 돌리면 트릭을 수행해야합니다. 구 좌표계를 어딘가에 회전시키는 공식이 있어야하지만 찾을 수 없으므로 파생입니다 ( ' 회전 좌표계를 표시합니다. 일반 지리적 좌표는 일반 기호를 사용합니다) :
먼저 다음을 사용하여 두 번째 데이터 세트의 데이터를 구형 (lon ', lat')에서 (x ', y', z ')로 변환하십시오.
x' = cos(lon')*cos(lat')
y' = sin(lon')*cos(lat')
z' = sin(lat')
그런 다음 두 개의 회전 행렬을 사용하여 두 번째 좌표 시스템을 회전시켜 첫 번째 '정상'좌표와 일치하도록합니다. 좌표축을 회전 시켜 축 회전 행렬을 사용할 수 있습니다 . 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'
그런 다음 다음을 사용하여 '정상'(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(ϑ)) - φ