그러면 이제부터는 지도 그리는 과정을 기본적인 부분부터 시작해보기로 합니다. 앞서 그림 1에서 봤던 예제 지도들 중 가장 단순한 투영법(?)에 해당되는 것부터 그려봅시다. 사실 NG 체계에서 그림을 그리기 시작하는 방법도 몇가지 종류가 있지만 여기서는 다음과 같이 그래픽창을 띄운 후 그 위에 원하는 그래픽 개체를 구현하는 방식을 사용하기로 합니다. 일단 다음 예제코드를 먼저 봅시다.
win = WINDOW(DIMENSIONS=[800, 400])
m = MAP('Geographic', FILL_COLOR=‘Light Gray', ASPECT_RATIO=0, $
MARGIN=0.05, /CURRENT)
mc = MAPCONTINENTS()
여기서는 먼저 WINDOW 함수를 사용하여 800X400 크기의 그래픽창을 하나 띄웁니다. 그 후 MAP 함수를 사용한 것이 보입니다. 사용된 투영법을 보면 ‘Geographic’이라고 되어 있는데, 가장 간단하고 단순한 방식의 투영법(Projection)이라고 볼 수 있습니다. 실상을 보면 일정하고 규칙적인 간격으로 증가하는 X, Y축으로 이루어진 우리가 흔히 쓰는 2차원 좌표계 그대로의 상태에서 경도/위도를 X/Y축에 대응시킨 것이 불과합니다. 이 경우에는 경도선과 위도선이 직교하고 경도와 위도의 증가폭도 항상 일정합니다. 하여간 가장 간단한 예제로서 먼저 시도해보면 그 결과는 다음 그림과 같은 모습으로 나타납니다. 이 지도에서는 경위도 모든 범위에 해당되는 세계 전도를 나타내었고, 지도 자체의 배경색을 연한 회색으로 설정해보았습니다.
일단 위 예제코드에서 MAP 함수에서 사용된 투영법 이외의 속성들을 먼저 봅시다. 가장 뒷부분에 등장하는 /CURRENT는 앞서 WINDOW 함수로 구현했던 그래픽창을 현재 활성화된(active) 것으로 인지하고, 이후에 생성될 지도 관련 그래픽 개체들을 모두 이 그래픽창위에 올리겠다는 의미입니다. 그리고 MARGIN은 지도를 이루는 사각형이 그래픽창의 좌우 및 상하로 어느 정도의 여백을 남기도록 할 것인가를 나타냅니다. 여기서는 좌우상하 일괄적으로 0.05로 하겠다는 의미인데, 이 숫자는 Normalized 좌표계 즉 그래픽창의 가로 및 세로 방향의 좌표가 0~1이라고 가정하고 0.05 만큼을 여백으로 두겠다는 의미입니다. 물론 더 세세하게 상하좌우마다 여백을 달리 주는 것도 가능합니다(도움말 참조). 이와 같은 CURRENT, MARGIN 등의 속성들은 굳이 지도뿐 아니라 NG 체계에서의 다른 종류의 그래픽 구현에 있어서도 공통적으로 이용 가능합니다.
그리고 ASPECT_RATIO라는 속성에 대하여 0이란 값을 부여한 것이 보입니다. 이러한 설정을 해주면 그래픽창의 크기에 연동하여 MARGIN을 적용하여 그 크기에 맞게 지도를 표출하는 효과가 있습니다. 이 설정을 사용하지 않을 경우에는 MARGIN의 값을 완전 무시하고 MAP 함수가 지도의 가로/세로 비율을 스스로의 판단으로 고정시켜버립니다. 이런 것이 필요한 경우도 없지는 않겠지만 대개의 경우 사용자 입장에서는 불필요한 제약이 될 가능성이 더 큽니다. 따라서 MAP 함수를 사용할 때 사용자의 의도에 맞는 크기의 지도를 그리려면 이러한 설정은 아마 반드시 필요할 것으로 생각됩니다. 그리고 FILL_COLOR는 지도 그림 자체에 뭔가 색상을 채워넣고자 할 때 사용하는 속성으로서, 채워넣고자 하는 색상의 이름 또는 RGB값을 넣어주면 됩니다. 물론 이 속성을 사용하지 않을 경우에는 그냥 디폴트인 흰색으로 처리됩니다. 이러한 속성은 혹시라도 대륙과 바다를 다른 색상으로 처리하고자 할 경우에 특히 그 효과를 발휘하므로 알아두면 좋습니다.
MAP 함수가 사용된 이후에는 MAPCONTINENTS라는 또 다른 그래픽 함수가 보입니다. 이것은 대륙들의 경계선을 그려주는 역할을 합니다. 이와 같이 ( )안이 비어있는 상태로도 사용이 가능합니다. 물론 대륙경계선을 그리는 작업에 있어서 필요한 세부적인 속성들도 이 ( )안에 내용들을 추가해줌으로써 설정할 수 있습니다. 예를 들어, 대륙경계선의 내부(육지)에 해당되는 영역을 다른 색상으로 나타내고, 대륙경계선 자체를 좀 더 두껍게 그리고자 할 경우에는, 위의 예제코드에서 MAPCONTINENTS 함수가 사용된 줄을 다음과 같은 내용으로 수정하여 사용하면 됩니다. 그 경우 다음 그림과 같은 결과를 얻게 됩니다.
win = WINDOW(DIMENSIONS=[800, 400])
m = MAP('Geographic', FILL_COLOR=‘Light Gray', ASPECT_RATIO=0, $
MARGIN=0.05, /CURRENT)
mc = MAPCONTINENTS(FILL_COLOR='Gold', THICK=2)
사실 이번 예제코드에서 사용된 MAP, MAPCONTINENTS 등과 같은 지도 구현용 그래픽 함수들에 대한 이해가 IDL에서 지도 그래픽의 구현에 있어서 가장 핵심적인 부분이라고 볼 수 있습니다. 물론 이 함수들에 대한 세부적인 내용을 IDL 도움말에서 찾아보면 그 내용이 나름 방대한 편이기 때문에, 한꺼번에 이 모든 내용을 소화한다는 것은 쉽지 않습니다. 따라서 당장 구현하고자 하는 목적에 맞는 것들만 우선적으로 찾아서 사용해보고, 그 이외의 것들은 나중에 필요하게 될 경우에 살펴봐도 늦지 않습니다. 물론 여기서도 필요한 세부사항들이 앞으로 등장할 때마다 설명을 해드릴 예정입니다.
'IDL > Mapping' 카테고리의 다른 글
IDL에서 지도의 표출 및 활용법에 관하여 [5] (0) | 2015.02.28 |
---|---|
IDL에서 지도의 표출 및 활용법에 관하여 [4] (0) | 2015.02.23 |
IDL에서 지도의 표출 및 활용법에 관하여 [2] (0) | 2015.02.13 |
IDL에서 지도의 표출 및 활용법에 관하여 [1] (2) | 2015.02.13 |
세계지도를 그려봅시다 (0) | 2014.07.03 |