IDL/Mapping

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

이상우_idl 2015. 2. 28. 13:27
728x90
반응형

* 지도 그림의 변경 및 일부 문구의 추가가 있었습니다 (내용 수정 날짜는 2015년 3월 5일)


-----------------------------


지난 시간에는 Mercator 투영법으로 지도 그리는 예제를 소개했었는데, 오늘은 다른 투영법을 시도하고자 합니다. 바로 Lambert Conformal Conic이라는 다소 긴 이름의 투영법입니다. 프로그램을 작성하는 요령 자체는 지난번 소개했던 내용과 유사합니다. 즉, 다음과 같이 MAP 함수의 투영법 자리에 저 긴 이름의 투영법을 적어주면 된다는 차이만 있습니다. 이와 같은 내용의 프로그램을 한번 실행해봅시다.


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

m = MAP(‘Lambert Conformal Conic', LIMIT = [20, 100, 60, 160], $

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

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


그런데 뭔가 문제가 있는 것 같습니다. 실행이 제대로 안되고 에러가 출력되는 것이 보입니다. 에러의 내용은 대략 아래와 같은데 도대체 무슨 얘기일까요?


% GCTP Library: Equal Latitudes for St. Parallels on opposite sides of equator: lamcc-for.


사실 이렇게 에러가 발생한 이유는 이 투영법을 사용하기 위하여 필요한 추가적인 속성들을 정해주지 않았기 때문입니다. 지금 이 경우에는 위의 에러 메시지에서 St. Parallels라는 문구를 주목할 필요가 있습니다. 이것은 Standard Parallels를 의미하는데, Lambert Conformal Conic 투영법을 사용할 때 정해줘야 하는 추가적인 제한 조건입니다. 바로 이 투영법 고유의 특성으로서, 지구 구체를 투영시킬 원뿔형(Conic) 입체와 교차시킬 때 그 점점들이 이루는 두 개의 수평 원들이 위치한 위도 두 개에 해당됩니다. 이에 관한 더 자세한 내용에 대해서는 따로 구글링 등의 방법으로 검색해서 찾아보는 것이 가장 좋은 것 같긴 하지만, 그 원리에 대한 설명을 위하여 다음 그림에서 간단하게나마 도식적으로 나타내어 보았습니다.



이 그림에서는 푸른 구체가 지구이고, 붉은 원뿔형이 바로 투영면에 해당됩니다. 두 입체가 교차하는 위도와 평행한 곡선 두 개가 바로 Standard Parallels에 해당됩니다. 따라서 원뿔과 구체가 어떤 식으로 교차하느냐에 따라 두 선의 위도가 달라진다는 것을 이 그림을 통해서 짐작할 수 있습니다. 그리고 지구 구체상의 경도 및 위도선은 원뿔형 표면상에 투영되는데, 지구 중심에 광원이 있다고 가정하고 그로부터 뻗어나가는 방사상의 선들을 따라 지구 표면상의 각 지점들이 원뿔면상에 투영된다고 생각하면 됩니다. 이렇게 투영한 모습이 반영된 원뿔을 세로 방향으로 잘라서 펼친 모습이 바로 Lambert Conformal Conic 투영법의 지도가 되는 것입니다. 참고로 투영의 대상 도형이 원뿔이 아닌 원통인 경우가 Cylindrical 또는 Mercator 투영법에 해당됩니다.


어쨌든 작업하는 측면에서 보면, 이러한 Standard Parallels에 해당되는 속성들을 MAP 함수에서 추가적으로 설정해야 한다는 것이 중요합니다. 그러면 그러한 속성들이 뭔지를 어떻게 알아내느냐가 관건인데, 앞서 [2]에서 언급했던 MAP 함수에서 지원되는 투영법들의 목록 테이블을 주목할 필요가 있습니다. 여기서 Lambert Conformal Conic 투영법과 관련하여 사용 가능한 여러가지 속성들을 볼 수 있는데, 그 중 STANDARD_PAR1 및 STANDARD_PAR2가 여기에 해당됩니다. 다음 예제코드에서는 이 두 속성의 값을 각각 30, 60으로 설정해보았습니다. 이와 같은 내용을 실행하면 에러없이 잘 실행되어 비로소 다음 그림과 같은 결과를 얻을 수 있습니다.


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

m = MAP('Lambert Conformal Conic', LIMIT = [20, 100, 60, 160], $

  STANDARD_PAR1=30, STANDARD_PAR2=60, $

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

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




앞서 언급했듯이 이 투영법은 지구 구체를 원뿔형 입체에 투영시킨 후 이 원뿔을 펼친 형태로 평면도를 얻는 방식이기 때문에, 위의 그림에서 보는 것과 같은 모습의 지도가 얻어졌습니다. 여기서 위도선들은 마치 동심원을 이루는 듯한 그리고  경도선들은 극점으로 수렴하는 형태를 보이게 됩니다. 이 지도의 경우는 경도의 범위가 동경 100~160도, 위도의 범위는 북위 20~60도로서, 한반도 및 주변 지역만을 나타내고 있습니다. 만약 위도의 범위의 상한선을 북극(+90도)으로 지정할 경우라면 원뿔의 뾰족한 꼭지점까지 반영된 지도가 그려지게 되겠지요. 예를 들어 다음과 같이 위도의 범위를 적도부터 북극까지(0~90)로 설정하면 다음 그림과 같이 북극점까지 반영된 형태의 지도를 얻게 됩니다. 여기서는 경도의 범위도 60~180으로 함께 조정해보았습니다.


win = WINDOW(DIMENSIONS=[800500])

m = MAP('Lambert Conformal Conic', LIMIT = [06090180], $

  STANDARD_PAR1=30, STANDARD_PAR2=60, $

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

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



하지만 이 그림을 보면 양 극지방의 모습을 나타내는데 있어서 Lambert Conformal Conic 투영법이 아주 효과적인 방법은 아닐 것 같다는 생각이 들 수도 있습니다. 그래서 이번에는 남극 또는 북극 지역을 효과적으로 나타낼 수 있는 투영법을 사용해보고자 합니다.바로 Polar Stereographic이라는 투영법이 등장할 차례인데요. 이 내용은 다음 시간에 소개하기로 하겠습니다.


반응형