CAFE

OruxMaps 기초

네이버지도의 타일변환

작성자자이|작성시간14.02.15|조회수966 목록 댓글 4

http://helloworld.naver.com/helloworld/1174 



지도 이미지 타일

네이버 지도 서비스에서 사용하는 하나의 이미지 파일(이미지 타일)의 크기는 256픽셀 X 256픽셀이다. 사용자들이 보고 있는 한 장의 지도 화면은 이런 이미지 타일을 조합하여 하나의 지도 화면으로 보여주는 것이다.

122111_0300_1.png

지도 레이어

벡터 데이터는 데이터의 표현 방식이나 분석 방식에 따라 상세하게 분류할 수 있다. 이렇게 분류된 데이터 집합을 지도 레이어라 부른다. 다음 그림에서 볼 수 있듯이 레이어는 정의된 형태의 범례와 같이 지도 상에 표현된다. 현재 네이버 지도 서비스에서 사용하는 레이어는 약 500개이다.

122111_0300_6.png

그림 6 지도 레이어와 범례

레이어는 지도를 표현할 뿐만 아니라 데이터를 분석할 때도 사용한다. 예를 들어 '성남시 정자동' 안에 있는 건물의 개수, 도로의 총 길이, 초등학교의 개수 혹은 특정 레이어 존재 유무를 분석할 수 있다. 이런 레이어를 그리는 순서 또한 매우 중요하다. 아래 그림과 같이 각 레이어를 순서대로 렌더링하여 하나의 지도 화면으로 만다.

122111_0300_7.png

지도 이미지 타일의 구성

일반 지도는 각 레벨별 256픽셀 X 256픽셀 크기의 격자 형태의 지도 이미지 타일로 만들어진다. 위에서 14레벨에서 1픽셀이 표현하는 실제 크기는 0.25m라고 했다. 한반도의 세로의 크기가 500km이고 가로의 크기가 400km라고 가정해 보자. 그럼 이미지 타일 한 장에 가로와 세로의 크기는 64m(256 x 0.25m)를 표현한다. 그럼 총 세로 열의 개수는 7812장(500,000 ÷ 64)이고 가로 열의 개수는 6250장(400,000 ÷ 64)으로 14레벨에서 사용되는 이미지 타일의 개수는 총 48,825,000장(7812 X 6250)이 필요하다.

122111_0300_10.png

그림 10 이미지 타일 구성

13레벨은 1픽셀이 표현하는 실제 크기가 0.5m이기 때문에 14레벨보다 가로와 세로가 각각 반으로 감소하므로 가로 3125개, 세로 3906개, 총 12,206,250개의 타일이 필요하다. 이렇게 1레벨까지 계산하게 되면 위 그림과 같이 14레벨에서 1레벨로 갈수록 이미지 타일 개수가 4분의 1씩 줄어든다.

122111_0300_11.png

그림 11 각 레벨별 이미지 타일 구성

위와 같이 이미지 타일의 개념적인 구성 방식에 대해 알아봤으니 네이버 지도 이미지 타일의 실제 구성 방식에 대해 알아보자. 네이버 지도 서비스의 좌표 기반은 UTM-K라는 직각좌표계이다. 우리가 외부에서 많이 보던 좌표계인 위도 38도, 경도 127.5도와 같은 지구 타원체의 도 단위(degree)의 좌표가 아니라 38도 127.5도를 원점이라 가정하고 만든 직각좌표계를 사용하고 있다.

네이버 지도 이미지 타일의 각 모서리 부분은 이 UTM-K 기반에 절대 좌표에 대응되어 있으며 인덱스 타일 번호가 시작되는 곳은 아래 그림과 같이 중국 난징 아래 부분을 기점으로 이미지 타일 인덱스 번호를 행(row)과 열(col)로 부여했다. 행, 열 번호가 (0, 0)인 이미지 타일의 왼쪽 하단 모서리 좌표 값(x, y)은 (34,090,112, 1,4192,896)으로 규정했다.

122111_0300_12.png

그림 12 1레벨 이미지 타일 구성

위에서 언급한 레벨별 이미지 타일 규칙을 적용하면 실 좌표에서 이미지 타일로 이미지 타일에서 실 좌표로 변환할 수 있다. 예를 들어 13레벨에서 (200, 400)번째 이미지 타일의 왼쪽 아래 모서리 좌표는 아래와 같은 방법으로 구할 수 있다.

위에 정의한 값을 기준으로 상대 좌표를 계산할 수 있는데 X축의 상대 좌표는 25,600m(200번째 X 128m)로 계산되고 Y축 상대 좌표는 51,200m(400번째 X 128m)로 변환한다. 이와 같이 상대 좌표 X(25,600), Y(51,200)를 구할 수 있고 여기서 절대 좌표를 구하려면 위에 언급한 중국 난징 아래 쪽 이미지 타일(0, 0)의 왼쪽 하단에 대응된 UTM-K 절대 좌표를 참고하여 실제 좌표 값을 아래와 같이 얻는다.

X = 34,090,112 + 25,600 = 34,115,712

Y = 1,4192,896 + 51,200 = 14,244,096

실제 좌표에서 인덱스 번호를 얻으려면 역으로 계산한다.

Google 지도, bing Maps 등 전세계적인 포털 지도 서비스에서 이와 같은 방법을 사용하고 있으며 각 나라별 포털 사이트별 기준이 되는 좌표 체계가 있어 해당하는 좌표 체계로 변환을 할 수 있다면 각 지도를 겹치게 해서 조합할 수 있다.



맵타일의 X,Y좌표에서 

X(경) 는 같고 

Y(위)는 2^(Z)-1-Y     (Z는 줌레벨, Y는 구글지도의 Y값)

네이버지도는  행, 열 번호가 (0, 0)인 이미지 타일의 왼쪽 하단 모서리 

좌표 값(x, y)은 (34,090,112, 14,192,896)으로 규정했다.

다음검색
현재 게시글 추가 기능 열기
  • 북마크
  • 신고 센터로 신고

댓글

댓글 리스트
  • 작성자로이드 | 작성시간 14.02.16 감사 합니다. 자세히는 몰라도... 그래도 대충 개념은 어느정도 파악 되는 것 같습니다.
  • 작성자둥글 | 작성시간 15.05.17 이해는 못하겠고 단지 읽어보고 통과~~
    지식과 열정에 감탄합니다
  • 작성자무거 | 작성시간 15.06.01 감사합니다
  • 작성자바람바람~ | 작성시간 16.02.21 ........ㅜㅜㅜ
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼