WGET 함수를 이용한 자료 다운로드

IDL 8.5에 새로 등장하는 함수 중에 WGET() 이 있습니다. 웹이나 FTP에서 원하는 Text나 파일을 가져오는 기능입니다. Linux에도 같은 목적을 가진 wget 명령이 있지요.

이 기능이 그리 각광을 받지 못한 데에는 아마도 기존의 IDLnetURL 클래스를 이용한 자료 다운로드와 업로드가 그리 어렵지 않았기 때문으로 생각합니다. 사실 WGET() 함수도  내부에는 IDLnetURL을 사용하고 있는 간단한 프로그램이거든요. IDLnetURL을 이용하면 그래도 몇 줄을 써야 할 것을 한줄로 처리하게 만든 것입니다. 코드를 한번 확인해 보셔도 좋겠습니다.

IDL> .edit wget

물론, wget은 워낙 사용법을 단순화 시키다 보니 몇가지 제약도 있습니다. 대표적인 것은 ID와 PASSWORD가 있는 사이트에서 자료를 받지 못하는 것인데, 이런 경우에는 IDLnetURL을 사용해야 합니다. 물론 wget을 살짝 고쳐서 ID, PASSWORD를 사용할 수 있도록 만드는 것도 불가능한 일은 아닙니다.

사용상의 제약은 결국 존재하지만, 워낙 사용법이 단순하기 때문에, 저는 이제 슬슬 이 wget() 함수를 이용하기 시작했습니다. 단순하고 몸 편하게 해 주는 걸 이길 방법은 없네요.

NOAA의 Archive (FTP)

NOAA의 Archive (FTP)

ACE 위성의 1분 관측자료인 ace_mag_1m.txt 를 다운로드 받고자 합니다. 날짜별로 정리가 되어 있네요. 일단은 이 텍스트 파일을 IDL의 문자열로 읽어 들여 보겠습니다.

/STRING_ARRAY 키워드를 사용하는 경우 좌변 변수로 해당 파일의 내용이 문자열 배열로 저장됩니다. 굳이 파일로 저장해 놓을 필요 가 없는 경우라면 이 방식이 더 편하겠죠. 한번에 이미 IDL 배열로 옮겨져 있으니까요.

저장을 하고자 하는 경우라면, FILENAME 키워드를 사용하면 됩니다.

이 경우 wget의 좌변 변수에는 저장된 파일의 전체 경로와 파일 이름이 저장됩니다. 인터넷 상의 파일 이름과 저장하는 파일 이름이 꼭 같을 필요는 없습니다.  파일이 잘 다운로드 되었는지 확인해 보세요.

한번에 파일 하나씩만 다운로드 하는 제약은 없습니다. URL 문자열을 배열로 지정하면 여러개의 자료를 한번에 다운로드 할 수도 있습니다.

자, 이렇게 해서 열흘치 데이터를 다운로드 받았습니다. 열흘치를 받을 수 있다는 것은 뭐… 더 많은 날의 자료도 다운로드 받을 수 있다는 의미죠. 별 노력을 추가하지 않고도 말이죠.

다음 그림은 기상청의 월평균기온 분포도 웹페이지입니다. URL 부분을 확인해 보세요.

기상청의 월별 평균기온 분포도

기상청의 월별 평균기온 분포도 웹서비스

URL을 보면 규칙성이 보입니다. YYYY-MM 형태만 만들어 내면 되겠군요.

다운로드가 잘 된 것 같습니다. 확인해 보는 것은 어렵지 않지요.

IDL> im = image(result[0])

Image 파일 다운로드 결과 확인

기상청의 월평균기온 분포도 이미지 다운로드 결과 확인