IDL/New Graphics

새로운 그래픽의 Contour 기능 소개 [3]

이상우_IDL 2011. 6. 27. 17:48
728x90
오늘은 2차원 자료에 대한 등위선(Contour) 그림을 지도상에 중첩하여 표출하는 예제를 소개하겠습니다. 이 작업은 전체적으로는 MAP 함수를 사용하여 지도를 먼저 그리고, CONTOUR 함수를 사용하여 등위선 그림을 그리는 순서로 진행됩니다. 여기서 등위선 그림은 지난회 게시물에서 소개했던 색상이 채워진 등위선 그림을 그대로 사용하기로 합니다. 물론 사용될 2차원 자료도 지난번과 동일합니다.

따라서 WINDOW 함수를 사용하여 윈도우를 생성하고, 예제로 사용될 2차원 자료를 생성하는 첫 부분의 과정은 다음과 같습니다.

win = WINDOW(window_title='Contour Example', dimensions=[500, 500])

data = 110*HANNING(300, 300)


이제 MAP 함수를 사용하여 지도를 그립니다. 여기서는 한반도 인근의 영역을 대상영역으로 해보았습니다. 경도상으로 124~133도, 위도상으로 33~42도에 해당됩니다.

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


지금 예제로 사용중인 2차원 자료가 300X300의 크기를 갖는데, 기본적으로 경도 및 위도 기반의 격자분포를 하는 자료로 가정해보았습니다. 따라서 X 및 Y 방향으로, 즉 경도 및 위도상의 격자분포는 다음과 같습니다. 경도상으로는 124도부터 133도까지 0.03도의 간격이고, 위도상으로는 33도부터 42도까지 0.03도의 간격으로 가정한 것입니다.

lons = FINDGEN(300)*0.03 + 124

lats = FINDGEN(300)*0.03 + 33


이제 다음과 같이 CONTOUR 함수를 사용하여 지도상에 등위선 그림을 중첩하여 표출합니다. 다른 부분은 지난회 게시물에서의 내용과 유사한데, GRID_UNITS라는 속성이 새로 눈에 띕니다. 이 속성의 원래 기본값은 0인데, 여기서와 같이 2로 설정해주면 등위선의 XY 격자분포를 도(degree) 단위로 인식합니다. 따라서 경위도 기반 격자의 2차원 자료를 지도상에 중첩하여 표출할 경우에는 이 속성이 필요합니다.

con = CONTOUR(data, lons, lats, C_VALUE=[20, 40, 60, 80, 100, MAX(data)], C_LABEL_SHOW=1, $

  RGB_TABLE=34, GRID_UNITS=2, /OVERPLOT)


일단은 색상이 채워진 형태의 등위선 그림부터 먼저 그리기 위하여 FILL, C_COLOR 속성을 다음과 같이 설정합니다.

con.FILL = 1

con.C_COLOR = [50, 90, 140, 210, 250]


그리고 색상이 채워진 등위선 그림위에 선 및 라벨로만 구성된 등위선 그림을 중첩하기 위하여 다음과 같은 내용들이 들어갑니다. 이 부분은 지난회 게시물에서의 내용과 동일합니다. 다만 CONTOUR 함수에 GRID_UNITS 속성이 추가된 것만 다릅니다.

con1 = CONTOUR(data, lons, lats, C_VALUE=[20, 40, 60, 80, 100, MAX(data)], C_LABEL_SHOW=1, $

  GRID_UNITS=2, /OVERPLOT)

con1.C_LINESTYLE = 1

con1.C_THICK = 2

con1.LABEL_COLOR = 'Black'

con1.FONT_STYLE = 1


이제 지도상의 격자선을 점선으로 해주고, 경위도 라벨의 위치를 조정하기 위하여 다음과 같이 관련 속성들을 조정해줍니다. 그리고 대륙 및 국가 경계선을 그리기 위하여 MAPCONTINENTS 함수를 사용합니다.

grid = mapd.MAPGRID

grid.LINESTYLE = 1

grid.LABEL_POSITION = 0

mapc = MAPCONTINENTS(/COUNTRIES)


이 모든 과정들이 끝난 결과 그림은 다음과 같습니다.


사실 2차원 자료의 분포가 이번 예제에서처럼 경위도 기반의 격자분포를 하는 경우도 있지만, 그냥 거리 기반의 분포를 하는 경우도 있습니다. 즉, 특정한 지도 도법상에서의 거리 기반의 분포를 뜻합니다. 예를 들어, 기상모델자료들의 경우 Lambert Conformal Conic 도법으로 되어 있으면서 특정한 경위도 범위를 갖는 지도영역상에서, 2차원 자료의 격자들의 X 및 Y 방향은 거리 기반인 경우가 있습니다. 이런 경우의 중첩표출 방법은 이번 예제와는 약간 다릅니다. 이 방법은 조만간 기회되는대로 소개하도록 하지요.

다음번에는 CONTOUR말고 다른 내용으로 넘어가보도록 하겠습니다.


LIST