IDL/Mapping

GOES-R 투영법을 이용한 지도 표출

이상우_IDL 2021. 10. 28. 14:10
728x90

IDL에서 지도를 표출하는데 있어서 여러가지 투영법(Projection)들이 존재하고 주요 투영법들에 관해서는 제가 이 블로그를 통하여 여러 차례 소개해드린 바 있습니다. 오늘은 지도 투영법들 중에서 GOES-R이라는 투영법을 사용하여 지도를 표출하는 방법 및 예제를 소개해보고자 합니다. 표출에 있어서는 NG 체계에서 MAP 함수를 사용하는 방법을 사용할 것입니다.

 

GOES-R 투영법은 마치 지구로부터 일정 거리만큼 떨어진 상태에서 지구 구체를 바라보는 듯한 느낌으로 표출하는 방식이라는 점에 있어서는 제가 얼마전에 소개했던 NSP(Near Side Perspective) 투영법과 비슷한 측면도 있습니다. 하지만 그 명칭에서 알 수 있듯이 이 투영법은 GOES-R 위성의 위치 정보와 유사한 특성을 갖도록 맞춰진 투영법이라고 볼 수 있습니다. 참고로 GOES-R은 미국의 NOAA에서 2016년에 발사하여 운용중인 정지궤도 위성입니다. 다만 IDL의 GOES-R 투영법은 반드시 GOES-R이 아니더라도 일반적인 정지궤도 위성이 내려다보는 지구의 모습을 표출하는데 특화된 투영법입니다. 따라서 정지궤도 위성이지만 GOES-R과 경도 위치가 다른 인공위성들의 경우에도 적용 가능한 투영법이라고 볼 수 있습니다. 그러면 NG 체계에서 MAP 함수를 사용하여 GOES-R 투영법의 지도를 표출하는 방법을 예제를 통하여 살펴봅시다. 일단 예제코드의 내용은 다음과 같습니다.

 

clon = 127.0

win = WINDOW(DIMENSIONS=[600, 600], /NO_TOOLBAR)
m = MAP('GOES-R', CENTER_LONGITUDE=clon, $
  HORIZON_COLOR='black', $
  TITLE='GOES-R', MARGIN=0.1, /CURRENT)
mc = MAPCONTINENTS(COLOR='green')
m.MapGrid.LINESTYLE = 1
m.MapGrid.GRID_LONGITUDE = 15
m.MapGrid.GRID_LATITUDE = 15

 

이와 같이 MAP 함수에서 투영법의 이름을 'GOES-R'이라고 명시해야 합니다. 그리고 중심이 되는 경도를 설정하기 위하여 CENTER_LONGITUDE 속성을 사용하였는데, 여기서 유의해야 할 점은 GOES-R 투영법에서는 CENTER_LATITUDE 속성은 지원되지 않는다는 것입니다. 왜냐하면 정지궤도 위성들은 적도상에서 운행되기 때문에 GOES-R 투영법에서도 중심 위도는 무조건 0으로 간주되기 때문입니다. 어쨌든 여기서는 경도가 한반도 위치가 되도록 해보았습니다. 또한 윤곽선의 경우는 HORIZON_COLOR 속성을 통하여 검은 실선이 되도록 처리하였습니다. 그리고 맵 개체인 m의 격자선 관련 하위 개체인 MapGrid에 대한 설정을 추가하였는데, 경위도 격자선들의 간격은 GRID_LONGITUDE, GRID_LATITUDE 속성을 통하여 일률적으로 15도로 설정하고, 격자선의 형태는 LINESTYLE 속성을 통하여 점선이 되도록 하였습니다. 이러한 과정에 의하여 표출된 지도의 모습은 다음 그림과 같습니다.

 

 

제가 얼마전에 별도의 게시물로 소개했던 Near Side Perspective 투영법을 잠시 되돌아보면 그 투영법에서 디폴트로 사용하는 지구 타원체의 장반경과 단반경 그리고 시점의 고도 등과 같은 수치들이 있었습니다. GOES-R 투영법의 경우도 마찬가지로 이러한 디폴트 수치들이 있습니다. GOES-R 투영법에서 디폴트로 가정하는 이러한 수치들은 다음과 같으며 단위는 모두 m입니다.

 

지구 타원체의 장반경 : 6378137.0

지구 타원체의 단반경 : 6356752.3

시점의 고도 : 35786023.0

 

그리고 위의 장반경과 단반경 값은 GRS 1980 타원체에 해당됩니다(참고로 NSP 투영법의 경우는 지구를 아예 구체(Sphere)로 가정하였고 디폴트 고도값도 다릅니다). 실제로 투영법의 이름인 GOES-R 위성의 데이터도 위와 같은 설정을 따르는 것으로 알고 있습니다. 물론 GOES-R은 미국에서 운용하는 위성이기 때문에 경도 위치는 -75.2도로서 미국 지역을 대상으로 합니다. 그리고 우리나라에서 운용중인 천리안 2 위성의 경우도 기본적으로 정지궤도 위성이며 기본적인 설정은 역시 위와 같은 것으로 알고 있습니다. 다만 경도 위치만 한반도 지역에 해당될 뿐입니다(아마 128.2도인 것 같습니다). 위의 예제코드에서는 장반경, 단반경, 고도 등에 대하여 아무런 설정도 하지 않았기 때문에 디폴트 값들이 사용되었는데, 그 디폴트 값들은 다음과 같이 직접 출력해서 확인해볼 수 있습니다.

 

PRINT, m.SEMIMAJOR_AXIS, m.SEMIMINOR_AXIS, m.HEIGHT

 

그리고 실제로 출력된 값들을 보면 다음과 같습니다.

 

       6378137.0       6356752.3       35786023.

 

어쨌든 IDL에서도 GOES-R 투영법을 사용하여 정지궤도 위성이 바라보는 지구의 모습을 표출할 수 있습니다. 다만 위에 표출된 그림을 잘 보면 검은 실선으로 된 윤곽선이 완전하지 않고 몇 군데 끊겨 있는 것을 볼 수가 있습니다. 아쉽게도 이것 역시 일종의 버그입니다. GOES-R 투영법이 IDL 8.6.1 버전부터 지원되기 시작하였는데, 아직은 계속 다듬어나가야 하는 기능인 것 같습니다. 이 문제 역시 조속히 수정되길 희망해봅니다. 물론 아쉬운대로 다음과 같이 경도 격자선들을 실선으로 촘촘하게 표시하면 다음 그림과 같이 윤곽선이 어느 정도 채워지는 듯한 느낌은 있겠지만 이것도 근본적인 해결책은 아닙니다.

 

win = WINDOW(DIMENSIONS=[600, 600], /NO_TOOLBAR)
m = MAP('GOES-R', CENTER_LONGITUDE=clon, $
  TITLE='GOES-R', MARGIN=0.1, /CURRENT)
mc = MAPCONTINENTS(COLOR='green')
m.MapGrid.LINESTYLE = 0
m.MapGrid.GRID_LONGITUDE = 5
m.MapGrid.GRID_LATITUDE = 15

 

 

그래서 제 생각에는 GOES-R 투영법은 지도 자체만 표출하는 것보다는 GOES-R 투영법 기반의 위성 데이터를 이미지의 형태로 지도와 함께 중첩 표출하는 목적으로 사용하는 것이 더 효율적일 것 같습니다. 어쨌든 IDL의 GOES-R 투영법에 관한 소개는 이 정도로 마칩니다.

LIST