IDL/Mapping

세계지도를 그려봅시다

이상우_idl 2014. 7. 3. 22:01
728x90
반응형

어제(7월 2일) 있었던 IDL/ENVI 유저 컨퍼런스는 성황리에 잘 끝났습니다. 좀 정리가 되는대로 사진 및 간단한 후기를 나중에 올리기로 하겠습니다. 참석해주신 분들 그리고 참석은 못하셨지만 여러 경로로 성원해주신 분들께 다시 한번 감사드립니다.


오늘은 IDL에서 세계지도를 그리는 예제를 한번 다뤄보기로 하겠습니다. 사실 그리 어렵지는 않고 약 5~6줄 정도의 프로그램으로 가능합니다. 다만 오늘 예제에서는 NG 체계의 맵 관련 함수들을 사용하고, 대륙과 바다를 일정한 색상으로 채우고, 지도 자체가 그래픽창에 꽉 채워지도록 그린 다음, 그 결과를 그림파일로 저장하는 과정들이 나오게 됩니다. 먼저 그래픽창을 다음과 같이 원하는 크기(여기서는 800 by 400)로 만들고, MAP 함수를 사용하여 지도의 바탕을 그립니다.

 

win = WINDOW(DIMENSIONS=[800, 400])

m1 = MAP('Geographic', BACKGROUND_COLOR='Dodger Blue', ASPECT_RATIO=0, MARGIN=0, /CURRENT)

m1.LIMIT = [-90, -180, 90, 180]

 

여기서 LIMIT 속성을 사용하여 경도 및 위도의 범위를 지구 전체로 설정하였습니다. ASPECT_RATIO 속성을 0으로 하고 MARGIN 속성을 0으로 설정한 것은 지도 그림의 범위가 그래픽창의 크기에 맞게 꽉 채워지도록 하기 위해서입니다. 그리고 BACKGROUND_COLOR를 푸른색으로 설정했는데 이것은 바다 부분은 이러한 색상으로 처리하기 위해서입니다. 이제 대륙 경계선을 그리고 대륙 부분을 별도의 색상으로 채우기 위하여 다음과 같은 내용을 수행합니다.

 

m2 = MAPCONTINENTS(FILL_COLOR='Gold')

m1.MapGrid.Hide = 1

win.Save, 'world_map.png', WIDTH=800

 

여기서는 대륙 경계선 내부를 황금(Gold) 색상으로 채웠습니다. 그리고 그 밑에 바로 이어지는 내용은 경위도선을 일부러 안보이게 한 것인데요. 물론 이것은 결과 그림을 어떻게 그릴 것이냐에 따른 선택사항입니다. 어쨌든 뒤이어서 Save 메서드를 사용하여 결과를 PNG 형식의 그림파일로 저장하였습니다. 이와 같은 방식으로 지도를 그려보면 그 결과는 다음과 같습니다.

 

 

그리고 만약 앞서 기술된 네 줄의 프로그램 내용을 약간 바꿔서 다음과 같은 내용이 되도록 한다면, 다음 그림과 같이 경위도선이 포함된 모습의 그림이 됩니다. 단 여기서는 맵상의 격자선에 매겨지는 경위도값 문자들이 나오지 않도록 하기 위하여 일부러 LABEL_SHOW 속성을 0으로 설정하였습니다. 물론 이러한 설정 여부도 선택사항이겠지요.

 

m2 = MAPCONTINENTS(FILL_COLOR='Gold')

m1.MapGrid.Label_Show = 0

win.Save, 'world_map.png', WIDTH=800



사실 지도라는 것이 그리는 방법이 워낙 다양합니다. 그래서 대륙경계선이 아주 세밀하게 묘사하고, 지형 고저차도 반영하고, 때로는 위성 이미지와 중첩하기도 하는 등 여러가지 방식들이 존재하기 때문에 그 모든 내용을 이런 게시글로 다 다룰 수는 없습니다. 그리고 원래 IDL에서 지도를 다루는 것이 좀 어렵게 다가오는 것도 사실입니다. 어쨌든 오늘 소개한 것과 같은 방법으로도 지도를 그리고 그 결과를 그림으로 얻을 수 있습니다. 물론 대륙이나 바다 부분의 색상도 위의 프로그램에서 컬러에 해당되는 속성의 값을 원하는 색상으로 바꾸는 방식으로 매우 간단하게 이루어집니다. 기존의 DG 체계의 지도에서는 이와 같은 방식의 지도를 그리기가 상당히 까다로왔었는데요. 이런 측면에서 보면 NG 체계의 지도 관련 그래픽 함수들이 상당히 유용한 측면이 분명히 있습니다. 그리고 이렇게 얻어진 지도 이미지는 나중에 혹시라도 구체 폴리곤상에 맵핑할만한 세계전도 이미지로 활용될 수도 있다는 것도 참조해두시면 좋을 것 같습니다.


이번 예제의 내용이 담긴 프로그램 파일도 함께 첨부합니다.


test_world_map.pro


test_world_map.pro
0.0MB
반응형