GIS (Geographic Information System) 관련 용어 정의
GIS 도메인은 데이터 처리나 시스템 구현 관점에서도 하나의 전문 영역으로 분리할 수 있는 대상입니다. GIS 기반 프로그래밍을 할 일이 생겨서 관련 내용을 정리하려고 하는데 첫번째 편으로 용어에 대한 정리를 해보았습니다.
위도와 위선
위도는 지구상에서 적도를 기준으로 북쪽 또는 남쪽으로 얼마나 떨어져 있는지 나타내는 위치입니다. 위도의 단위는 도(°)이며, 북극점을 나타내는 90° N(북위 90도)부터 남극점을 나타내는 90° S(남위 90도)까지의 범위 안에 있습니다.
위선은 적도에 평행하게 지구 둘레를 따라 그은 가상적인 선으로, 위도를 나타내는 데 사용됩니다.
경도와 경선
경도는 지구상에서 본초 자오선을 기준으로 동쪽 또는 서쪽으로 얼마나 떨어져 있는지 나타내는 위치입니다. 경도의 단위는 도(°)이며, 180° E(동경 180도)부터 180° W(서경 180도)까지의 범위 안에 있습니다.
경선은 지구의 남극과 북극을 연결하는 지표상의 가상선으로 경도를 표시할 때 사용됩니다.
위도와 경도 요약정리
- 위도는 지도 상의 위치를 정확히 알기 위해 있는 가로선
- 경도는 지도 상의 위치를 정확히 알기 위해 있는 세로선
지리좌표계의 기본개념
위도는 적도를 기준으로 북과 남을 가로로 표시하는 도표입니다. 적도가 0도가 되는 것이며, 북쪽으로 올라갈수록 북위라고 표시하고, 남쪽으로 내려가면 남위라고 표시합니다. 따라서 북극은 북위 90도. 남극은 남위 90도가 되는 것 입니다. 영어로는 북위는 N(North)으로 표시하고, 남위는 S(South)로 표시합니다.
경도는 영국 옛 그리니치 천문대를 기준으로 동과 서를 세로로 표시하는 도표입니다. 그리니치 천문대에서 오른쪽으로 가면 동경이라고 하며, 왼쪽으로 가면 서경이라고 표시합니다. 동경과 서경이 만나는 180도 지점이 날짜가 변경되는 선입니다. 영어로는 동경은 E(East), 서경은 W(West)로 표시합니다.
위도는 지구의 자전축을 향하여 위선이 링 모양으로 줄어드는 모양새를 하기 때문에 링의 크기는 줄어들어도 위도간의 거리는 똑같습니다. 위도의 1도의 대략적인 거리는 111km입니다.
반면 경도는 지구의 자전축에 위아래로 걸고 360도 회전하기 때문에 링의 크기는 똑같지만 경선간의 거리는 적도와 극지방이 틀립니다. 경도의 1도의 거리는 적도에서는 111km이지만 극지방은 0m 입니다.
지리좌표계의 측정단위는 도, 분, 초 이며, 시계와 마찬가지로 60진법을 사용하고 아래는 독도에 대한 샘플 데이터 입니다.
독도 : 37°14'28.85"N 131°52'1.43"E
읽을때는 북위 37도 14분 28.85초 동경 131도 52분 1.43초 로 읽으면 되겠습니다.
지오이드(Geoid)란?
지도제작을 하기 위해서는 지구를 일정한 기준 하에 두어야 합니다. 하지만 지구는 완전한 구(球)가 아니라 적도반지름이 극반지름보다 약간 긴 일그러진 타원체이며, 지표면은 그 형상이 매우 불규칙하여 어떤 일정한 규칙에 따른 임의 점의 위치표시가 사실상 불가능합니다.
따라서 일정한 규칙에 따라 위치를 표현하기 위해서는 새로운 지구의 수학적 형상을 필요로 하는데, 측지학에서 정립한 각종 작업의 기준이 되는 이 새로운 지구의 수학적 모델을 지오이드(Geoid)라 합니다. 이는 중력방향에 직각인 등중력포텐셜면(작용하는 중력이 모든 곳에서 일정한 잠재력을 갖는 면) 중 평균해수면에 일치하는 것으로, 해양에서는 평균해수면과 일치하고 육상에서는 땅속을 통과하게 됩니다.
( 그림. 측지학적 관점에서의 지구의 형상 )
( 그림. 유럽 우주국에서 2011년 3월 31일 공개한 지오이드 )
통상 지도의 대부분의 좌표체계의 차이는 이 지오이드(Geoid)를 어떤 방법으로 정하는지에서부터 출발합니다.
평면직각좌표계란?
지도 라는 것은 3차원의 지구를 2차원의 평면으로 표시한 것이며, 2차원 좌표계를 일정한 범위로 통일되게 사용하기 위하여 정한 것을 평면직각좌표계, 또는 평면직교좌표계라고 합니다.
평면직각 좌표계는 전세계를 대상으로 통일되게 사용되는 경우(UTM좌표계)와 필요에 따라 정해진 기준으로 사용되는 경우가 있는데, 우리나라는 우리나라 고유의 평면직각좌표계 (TM좌표계) 를 가지고 있습니다.
UTM 좌표계
국제 횡메카토르 좌표계(Universal Transverse Mercator Grid System)는 1946년 미국의 육,해,공군이 군사지도를 공동으로 사용할 목적으로 군사지도의 투영법을 횡케르카토르 도법으로 채택한 것 입니다. 이는 전 세계를 대상으로 일정 구역을 고유번호로 분류하고, 구역 내에 기준 원점을 정하여 이로부터의 거리를 미터로 나타내는 방식 입니다.
지리좌표계가 위치를 위경도의 도,분,초로 표현하는 60진법을 사용하여 거리의 환산이 어려운 데 비하여, 이 좌표계는 10진법을 사용하여 거리의 환산을 간편하게 합니다.
TM 좌표계(우리나라 좌표계)
우리나라 좌표계는 우리나라에 맞게 여러가지 기준을 정하여 투영된 좌표계로 우리나라에만 적용되는 평면직각좌표계 입니다. 우리나라 좌표계는 한반도가 위치하고 있는 동경 124도 ~ 130도 범위를 북위 38도 상에서 경도 2도씩 3등분하여 3개의 구역을 구분하고 있습니다. 즉 동경 125도를 기준으로 동쪽으로 매2도씩 이동하면서 중앙자오선을 정하고, 그 중앙자오선과 북위 38도선과의 교점을 원점으로 정하여 평면직각좌표상에 투영합니다.
UTM 좌표계와 우리나라 좌표계는 횡메카토르 도법을 사용한다는 점과 가우스-크뤼거 투영공식을 사용한다는 공통점을 가지고 있지만, 투영공식에서 사용되는 몇 개의 상수가 다르다는 차이점이 있습니다.
TM좌표계는 다른 명칭으로 TM128 이라고도 부릅니다.
출처 : http://hoitallica.blogspot.com/2012/04/gis.html
카텍(Katech) 좌표계 (네이버지도 API)
구글좌표를 네이버에서 사용 중인 좌표로 변환 하고자 한다면, ‘WGS84 경위도 좌표 -> Bessel 경위도 좌표 -> TM128’ 순서로 변환을 해야합니다. 이는 네이버에서 쓰는 기본 좌표계가 카텍좌표계 이기 때문인데, 카텍좌표계는 TM좌표계와 유사한 필요성에 의해 주로 네비게이션 관련회사들이 사용하는 좌표계라고 합니다. 네이버 API 를 살펴보면 아래와 같은 코드를 확인하실 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
var map = new naver.maps.Map("map", { center: new naver.maps.LatLng(37.5666103, 126.9783882), zoom: 11 }), infoWindow = null; function initGeocoder() { var latlng = map.getCenter(); var utmk = naver.maps.TransCoord.fromLatLngToUTMK(latlng); // 위/경도 -> UTMK var tm128 = naver.maps.TransCoord.fromUTMKToTM128(utmk); // UTMK -> TM128 var naverCoord = naver.maps.TransCoord.fromTM128ToNaver(tm128); // TM128 -> NAVER infoWindow = new naver.maps.InfoWindow({ content: '' }); map.addListener('click', function(e) { var latlng = e.coord, utmk = naver.maps.TransCoord.fromLatLngToUTMK(latlng), tm128 = naver.maps.TransCoord.fromUTMKToTM128(utmk), naverCoord = naver.maps.TransCoord.fromTM128ToNaver(tm128); utmk.x = parseFloat(utmk.x.toFixed(1)); utmk.y = parseFloat(utmk.y.toFixed(1)); infoWindow.setContent([ '<div style="padding:10px;width:300px;font-size:14px;line-height:20px;">', '<strong>LatLng</strong> : '+ latlng +'<br />', '<strong>UTMK</strong> : '+ utmk +'<br />', '<strong>TM128</strong> : '+ tm128 +'<br />', '<strong>NAVER</strong> : '+ naverCoord +'<br />', '</div>' ].join('')); infoWindow.open(map, latlng); }); } naver.maps.onJSContentLoaded = initGeocoder;
보시는 바와 같이 위/경도 데이터를 UTMK->TM128->Naver(Katech) 좌표로 변환하는 내용이 있습니다.
마치며...
몇가지 자료를 참고하여 핵심적인 용어 부분만 정리하였으나, 더 자세한 정보는 아래 링크를 참조하시기 바랍니다. 또한, GIS 용어의 개념을 정리한 이유는 GIS 에서 수 많은 데이터를 위/경도 기준으로 표현하고자 할 때, 데이터가 많은 경우 표현하기 어려운 상황이 발생하게 되는데, 이를 해결하기 위한 Rectangular 형태의 Aggregation Function 을 Hive UDF 로 구현하기 위해서 였습니다. 관련 내용은 다음글에 공유해 보도록 하겠습니다.
참고자료
- 위도와 경도 : http://tip.daum.net/question/71096807
- WGS84와 GRS80의 차이 : http://linuxism.tistory.com/833 [linuxism]
- TM & UTM 비교 : http://woof.tistory.com/7
- GIS좌표계와 대한민국좌표계 : http://hoitallica.blogspot.com/2012/04/gis.html
- http://www.androidpub.com/1318647
- http://javaexpert.tistory.com/142