IDL/Mapping

IDL에서 지도의 표출 및 활용법에 관하여 [9]

이상우_idl 2015. 4. 20. 20:24
728x90
반응형

지금까지는 지도상에 기호와 문자를 삽입해보았는데, 이번에는 좀 더 나아가서 선을 한번 추가해보겠습니다. 이를 위하여 서울과 이어줄 또 다른 지점을 표시하면 좋을 것 같아서 베이징을 추가해보겠습니다. 그림을 아예 다시 그린다고 생각하고, 지도를 그리고 서울 및 베이징을 위와 같은 방식으로 표시하는 작업부터 수행하기 위하여 다음과 같이 예제코드를 작성해보았습니다. 일단 여기까지의 내용을 실행하면 다음 그림과 같이 서울과 베이징이 표시된 지도를 얻을 수 있습니다.


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

m = MAP('Lambert Conformal Conic', LIMIT=[30, 110, 50, 140], $

  STANDARD_PAR1=30, STANDARD_PAR2=60, $

  FILL_COLOR='Dodger Blue', ASPECT_RATIO=0, MARGIN=0.05, /CURRENT)

mc = MAPCONTINENTS(FILL_COLOR='Gold', THICK=2)

mg = m.MapGrid

sym = SYMBOL(126.97, 37.57, 'square', /DATA, $

  SYM_COLOR='black', /SYM_FILLED, SYM_FILL_COLOR='crimson')

tx = TEXT(126.97, 37.90, 'Seoul', /DATA, FONT_STYLE='bold', $

  /FILL_BACKGROUND, FILL_COLOR='white', ALIGNMENT=0.5)

sym = SYMBOL(116.38, 39.92, 'square', /DATA, $

  SYM_COLOR='black', /SYM_FILLED, SYM_FILL_COLOR='crimson')

tx = TEXT(116.38, 40.25, 'Beijing', /DATA, FONT_STYLE='bold', $

  /FILL_BACKGROUND, FILL_COLOR='white', ALIGNMENT=0.5)



이제 서울과 베이징을 이어주는 직선을 그려보겠습니다. 이를 위해서는 POLYLINE이라는 내장함수를 사용합니다. 이 때 선으로 이어주고자 하는 두 지점의 XY 좌표, 즉 경위도 좌표값을 인자로 부여해야 합니다. 여기서는 서울의 경위도 좌표가 (126.97, 37.57)이고 베이징의 좌표가 (116.38, 39.92)인데, X좌표값들끼리 그리고 Y좌표값들끼리 모아서 [126.97, 116.38], [37.57, 39.92]와 같은 방식으로 구성해주면 됩니다. 이와 같은 방식으로 다음과 같이 POLYLINE 함수를 사용하면 됩니다.


line = POLYLINE([126.97, 116.38], [37.57, 39.92], /DATA, $ 

  COLOR='crimson', THICK=2)


여기서는 /DATA라는 속성을 또 주목해야 하는데요. 좌표로 부여한 값들이 데이터 좌표 체계에 근거한 값들이라는 것을 명시적으로 나타내는 역할입니다. IDL에서는 원래 DATA, DEVICE, NORMAL 등 세 종류의 좌표계가 존재하는데 이 점을 참조하면 됩니다. 이와 같이 POLYLINE을 사용하면 다음 그림과 같이 서울과 베이징을 이어주는 선을 지도상에 중첩하여 나타낼 수 있게 됩니다. 만약 이와 같은 선이 더 많은 포인트들로 이루어져 있고 이러한 포인트들의 위치 좌표값들(경도 및 위도)을 모두 알고 있다면, 이러한 선 역시 같은 방식으로 지도상에 구현할 수 있습니다.



반응형