경위도 좌표, 도분초 포맷 ⇆ 도 포맷 변환 엑셀(파일) 및 과정

목차
1. 엑셀
2. 계산 과정
 2-1. 도분초 포맷 -> 도 포맷
 2-2. 도 포맷 -> 도분초 포맷


1. 엑셀

Excel screen shot

첨부 : coordinates.zip


2. 계산 과정

도분초를 시계의 시분초로 생각하면 편하다.
12° 30' 30.000" -> 12시 30분 30.000초

12시 30분 (12° 30' 0" ) = 12.5시 (12.5°)
12.5시 (12.5°) = 12시 30분 (12° 30' 0" )

따라서 아래 계산 과정은 편하게 접근하기 위해 초반 부분은 도(Degree)를 시(Hour) 개념으로 대체하여 설명해 보았다.

*도 포맷은 DD(decimal degrees)
*도분초(DMS) 포맷의 도는 D(degrees).


2-1. 도분초 포맷 -> 도 포맷 (DMS -> DD)

예제 값: 12° 30' 30.000" (12도 30분 30초)


(1) 도(D) 부분을 도 포맷(DD)으로 (시를 시로)
12° 30' 30.000"
같다. 그냥 그대로 12.

(2) 분(M) 부분을 도 포맷(DD)으로 (분을 시로)
12° 30' 30.000"
1시간은 60분(1도는 60분)이기에 60으로 나누어 주면 된다.

60분 = (60/60)시 = 1시
30분 = (30/60)시 = (1/2)시 = 0.5시
15분 = (15/60)시 = (1/4)시 = 0.25시
1분 = (1/60)시 = 0.0166666...시

(3) 초(S) 부분을 도 포맷(DD)으로 (초를 시로)
12° 30' 30.000"
초를 분으로 변환하고 그걸 다시 시로 변환한다. 그러니깐 60으로 나누고(초->분) 한 번 더 60으로 나눠준다(분->시). 즉, 60으로 두 번 나눔.

30초 = (30/60)분 = (1/2)분 = ((1/2)/60)시 = 0.008333...시
60초 = (60/60)분 = 1분 = (1/60)시 = 0.0166666...시
1800초 = (1800/60)분 = 30분 = (30/60)시 = 1/2시 = 0.5시
3600초 = (3600/60)분 = 60분 = (60/60)시 = 1시

(4) 결과적으로
12° 30' 30.000" (12시 30분 30.000초)는,
12 + 0.5 + 0.008333.... = 12.508333...이 된다. 도 포맷으로 변환 완료.


2-2. 도 포맷 -> 도분초 포맷 (DD -> DMS)

마찬가지로 시계를 생각하면 되는데, 역순이라 살짝 더 어렵게 느껴질 수 있다. 60으로 나누는 대신 60을 곱하는 방향이다. 소수점 부분에 60을 곱하면 정수 부분이 분(M)이 되고, 분을 만들고 남은 소수점 부분에 60을 다시 곱하면 초(S)가 된다.

사용한 예제 값은 위에 나온 12.508333....을 사용했고 12° 30' 30.000" 이 나오는지 확인해 보았다. 물론, 12.5083333333...을 12.508333으로 소수점 6자리까지만 사용했기 때문에 값이 정확히 일치하지는 않는다는 점을 유념하자.

예제 값: 12.508333°


(1) 도 포맷(DD)에서 도(D) 부분 변환
12.508333°

12.508333에서 정수 부분만 남기면 된다. 즉 12.

엑셀에서는 ROUNDDOWN 함수를 써도 되긴 하는데 함수 이름도 길고 기준점(num_digits)도 정의해야 돼서 번거로우니 쉽게 정수로 만들 수 있는 INT 함수가 더 편하다.

=INT(12.508333) = 12

(2) 도 포맷(DD)에서 분(M) 부분 변환
12.508333° (소수점 부분에 분과 초가 합쳐져 있음)

앞서 도(DD)에서 도(D)를 구했기 때문에 나머지 부분(즉, 소수점 부분)에서 계산.
0.508333의 소수점 부분에 60을 곱해 정수화 해준다.
즉, 0.508333에 60을 곱한 후 소수점을 버려 정수 부분만 남긴다.

=INT((12.508333-12)*60)
=INT(30.49998)
=30

(3) 도 포맷(DD)에서 초(S)로 부분 변환
12.508333° (소수점 부분에 분과 초가 합쳐져 있음)
앞서 도(DD)에서 도(D)와 분(M)을 구했기 때문에, 분을 구하고 남은 소수점 부분에서 계산.
즉, 앞서 분(M)을 만들고 버려졌던 소수점에 60을 곱한다.

분을 시로 만들고 버려진 소수점은,
=((12.508333-12)*60)-INT((12.508333-12)*60)
=(0.508333*60)-INT(0.508333*60)
=30.49998-30
=0.49998

여기에 60을 곱해주면 된다. 즉,
=(((12.508333-12)*60)-INT((12.508333-12)*60))*60
=((0.508333*60)-INT(0.508333*60))*60
=(30.49998-30)*60
=0.49998*60
=29.998

(4) 결과적으로
12° 30' 29.998" 가 된다.

30"로 딱 떨어지지 않고 29.998"가 된 이유는 앞서 설명했듯이 계산 값으로 사용한 12.508333이 사실은 12.50833333333.....이었기 때문.

Categories GIS

카테고리의 다른 글

  1. QGIS. $area와 area 함수의 면적 값 차이
  2. QGIS. 하나의 폴리곤 중심점에서 다른 여러 폴리곤들의 중심점까지 최단선 그리고 거리 구하기
  3. QGIS. 포인트(여러 개)와 라인(1개) 간의 최단 최근접 거리 구하고 그리는 2가지 방법
  4. QGIS 속성 테이블의 추가 정보를 엑셀에서 가져와 붙이기
  5. QGIS 여러 개의 폴리곤이 공유하는 하나의 꼭짓점 한번에 움직이기 (편집)

댓글 남기기