IDL 8.1 버전에서부터 새로 도입되었던 기능들 중 KML/KMZ 파일 생성 기능에 대하여 소개하고자 합니다. 아시다시피 이 파일들은 Google Earth에서 열어볼 수 있는 형식으로서, 지도상에 표출 가능한 각종 정보들을 Google Earth의 그래픽상에서 볼 수 있도록 해줍니다. 이미지, 등위선(Contour), 선, 폴리곤 등의 여러가지 그래픽 요소들을 표출할 수 있습니다. 오늘은 이미지와 선을 표출하는 예제를 만들어보기로 하겠습니다. 이 예제코드의 세부적인 내용은 아래에 설명하겠지만, 첨부파일로도 있으므로 필요하신 분들은 다운로드받으시면 됩니다.
먼저 예제에서 사용될 2차원 자료를 다음과 같이 임의로 생성합니다. 여기서는 300X300의 크기를 갖는 data라는 이름의 2차원 배열을 생성하였습니다. 경위도 기반의 격자분포를 하는 2차원 배열입니다.
lons = FINDGEN(300)/10 + 120
lats = FINDGEN(300)/20 + 30
data = SIN(lons/10) # COS(lats/5)
HELP, data
MAP 함수를 사용하여 지도를 먼저 셋업합니다. 여기서는 한반도 인근의 영역을 대상으로 하였습니다.
m = MAP('Geographic', LIMIT=[30, 120, 50, 150])
이제 앞서 생성했던 2차원 배열을 이미지의 형태로 표출하기 위하여 IMAGE 함수를 다음과 같이 사용합니다.
image = IMAGE(data, GRID_UNITS=2, RGB_TABLE=34, $
IMAGE_LOCATION=[122, 32], IMAGE_DIMENSIONS=[20, 15], $
/OVERPLOT, NAME='Image Overlay Example')
여기서는 이미지의 왼쪽 하단부 꼭지점의 위치에 해당되는 경위도 좌표를 IMAGE_LOCATION 속성에 부여하였고, 이미지가 점유하게 될 경위도 범위의 크기를 IMAGE_DIMENSIONS 속성에 부여하였습니다. 그리고 GRID_UNITS라는 속성에 2라는 값이 부여되어 있는데, 이것은 좌표값들을 도(degree)단위로 하겠다는 의미입니다. 그리고 NAME이라는 속성에 부여된 문자열은 나중에 생성될 KML/KMZ 파일을 Google Earth에서 열었을 때 이미지 부분의 고유 이름이 됩니다.
바로 이어서 MAPCONTINENTS 함수를 사용하여 지도상에 대륙경계선을 그리도록 합니다. 그리고 서울과 동경(Tokyo)를 이어주는 선을 다음과 같이 POLYLINE 함수를 사용하여 삽입합니다.
mc = MAPCONTINENTS(/COUNTRIES)
line = POLYLINE([[126.97, 37.57], [139.68, 35.68]], $
/DATA, COLOR='blue', NAME='Seoul to Tokyo', THICK=2, TARGET=m)
그러면 표출해야 할 요소들은 다 표출이 된 상태입니다. 이제 앞서 MAP 함수로 정의했던 map이라는 그래픽 개체에 대하여 SAVE 메서드를 다음과 같이 사용합니다. 이 때 저장될 파일명의 확장자는 KML 또는 KMZ로 명시해줘야 합니다.
m.SAVE, 'test_kml.kmz'
여기서는 두가지 정도를 유의해야 합니다. 첫번째로 유의해야 할 점은, KML/KMZ 파일로 저장하는 기능 자체가 이와 같이 NG 체계 그래픽 함수들의 SAVE 메서드에서만 사용이 가능하다는 점입니다. 즉 IDL 8.0부터 도입된 NG(New Graphics) 기반의 그래픽 함수들에서만 지원됩니다. 예전부터 존재했던 Direct Graphics 기반의 그래픽에서는 지원되지 않는다는 점을 유의해야 합니다. 두번째로 유의해야 할 점은, 만약 저장될 파일을 외부로 보내서 다른 PC에서도 읽을 수 있어야 할 경우라면 KML보다는 KMZ로 저장하는 것이 더 나을 수도 있다는 것입니다. 특히 지금의 예제와 같이 이미지가 포함되어야 하는 경우라면 더욱 더 그렇습니다.
어쨌든 예제코드의 내용은 여기까지가 끝입니다. 위의 내용을 모두 실행하면 일단 그래픽 창이 하나 뜨고 다음과 같은 결과 그림을 먼저 볼 수 있습니다.
그리고 바로 이어서 이 내용을 담은 KML파일이 생성이 됩니다. 생성된 파일은 현재 작업 디렉토리의 내부에 저장됩니다. 이렇게 생성된 파일을 Google Earth를 이용하여 열어본 모습은 다음 그림과 같습니다.
아마 이미지의 불투명도가 좀 짙어서 뒷배경의 지도부분이 잘 안보일 것 같은데, 이 경우에는 Google Earth의 인터페이스상에서 이 이미지 부분만 투명도를 조절할 수 있습니다. Google Earth의 버전에 따라 조금씩 다른데, 예를 들어 2018년 6월 현재 최신 버전이라 할 수 있는 Google Earth Pro 7.3.2에서는 왼쪽 인터페이스의 중간 부분에 "불투명도 조정"이라는 팝업 설명이 뜨는 버튼이 있습니다. 참고로 이 스크린샷은 2011년 당시의 Google Earth의 모습이긴 한데, 다행히(?) 최근의 모습과 아주 크게 다르지는 않습니다. 어쨌든 이와 같은 자체 기능을 사용하여 투명도를 조절하면 다음 그림과 같이 배경과 이미지가 함께 잘 보이게 됩니다.
위의 예제 코드를 이용하여 얻은 kmz 파일도 아래에 첨부합니다.
지금까지 IDL에서 KML/KMZ 파일을 생성하는 방법을 하나의 예제를 통하여 소개해보았습니다. 여기서는 이미지와 선을 표출하는 경우에 대한 예제만 소개하였지만, IDL 도움말에서 다음과 같은 섹션을 보면 좀 더 자세한 내용이 있으니 필요시 이 내용을 참조하시면 됩니다.
IDL > Graphics > Graphics Gallery > Images > Saving Images as KML Files
'IDL > Mapping' 카테고리의 다른 글
간단하게 지도 도법들을 조회하는 방법 (0) | 2013.06.24 |
---|---|
10월 20일 Webinar 간단 리뷰 (0) | 2011.10.20 |
Webinar 안내 (0) | 2011.09.20 |
MAP 함수의 POSITION 속성 문제 해결방법 (0) | 2011.07.20 |
IDL 8.0에서 Conic 도법 지도 및 2차원 자료 중첩 표출 (0) | 2011.04.11 |