9.81 위도-경도-고도와 ECEF 좌표계 변환
1. 두 좌표계의 비교
위도-경도-고도(Latitude-Longitude-Altitude, LLA) 좌표계와 ECEF(Earth-Centered Earth-Fixed) 좌표계는 지구상의 위치를 표현하는 두 가지 표준 방법이다. 두 좌표계는 다른 형식을 가지지만 같은 위치를 나타내며, 서로 변환 가능하다.
1.1 LLA 좌표계
LLA는 회전 타원체 모델을 기반으로 한 측지 좌표계이다.
- 위도 \phi: -90° \leq \phi \leq 90°
- 경도 \lambda: -180° \leq \lambda < 180°
- 고도 h: 회전 타원체 표면으로부터의 거리
이 좌표계는 인간이 직관적으로 이해할 수 있으며, 지도와 호환된다.
1.2 ECEF 좌표계
ECEF는 지구 중심을 원점으로 하는 직교 좌표계이다.
- x: 본초자오선과 적도의 교점 방향
- y: 동경 90°와 적도의 교점 방향
- z: 북극 방향
이 좌표계는 직교이므로 수학적 연산이 단순하다.
2. WGS-84 회전 타원체 매개변수
LLA와 ECEF의 변환은 WGS-84 회전 타원체 모델을 기반으로 한다. 주요 매개변수는 다음과 같다.
- 준장축(반지름): a = 6378137.0 m
- 준단축: b = 6356752.3142 m
- 편평률: f = (a - b)/a = 1/298.257223563
- 첫 번째 이심률 제곱: e^2 = 2f - f^2 = 6.69437999014 \times 10^{-3}
- 두 번째 이심률 제곱: e'^2 = e^2/(1 - e^2)
3. LLA에서 ECEF로의 변환
이 변환은 직접적이며 닫힌 형태로 표현된다.
3.1 횡곡률 반지름
먼저 위도 \phi에서의 횡곡률 반지름(prime vertical radius of curvature)을 계산한다.
N(\phi) = \frac{a}{\sqrt{1 - e^2\sin^2\phi}}
이는 회전 타원체의 한 점에서 자오선에 수직한 평면이 회전 축과 만나는 거리이다.
3.2 ECEF 좌표 계산
x = (N + h)\cos\phi\cos\lambda
y = (N + h)\cos\phi\sin\lambda
z = (N(1 - e^2) + h)\sin\phi
이 공식은 회전 타원체의 매개변수와 위도, 경도, 고도로부터 직접 ECEF를 산출한다.
3.3 유도의 직관
위 공식의 유도는 회전 타원체 위의 점이 위도와 경도에 의해 어떻게 매개화되는지에 기반한다. 위도 \phi의 점에서 회전 타원체 표면의 정규 벡터(법선)가 자전 축과 만나는 점이 N(1 - e^2)\sin\phi/\sin\phi = N(1 - e^2)의 거리에 있다. 이 점으로부터 표면까지의 거리가 N이다. 고도 h는 표면에서 정규 방향으로 추가된 거리이다.
4. ECEF에서 LLA로의 역변환
ECEF에서 LLA로의 역변환은 비선형이며 일반적으로 반복 알고리즘이 필요하다. 그러나 닫힌 형태의 근사 공식도 존재한다.
4.1 경도의 직접 계산
경도는 x와 y 성분으로부터 직접 계산된다.
\lambda = \mathrm{atan2}(y, x)
이는 정확한 닫힌 형태이다.
4.2 위도의 반복 계산
위도는 다음의 반복으로 계산된다. 먼저 적도 평면 거리
p = \sqrt{x^2 + y^2}
를 정의한다. 초기 위도 추정:
\phi^{(0)} = \mathrm{atan2}\left(\frac{z}{p(1 - e^2)}, 1\right) = \mathrm{atan2}(z, p(1 - e^2))
반복 단계:
N^{(k)} = \frac{a}{\sqrt{1 - e^2\sin^2\phi^{(k)}}}
h^{(k)} = \frac{p}{\cos\phi^{(k)}} - N^{(k)}
\phi^{(k+1)} = \mathrm{atan2}\left(z, p\left(1 - \frac{e^2 N^{(k)}}{N^{(k)} + h^{(k)}}\right)\right)
이 반복은 빠르게 수렴하며, 통상 3-5회 반복이면 수 미터 정확도, 10회 정도면 mm 정확도를 얻는다.
4.3 고도의 계산
수렴된 위도로부터 고도를 계산한다.
h = \frac{p}{\cos\phi} - N
극지방(\phi = \pm 90°) 근처에서는 \cos\phi가 0에 가까워져 위 공식이 부정확해진다. 이 경우 다음의 대체 공식을 사용한다.
h = \frac{z}{\sin\phi} - N(1 - e^2)
5. Bowring의 닫힌 형태 공식
ECEF에서 LLA로의 닫힌 형태 근사 공식 중 가장 유명한 것은 Bowring(1976)의 공식이다.
5.1 Bowring의 위도 공식
매개 위도(parametric latitude) \beta를 다음과 같이 정의한다.
\tan\beta = \frac{z(1 - f)}{p}\left[1 + \frac{e'^2 b\sin^3\beta}{p - e^2 a\cos^3\beta}\right]^{-1}
이를 한 번의 반복으로 풀면 정확한 위도가 얻어진다.
\tan\phi = \frac{z + e'^2 b\sin^3\beta}{p - e^2 a\cos^3\beta}
이 공식은 한 번의 계산으로 mm 정확도를 제공한다.
5.2 Bowring 공식의 장점
- 반복이 필요 없는 닫힌 형태
- 매우 정확
- 빠른 계산
대부분의 GNSS 라이브러리가 Bowring 또는 그 변형을 사용한다.
6. 변환의 정확도
LLA와 ECEF 사이의 변환은 모델의 가정(WGS-84 회전 타원체)이 정확하다면 무한 정확도를 제공한다. 실용적으로는 부동 소수점 연산의 정확도에 의해 제한된다.
6.1 더블 정밀도
일반적인 더블 정밀도(64-bit float) 부동 소수점에서 변환의 정확도는 약 0.1 mm 수준이다. 이는 대부분의 응용에서 충분하다.
6.2 단일 정밀도
단일 정밀도(32-bit float)에서는 약 1 m 정확도이며, 정밀한 응용에는 부적합하다.
7. 변환의 응용
7.1 GPS 수신기
GPS 수신기는 내부적으로 ECEF에서 위치를 계산하지만, 사용자에게는 LLA로 출력한다. ECEF에서 LLA로의 변환이 매 위치 갱신마다 수행된다.
7.2 항법 시스템
항공기, 선박, 차량의 항법 시스템은 LLA와 ECEF 사이를 자유롭게 변환한다. 위치 데이터는 LLA로 표시되지만, 거리 계산이나 벡터 연산은 ECEF에서 수행된다.
7.3 측량과 GIS
지도, 측량, GIS 시스템은 LLA와 ECEF의 변환을 빈번하게 수행한다. 좌표 변환은 측량의 기본 연산이다.
7.4 위성 궤도 계산
위성의 궤도는 ECI(Earth-Centered Inertial) 좌표계에서 계산되지만, 지표면의 사용자에게 보고할 때는 LLA로 변환된다. ECI와 ECEF는 시간에 따른 회전(지구 자전)으로 연결된다.
8. ECEF의 추가 응용
8.1 거리 계산
두 LLA 점 사이의 직선 거리는 두 점의 ECEF 좌표 차이의 노름으로 계산된다.
d = \lVert \mathbf{p}_{1,ECEF} - \mathbf{p}_{2,ECEF} \rVert
이는 지구 중심을 통과하는 가장 짧은 직선 거리이다(터널 거리). 지표면을 따른 거리(대권 거리)와는 다르다.
8.2 벡터 연산
두 점 사이의 방향 벡터는 ECEF 차이로부터 직접 계산된다. 이는 위치 차이를 다루는 모든 연산에 사용된다.
8.3 좌표 회전
ECEF 좌표계의 직교성으로 인해 회전 행렬을 사용한 좌표 변환이 단순하다. ENU 또는 NED와의 변환에 사용된다.
9. 다른 측지 모델
WGS-84 외에도 여러 측지 모델이 존재한다.
9.1 NAD83 (North American Datum 1983)
북미 대륙의 측지 표준이다. WGS-84와 약간 다른 매개변수를 가진다.
9.2 ITRF (International Terrestrial Reference Frame)
국제 측지 표준이며, 지구 판 운동까지 고려한 시간 의존적 좌표계이다.
9.3 국가별 측지 모델
각 국가가 자체적인 측지 표준을 가질 수 있다(한국의 GRS80 등).
서로 다른 측지 모델 사이의 변환은 추가적인 매개변수와 변환 공식이 필요하다.
10. 변환 라이브러리
LLA-ECEF 변환을 제공하는 라이브러리는 다음과 같다.
- GeographicLib: C++의 정밀한 측지 변환 라이브러리
- PROJ: 다양한 좌표 변환을 지원하는 라이브러리
- Boost.Geometry: C++의 기하 라이브러리, 측지 변환 포함
- Astropy: Python의 천문학 라이브러리, 좌표 변환 지원
- GDAL: 지리 데이터 처리 라이브러리
이러한 라이브러리는 검증되어 있으며, 직접 구현하기보다 활용하는 것이 권장된다.
11. 참고 문헌
- NIMA Technical Report TR8350.2 (2000). “Department of Defense World Geodetic System 1984: Its Definition and Relationships with Local Geodetic Systems.”
- Bowring, B. R. (1976). “Transformation from Spatial to Geographical Coordinates.” Survey Review, 23(181), 323–327.
- Heiskanen, W. A., & Moritz, H. (1967). Physical Geodesy. Freeman.
- Misra, P., & Enge, P. (2011). Global Positioning System: Signals, Measurements, and Performance (Revised 2nd ed.). Ganga-Jamuna Press.
- Vermeille, H. (2002). “Direct Transformation from Geocentric Coordinates to Geodetic Coordinates.” Journal of Geodesy, 76, 451–454.
version: 1.0