티스토리 뷰

컴퓨터로 지구 또는 지구안에 있는 무언가를 표현하려면 경도, 위도같은 좌표가 필요하다.

  • Cartesian Coordinates (데카르트 좌표계)
  • Geographic Coordinates (지리적 좌표계)

 

Geographic Coordinates (지리적 좌표계)

  • Cesium에서는 Cartographic 객체
  • spherical coordinate: (azimuth, inclination, radius) 로 표현 - (방위각, 경사도, 반경)
  • geographic coordinates : (longitude, latitude, height) 로 표현 - (경도, 위도, 높이)
    • 경도: 서쪽에서 동쪽으로의 각도 (기준선 = 본초 자오선)
      • 본초 자오선 = 0º
      • 서쪽 = -180º
      • 동쪽 = +180º
    • 위도: 남쪽에서 북쪽으로의 각도 (기준선 = 적도)
      • 적도 = 0º
      • 남반구 = -90º
      • 북반구 = +90º
    • 높이: 표면 위 또는 아래로의 선형거리
  • 대부분의 벡터 데이터는 Geographic 으로 표현
    • GPS 등에 Geographic 이용

 
경위도 (0,80)에서 (10,90)의 면적과 (0,0)에서 (10,10)을 비교해보자. 얼핏보면 각도의 제곱이 같기 때문에 면적이 같을 것 같다.

하지만 지구는 3차원 타원체다. 즉, 위치에 따라 편평률이 다르기 때문에 경위도 (0,80)에서 (10,90) 면적과 (0,0)에서 (10,10) 면적은 서로 다르다.
 
따라서 지리적 그리드 테셀레이션에서와 같이 극 근처의 균일한 경도/위도 그리드 오버샘플을 기반으로 하는 알고리즘이 필요하다. (나중에 설명)
 

사람들은 경, 위도에 익숙하다. 예를 들어, 대한민국 경위도는 127º, 37.5º 이다.
하지만 지구의 중심을 기준으로 대한민국의 데카르트 좌표는 다음과 같다.

 

X ≈ −3,044,804 m,
Y ≈ 4,043,821 m,
Z ≈ 3,884,000 m
 
사람들은 이런 표현에 익숙하지 않다. 하지만 컴퓨터는 이런 방식을 통해 무언가를 나타낸다.
대한민국 경위도를 데카르트좌표로 변환하는 방법을 알아보자.


 

원점을 중심으로 구의 방정식: xs2+ys2+zs2=r2 (2.1)

 
1. 방정식 (2.1)을 만족하는 점(xs,ys,zs)구의 표면(surface)에 있다.
2. 구(sphere)에 있는 점의 경우, 점을 원점을 기준으로 벡터로 취급하고 정규화 하면 표면 법선을 구할 수 있다.
 
지구를 구로 표현하면 계산이 용이하겠지만, 지구는 타원체이기에 타원체 방정식을 사용하는 것이 더 정밀하고 유연하다.
 

타원체 방정식: xs2a2+ys2b2+zs2c2=1 (2.2)

 
1. 타원체는 각각 X축, Y축, Z축을 따라 세개의 반지름(a, b, c)로 정의된다.
2. 방정식 (2.2)를 만족하는 점(xs,ys,zs)타원체의 표면(surface)에 있다.
 

타원체의 한 점에서 지구 중심을 기준으로 법선을 그리면 이를 Geocentric이라고 한다.
하지만 타원체는 곡률이 존재하기 때문에, Geocentric대부분 점에 대해 표면에 수직이 아니다.
 
따라서 타원체의 한 점에서 지구 중심이 아닌 적도(X,Y) 평면에 법선을 그려야 한다. 이를 Geodetic이라고한다.
Geodetic은 타원에 한 점에 대해 실제 법선이다.
 
구의 경우, Geodetic, Geocentric은 동일하다.
타원체는 대부분 점에 대해 Geodetic, Geocentric이 크게 다른데, 45º에서 가장 크게 다르다.

 
표면 법선 벡터(surface normal vector) = ns^ 구하기

m=(xsa2,ysb2,zsc2)
ns^=m||m||
 

Geocentric 오차

지구 중심에서 특정 벡터 사이의 각도 : ϕc = geocentric
지구 표면에서 특정 벡터 사이의 각도 : ϕd = geodetic

위경도를 geocentric 또는 geodetic으로 구한 후, 높이(h)는 geodetic을 이용해서 구해야 한다.
 
높이(h)를 geocentric으로 구할 경우 우주와 같이 높이가 높은 곳에서 오차가 발생한다.
특히 geocentric, geodetic 각도 차이가 클 수록 오차가 커진다.


 

좌표 변환

Geographic coordinates → WGS84

실제 지리 데이터가 저장될 때는, 보통 경위도(지리적 좌표)로 저장된다.
 
컴퓨터에서 지구는 보통 WGS84 좌표계로 렌더링하기 때문에 경위도를 WGS84 좌표로 변환하는 작업은 필수적이다.
 
주의: WGS84 또한 Geographic coordinates 중 하나다.

  • 전 세계에서 가장 널리 사용되는 지리 좌표계 (GPS 표준)
  • 즉, WGS84는 Geographic Coordinates 중 하나일 뿐
  • GCS(Geographic Coordinate System) ≠ WGS84
  • WGS84 ⊂ GCS
  • 원점: 지구 중심(Geocentric)
  • 단위: 도(º)
  • 좌표값: (위도, 경도, 타원체 고도)

 

 

ns^=cosϕcosλi^+cosϕsinλj^+sinϕk^ (2.3)

구(Sphere)형 모델에서 유도된 형태이며, 완전한 타원체 모델을 표현하기 위해 추가 변환이 필요하다.
 

ns=xsa2i^+ysb2j^+zsc2k^ (2.4)

타원체 표면에서의 법선 벡터를 나타내는 식  (단위벡터 아님)
 

ns^=γns (2.5)

임의의 γ를 곱해 단위벡터를 찾을 수 있다.
 

ns^=γ(xsa2i^+ysb2j^+zsc2k^) (2.6)

(2.4)의 법선 벡터를 (2.5)의 관계를 통해 단위 벡터로 변환하는 식
 

nx^=γxsa2
ny^=γysb2 (2.7)
nz^=γzsc2

단위 법선 벡터의 성분을 타원체 좌표 (xs,ys,zs)와 타원체 반지름 (a,b,c)로 나타낸 식
 

xs=a2nx^γ
ys=b2ny^γ (2.8)
zs=c2nz^γ

단위 법선 벡터 성분을 이용하여 타원체 표면의 좌표 (xs,ys,zs)로 나타낸 식
 

타원체 방정식 xs2a2+ys2b2+zs2c2=1(xs,ys,zs) 대입

(a2nx^γ)2a2+(b2ny^γ)2b2+(c2nz^γ)2c2=1

 
정리하면

a2nx^2+b2ny^2+c2nz^2=γ2 (2.9)
γ=a2nx^2+b2ny^2+c2nz^2
  • 정규화 상수 γ를 구하는 식

 
또한

h=hns^
h 는 타원체 표면에서 법선 방향으로의 변위 벡터
즉, h 는 타원체 표면의 한점에서 법선 벡터 방향으로의 거리 h 만큼 떨어진 점의 위치 변화h 는 타원체 표면에서 해당 점까지의 거리

 

r = rs + hns^ (2.10)
  • 최종적으로, 타원체 표면 rs으로부터 높이 h만큼 떨어진 점의 위치를 결정하는 식

 

WGS84 → Geographic coordinates

일반적으로 WGS84에서 지리적 좌표로 변환하는 것은 반대 방향으로 변환하는 것 보다 더 많은 작업이 필요하므로 여러 단계로 나눈다.

ns^=ns||ns|| (2.4 참고)
λ=arctanny^nx^,
ϕ=arcsinnz^||ns||

 

두 점 r0, r1을 Geocetnric, Geodetic 두 방식으로 나눠 크기를 조정할 수 있다.
 
(a) : Geocentric Nomrmal을 따라 타원체 중심의 벡터가 타원체와 교차하여 표면지점을 결정
(b) : Geocentric Nomrmal을 따라 반복 작업(뉴턴-랩슨법 사용)을 통해 스케일링

뉴턴-랩슨법 특징
1. 점진적으로 정답을 찾아가는 근사 해법이라서 빠르게 수렴함.
2. 삼각함수 없이 계산 가능 ⇒ 효율적이다.

 
 
Geocentric Nomrmal (a) 특징

  • 계산이 간단함 (직선 방정식과 타원 방정식으로 해결 가능)
  • 벡터 연산만 사용하므로 빠르게 계산 가능
  • WGS84에서 지리 좌표계로 변환 했을 때 의 정확도를 보장할 수 없다.
    • 지구는 완벽한 구가 아니라 타원체 이기 때문.
  • 따라서, Geocentric Nomrmal이 아닌 Geodetic Normal(b)을 사용해야 한다.

 
Geodetic Normal (b) 특징

  • 정확도가 높음 (지구 타원체의 실제 표면을 고려함)
  • WGS84 좌표 변환에서 가장 많이 사용됨
  • 반복 연산이 필요함 (하지만 뉴턴 랩슨법을 통해 빠르게 수렴함)

r=r0
r=(x,y,z) 지구 중심에서의 위치를 의미
rs=βr
β = 크기 조정(scaling) 계수로, r을 조정하여 표면에 맞춤
β=1x2a2+y2b2+z2c2 (2.11)

  • rs 의미
    • 주어진 점 (x,y,z)이 지구 중심에서 어디에 있든, 이 점을 타원체 표면으로 옮겨야 함
    • 즉, (x,y,z) 를 적절한 비율로 축소(Scaling)하여 (xs,ys,zs)를 만들고 싶음
    • 이때, 스케일링 계수를 β 로 두고 아래처럼 표현
      xs=βx
      ys=βy (2.12)
      zs=βz
    • 즉, β값을 곱해서 현재 점을 표면으로 투영하는 방식
  • β 의 역할
    • 현재 점을 지구 중심 방향으로 투영하여, 타원체 표면 위로 스케일링하는 역할
    • 만약 주어진 점이 지구 표면과 가깝다면, β1에 가까워짐
    • 만약 주어진 점이 지구 표면보다 훨씬 멀다면, β가 작아져서 점을 더 많이 축소함
  • β 값 유도 과정 (2.11)
    • (xs,ys,zs)는 타원체 표면에 있으므로 타원체 방정식을 만족해야한다.β2 값에 대해 정리하면 정리하면β 값은 양수여야 하므로
    • β=1x2a2+y2b2+z2c2 (2.11)
    • β2(x2a2+y2b2+z2c2)=1
    • (βx)2a2+(βy)2b2+(βz)2c2=1

r=rs+h (2.13)
r: 임의의 점 벡터 (구하고자 하는 점 위치)
rs: 표면에 있는 점 벡터
h: 표면 점으로부터 임의의 점 높이 벡터

  • hns 와 같은 방향을 가지지만 크기(magnitude)가 다르다.
    h=αns
    ns: 지구 중심에서 표면점에 대해 정규화되지 않은 벡터
  • ns=xsa2i^+ysb2j^+zsc2k^ (2.14)

이 식을 (2.13)에 대입하면
r=rs+αns
rrsαns를 이용해서, 세 개의 스칼라 방정식( x,y,z) 으로 나타내면

x=xs+αxsa2,
y=ys+αysb2,
z=zs+αzsc2

 
이 식을 인수 분해 하면

x=xs(1+αa2),
y=ys(1+αb2),
z=zs(1+αc2)

 
이 식을 표면에 있는 점을 기준으로 재배열 하면

xs=x1+αa2,
ys=y1+αb2, (2.15)
zs=z1+αc2

즉, 알고 있는 r=(x,y,z)타원체의 반지름 (a,b,c)을 통해 (xs,ys,zs)를 나타냈다.
식 (2.15) 에서 모르는 미지수는 α 이다.
 
즉, 미지수 α만 찾으면 WGS84 좌표에서 임의의 점 r에 대해Geographic 좌표로 변환된 r을 찾을 수 있다.
미지수 α를 찾기 위해 타원체 방정식(S)(xs,ys,zs)를 대입한다. (2.17)
 

S=xs2a2+ys2b2+zs2c21=0 (2.16)

 

S=x2a2(1+αa2)2+y2b2(1+αb2)2+z2c2(1+αc2)21=0 (2.17)

α0=(1β)||r||||ns||

  • (1β) 의미
    • β 값은 (2.11 참고)
    • 현재 점이 표면에서 얼마나 떨어져 있는지를 나타내는 비율
    • β가 크면 현재 점이 표면에 가까워짐
    • β가 작으면 현재 점이 표면에서 멀리 떨어져짐
  • ||r||||ns|| 의미
    • 현재 좌표에서 법선 방향으로 얼마나 이동해야 하는지를 계산하는 기준
    • ||r||:중심으로부터 임의의 점 (x,y,z)벡터 r 크기
      • 원래 주어진 WGS84 좌표의 벡터 크기
    • ||ns||:중심으로부터 지구 표면에 있는 점 (xs,ys,zs)벡터 ns크기
      • 표면 좌표에서의 법선 벡터 크기
  • 뉴턴 랩슨법
    • 초기 값 : α0
    • αn+1=αnS(αn)S(αn)해당 작업을 통해 α를 찾고, (2.17)에 대입하여 0과 근사해지는 값을 찾음.
      • 코드 예시
        • α를 대입해 S 값이 0과 가까운 1010보다 작은 경우까지 반복
    • α=αSSα
    • Sα=2[x2a4(1+αa2)3+y2b4(1+αb2)3+z2c4(1+αc2)3]
  • 타원체 방정식(S)과 뉴턴-랩슨법을 이용
  • SSα를 평가하여 0에 가까워지는 α를 찾는다.
  • 즉 미지수 α를 근사해, 현재 위치와 타원체 표면 사이의 거리를 근사적으로 계산한다.