측지·좌표계

자오선 수차 보정

한 줄 요약

로컬 평면 좌표계의 "위쪽"(Grid North)과 지구상의 실제 "북쪽"(True North) 사이의 회전 오차를 보정하는 과정. 보정하지 않으면 모델이 미세하게 회전되어 배치된다.

Grid North와 True North는 다르다

지도를 펼치면 "위쪽이 북쪽"이라고 생각한다. 그러나 이것은 근사다.

로컬 평면 좌표계(예: EPSG 5186)는 특정 경도선(중앙 자오선)을 기준으로 평면에 투영한 것이다. 이 투영에서 "위쪽"은 Grid North(도북)라고 부르며, 중앙 자오선 위에서만 실제 북쪽(True North, 진북)과 일치한다.

중앙 자오선에서 동쪽이나 서쪽으로 벗어날수록, Grid North와 True North 사이에 회전 오차가 발생한다. 이 오차가 자오선 수차(Meridian Convergence, γ)다.

쉽게 말하면, 서울에서 건설 현장의 "북쪽"이라고 표시한 방향이, 지구본 위에서 보면 실제 북극 방향과 미세하게 틀어져 있다는 것이다.

오차의 크기

자오선 수차는 다음 공식으로 계산된다:

γ = arctan(tan(Δλ) × sin(φ))

여기서:

  • Δλ: 해당 지점의 경도와 중앙 자오선 경도의 차이
  • φ: 해당 지점의 위도

EPSG 5186의 중앙 자오선은 경도 127도다. 서울(약 127도)은 중앙 자오선과 거의 일치하므로 자오선 수차가 거의 0에 가깝다. 그러나 부산(약 129도)이나 인천(약 126.5도)처럼 중앙 자오선에서 벗어나면, 수차가 0.5~1도 이상이 될 수 있다.

1도의 회전 오차는 작아 보이지만, 수백 미터 규모의 구조물에서는 끝단에서 수 미터의 위치 차이로 나타난다.

왜 문제가 되는가

IFC(BIM) 데이터는 로컬 평면 좌표계에서 설계되므로, 모델의 방향이 Grid North 기준이다. 이 모델을 Cesium 지구본 위에 올릴 때, Cesium은 True North 기준으로 모델을 배치한다.

자오선 수차를 보정하지 않으면, 모델이 미세하게 회전되어 배치된다. 교량의 경우 양 끝이 도로와 어긋나 보이고, 파이프라인의 경우 연결부가 맞지 않아 보인다.

이 문제가 특히 까다로운 이유는 오차가 미세해서 원인을 특정하기 어렵다는 것이다. 모델이 90도 돌아가 있다면 바로 알아차리겠지만, 0.5~1도 정도의 회전은 "뭔가 살짝 이상한데 왜 그런지 모르겠다"는 수준이다. 좌표 변환 로직의 버그인지, 원본 데이터의 문제인지, 아니면 다른 원인인지 구분하기 어렵다.

보정 방법

로컬 평면 좌표계의 모델을 Cesium 지구본에 배치할 때, ENU(East-North-Up) 좌표계에서 ECEF 좌표계로 변환하는 회전 행렬을 적용한다.

이 보정은 로컬 좌표계의 3D 모델을 글로벌 지구본에 배치하는 과정에서 필요하다. 각 타일의 좌표를 ECEF로 변환할 때 자오선 수차를 함께 반영하여, 모델이 지구본 위에서 정확한 방향으로 배치되도록 한다.

지오이드고 보정과의 관계

좌표계 변환 노드에서 다룬 수평 좌표 변환(EPSG → WGS84 → ECEF) 위에, 두 가지 추가 보정이 필요하다:

  • 지오이드고 보정: 수직(높이) 방향의 보정. 정표고 → 타원체고.
  • 자오선 수차 보정: 수평(회전) 방향의 보정. Grid North → True North.

두 보정은 독립적이다. 지오이드고 보정만 하면 모델의 높이는 맞지만 방향이 틀어지고, 자오선 수차 보정만 하면 방향은 맞지만 높이가 틀어진다. 두 보정을 모두 적용해야 모델이 정확한 위치와 방향으로 배치된다.

이 경험에서 추출한 원칙

  1. "미세한 오차"가 가장 찾기 어렵다. 극적인 오류(모델이 반대편에 나타남)는 바로 원인을 추적할 수 있지만, 0.5~1도의 회전 오차는 "뭔가 이상한데 왜인지 모르겠다"는 상태를 만든다. 측량/GIS 도메인의 기초 지식(자오선 수차, 지오이드고)을 모르면 이 원인에 도달하기까지 상당한 시간이 걸린다.

  2. 좌표 변환은 수평(x, y)만으로 끝나지 않는다. 수평 좌표(EPSG → ECEF)를 완벽하게 변환해도, 수직(지오이드고)과 회전(자오선 수차)을 빠뜨리면 모델이 가라앉거나 틀어진다. 좌표 변환은 "위치 + 높이 + 방향" 세 가지를 모두 다뤄야 완전하다.