IDL/Mapping

MAP 함수에서 ASPECT_RATIO 속성의 사용

이상우_IDL 2019. 3. 5. 15:53
728x90

오늘은 MAP 함수에서 ASPECT_RATIO 속성의 사용에 관하여 알아보기로 하겠습니다. ASPECT_RATIO라는 속성은 IDL의 NG 체계의 그래픽 함수들에서 폭넓게 지원되고 있는데, 이와 관련해서는 제가 예전에 관련 게시물을 올린 적이 있으므로 이 내용도 함께 참조하시면 좋을 것 같습니다. 다만 오늘은 이 속성이 MAP 함수에서는 어떻게 사용될 수 있는가에 촛점을 맞춰서 관련 예제와 함께 소개하고자 합니다. 그러면 예제 코드를 먼저 보겠습니다. 다음과 같이 한반도 부근의 지도를 간단하게 표출해 봅시다.

 

win = WINDOW(DIMENSIONS=[600, 450], /NO_TOOLBAR, $

  BACKGROUND_COLOR='light gray')

m = MAP('Geographic', $

  FILL_COLOR='light blue', $

  LIMIT=[20, 110, 60, 150], $

  MARGIN=0.1, FONT_SIZE=10, /CURRENT)

mc = MAPCONTINENTS(FILL_COLOR='gold', /HIRES)

 

m.MapGrid.LABEL_POSITION = 0

 

여기서는 그래픽 창의 크기를 600x450으로 설정하였고, 경도의 범위가 동경 110~150도 그리고 위도의 범위가 북위 20~60도가 되도록 하였습니다. 그리고 그래픽 창의 모습을 알아보기 쉽게 하기 위하여 WINDOW 함수의 BACKGROUND_COLOR 속성을 사용하여 배경색을 옅은 회색으로 설정하였습니다. 이렇게 표출된 그림은 다음과 같습니다.

 

 

 

사실 표출된 그림에는 별 문제는 없어 보입니다. 하지만 자세히 보면 지도 그림이 그래픽 창의 크기에 딱 들어맞지는 않음을 알 수 있습니다.좌우 여백이 꽤 비어있는 것을 볼 수 있습니다. MAP 함수를 사용할 때 MARGIN 속성의 값을 0.1로 설정했음에도 불구하고, 상하 여백과 좌우 여백이 서로 다릅니다. 이것은 MAP 함수로 지도를 표출할 때 기본적으로는 지도 자체의 가로/세로 비율에 충실하게 표출되기 때문입니다. 즉 그래픽 창 크기의 가로/세로 비율을 무시하고 지도 자체의 가로/세로 비율에 충실하게 표출하는 것이 디폴트 설정이기 때문입니다. 만약에 지도 자체의 가로/세로 비율은 무시하고 그래픽 창의 크기에 맞춰서 여백이 반영되도록 하려면 별도의 설정이 필요합니다. 이 때 사용하면 되는 것이 바로 ASPECT_RATIO 속성입니다. 이 속성의 디폴트 값은 1입니다. 위의 예제 코드에서는 ASPECT_RATIO 속성을 따로 설정하지는 않았기 때문에 디폴트 값인 1로 처리된 상태입니다. 따라서 이번에는 다음과 같이 ASPECT_RATIO 속성의 값을 0으로 설정하는 내용을 추가해서 다시 실행해 봅시다.

 

win = WINDOW(DIMENSIONS=[600, 450], /NO_TOOLBAR, $

  BACKGROUND_COLOR='light gray')

m = MAP('Geographic', $

  FILL_COLOR='light blue', $

  LIMIT=[20, 110, 60, 150], $

  MARGIN=0.1, FONT_SIZE=10, ASPECT_RATIO=0, /CURRENT)

mc = MAPCONTINENTS(FILL_COLOR='gold', /HIRES)

 

m.MapGrid.LABEL_POSITION = 0

 

이렇게 하여 표출된 그림은 다음과 같습니다.

 

 

 

이와 같이 NG 체계에서 MAP 함수를 사용하여 그래픽 창에 지도를 표출할 때에는 ASPECT_RATIO 속성을 적절히 이용하여 지도 자체의 가로/세로 비율에 충실할 것인가(1) 아니면 그래픽 창의 가로/세로 비율에 충실할 것인가(0)를 선택적으로 설정하면 됩니다. 사실 MAP 함수에서 ASPECT_RATIO 속성을 사용할 수 있다는 것을 미처 모르고 지나가는 경우도 꽤 있습니다. 제 생각에는 가장 큰 이유는 관련 도움말에서 이러한 내용을 찾을 수가 없기 때문인 것 같습니다. 실제로 IDL 도움말의 MAP 함수에 관한 내용을 보면 다음과 같습니다.

 

 

 

여기서 Properties 목록을 보면 ASPECT_RATIO 속성이 없습니다. 이렇게 되면 유저 입장에서는 MAP 함수에서 ASPECT_RATIO 속성이 사용 가능할 것이라고 판단하기는 쉽지 않을 가능성이 큽니다. PLOT 등과 같은 그래픽 함수들에 대한 도움말을 보면 ASPECT_RATIO 속성이 다음과 같이 잘 나와 있습니다.

 

 

 

 

 

어쨌든 지금까지 소개된 내용을 토대로 본다면, WINDOW 함수로 특정한 크기의 그래픽 창을 정의하고 MAP 함수를 사용하여 이 안에 지도 그림을 표출하는데 있어서 MARGIN 속성을 사용하여 설정한 여백이 상하 및 좌우 모두 제대로 적용되도록 하려면 ASPECT_RATIO 속성의 값을 0으로 설정해야 함을 알 수 있습니다. ASPECT_RATIO 속성의 값이 디폴트인 1로 설정된 상태에서는 그래픽 창의 크기 및 가로/세로 비율에 상관없이 지도 자체의 가로/세로 비율에만 충실하게 표출되기 때문에, 그래픽창과 지도가 서로 따로 노는 것처럼 보일 가능성이 있습니다. 따라서 지도의 표출에 있어서 MAP 함수에서도 ASPECT_RATIO 속성의 사용이 당연히 가능하다는 점을 잘 기억해두는 것이 좋을 것 같습니다.

LIST