IDL/Mapping

MAP 함수의 POSITION 속성 문제 해결방법

이상우_idl 2011. 7. 20. 14:13
728x90
반응형
IDL의 그래픽 함수들 중 상당수가 내부적으로 POSITION이라는 속성을 갖고 있습니다. 이 속성은 그래픽 윈도우상에서 그림의 위치를 잡아주는 역할을 합니다. 그런데 IDL 8.1에서 새로 도입된 MAP 함수의 POSITION 속성이 원하는데로 적용이 안되는 문제가 있습니다. 예를 들면, 다음과 같이 WINDOW 함수로 윈도우를 하나 띄우고 여기에 MAP 함수로 지도를 그려봅시다.

win = WINDOW(DIMENSION=[600, 600])

mapd = MAP('Cylindrical', LIMIT=[33, 124, 42, 133], CENTER_LONGITUDE=128.5, $

  POSITION=[0.1, 0.1, 0.9, 0.9], /CURRENT)

mapc = MAPCONTINENTS(/COUNTRIES)


여기서 MAP 함수의 내용을 보면 POSITION 속성이 [0.1, 0.1, 0.9, 0.9]로 설정되어 있습니다. 즉 윈도우상에서 normal 좌표계로 좌측 하단부의 위치가 [0.1, 0.1]이고 우측 상단부의 위치는 [0.9, 0.9]가 되도록 지도의 위치를 잡아주라는 의미입니다. 그런데 실제로 그림을 그려보면 다음과 같이 나옵니다.


즉 윈도우상에서 Y방향의 위치가 의도하던 바와 전혀 다르게 나옵니다. MAP 함수에 관한 도움말의 내용을 뒤져봐도 별다른 해결책이 발견되지는 않습니다. 그래서 본사에 문의해본 결과 ASPECT_RATIO라는 속성을 사용하면 되는 것으로 확인이 되었습니다. 다음과 같이 이 속성의 값을 0으로 설정해주면 됩니다.

win1 = WINDOW(DIMENSION=[600, 600])

mapd = MAP('Cylindrical', LIMIT=[33, 124, 42, 133], CENTER_LONGITUDE=128.5, $

  POSITION=[0.1, 0.1, 0.9, 0.9], ASPECT_RATIO=0, /CURRENT)

mapc = MAPCONTINENTS(/COUNTRIES)


그러면 다음 그림과 같이 지도의 위치가 제대로 반영됩니다.


사실 IDL 도움말에서 MAP 함수에 관한 내용을 보면 이 ASPECT_RATIO라는 속성에 대한 내용은 없습니다. 이러한 문제점은 반드시 고쳐져야 하겠지요. 이 문제에 대해서는 본사에도 전달을 했으니 다음 버전에서는 수정될 것으로 믿습니다. 새로운 그래픽 함수들이 비교적 최근에 도입된 기능들이라 가끔 이와 같은 사소한 문제들이나 버그들이 나오긴 합니다. 여러분들도 혹시 사용하시다가 이상한 점 발견하시면 저에게 알려주시기 바랍니다.



반응형