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

IDL 8.5에 새로 등장하는 함수 중에 WGET() 이 있습니다. 웹이나 FTP에서 원하는 Text나 파일을 가져오는 기능입니다. Linux에도 같은 목적을 가진 wget 명령이 있지요. 이 기능이 그리 각광을 받지 못한 데에는 아마도 기존의 IDLnetURL 클래스를 이용한 자료 다운로드와 업로드가 그리 어렵지 않았기 때문으로 생각합니다. 사실 WGET() 함수도  내부에는 IDLnetURL을 사용하고 있는 간단한 프로그램이거든요. IDLnetURL을 이용하면 그래도 …

Continue reading ‘WGET 함수를 이용한 자료 다운로드’ »

image 표출에서 NaN의 활용

영상, 특히 위성 영상을 다루다 보면, 값이 없는 곳이 존재합니다. 일반적으로 이런 픽셀들을 -999 같은, 실제 영상에서 사용하지 않는 값으로 기록해 두는데, IDL에서 이 상태 그대로 표출을 하게 되면, IDL은 정말로 값이 -999 라고 간주하고 진지하게 표출을 하게 됩니다. 우리가 원하는 것은 그게 아니죠. 이럴 때, NaN 이라는 컴퓨팅에서 정의된 값을 사용해서 대부분 쉽게 해결될 …

Continue reading ‘image 표출에서 NaN의 활용’ »

READ_EXIF를 이용한 jpeg의 Meta정보 읽기

IDL 8.4.1 (IDL 8.4의 Service Pack 1)이 공개되었습니다. 관련링크 : IDL 8.4, ENVI 5.2 Service Pack 1 개발자로서가 아닌, 개인으로서 저의 관심은 READ_EXIF() 함수에 있었습니다. 요즘 디지털 카메라로 사진을 촬영하면, 카메라에 있는 GPS로 촬영장소의 위경도부터, 카메라는 어떤 것을 사용했는지, 렌즈 정보와 셔터속도, 조리개 등등 다양한 정보가 함께 저장됩니다. 이러한 메타정보의 포맷을 EXIF(Exchangeable image file format)라고 …

Continue reading ‘READ_EXIF를 이용한 jpeg의 Meta정보 읽기’ »

IDLwave (Emacs IDL 개발 환경)

IDLWave 라는 것이 있었습니다. Emacs 라는 개발환경에 구축한 IDL 개발환경입니다. Emacs는 VI 와 더불어 유닉스 계열 에디터의 양대 산맥이죠. 두 에디터에 대한 위키피디아를 보니 두 가지 모두 1976년부터 만들어진 에디터라고 하네요. 와우… 40년입니다. IDL 개발환경(IDLDE)이 IDL 7.0부터 eclipse 기반으로 완전히 바뀌었습니다. 이 이후로는 윈도우든, 리눅스든, 맥킨토시든 같은 조건의 개발환경을 사용하고 있습니다. 그런데 그 이전에는 수준이 …

Continue reading ‘IDLwave (Emacs IDL 개발 환경)’ »

Tool Bar 없는 New Graphics

IDL 8.4 부터는 Tool Bar 없이 New Graphics를 실행할 수 있게 되었습니다. 아주 사소한 것인데 유용합니다. New Graphics 창을 생성하는 WINDOW(), PLOT(), SURFACE() 등의 명령에서 모두 사용 가능하며, /NO_TOOLBAR 키워드를 사용하면 아래 버튼들 없이 심플한 New Graphics 창이 열립니다. Toolbar 버튼은 저장이나 프린트, 그리고 회전이나 Annotation 추가를 위해 유용한 도구일 수 있으나 필요 없는 경우도 …

Continue reading ‘Tool Bar 없는 New Graphics’ »

IDL 8.4에 등장한 Static Method, 그리고 문자열 치환

IDL이 8.0 버전을 넘어서면서부터 IDL을 만드는 개발자들(IDL로 만드는 개발자들 말구요)이 IDL의 문법 틀을 개편하는데 두려움이 없는 것 같다는 생각을 했는데, 이번 8.4버전 출시에도 역시 같은 생각입니다. 30년 넘게 사용되어 온 전통의 IDL 문법을 고친다는 것이 정말 만만한 일은 아닐텐데, 이런 일을 감행하고 있네요(물론 “거~~의 모든 과거의 코드들은 IDL 8.4에서도 잘 실행될 것입니다). 일반 사용자들에게, “자 …

Continue reading ‘IDL 8.4에 등장한 Static Method, 그리고 문자열 치환’ »

LEGO형 Surface

IDL 기본교육을 진행할 때, Contour와 Surface, Image는 일단 함께 설명을 드립니다. 이들 3가지 함수는 모두 2차원 배열을 표출하기 위해 존재하는 그래픽 함수이기 때문입니다. 물론 각각의 기능은 특화된 속성들을 가지고 있는데, Surface의 경우에는 STYLE=’LEGO’와 STYLE=’LEGOFilled’ 라는 옵션을 가지고 있습니다. 예상대로 Lego 블록을 쌓듯이 Surface를 사각기둥들로 구성하라는 옵션인데, 가끔 이런 질문을 받습니다. “그거 어디에 쓰나요?” 글쎄요. 제 …

Continue reading ‘LEGO형 Surface’ »

도움말의 북마크

IDL 과 ENVI의 도움말은 이제 HTML 문서로, 웹브라우저를 통해 조회하게 되어 있습니다. IDL이나 ENVI에서 도움말을 호출하면, 웹브라우저가 열리며(또는 열려 있는 웹브라우저에) 선택한 주제에 대한 도움말을 보여 줍니다. 저는 New Graphics를 쓰게 되면서 새로운 그래픽 설정들에 예전 Direct Graphics 처럼 익숙하지 않아서 툭하면 도움말을 찾아보고 있는데요, 특히 Color 이름은 평생 욀 수 없을 거 같다는 절망감이 …

Continue reading ‘도움말의 북마크’ »

resolve_all 의 유용한 키워드(ENVI 프로그램 컴파일)

resolve라는 단어는 “심도있게 파헤쳐 문제를 근원적으로 해결하다”라는 어감을 내포하고 있다고 합니다. 그런가 보죠. ^^. 우리 IDL 개발자들에게는 resolve_all 이라는 프로시저로 친숙합니다. 이 프로시저의 역할은, “현재 컴파일되어 있는 프로그램을 실행하는데 필요한 프로시저나 함수를 모두 찾아들어가 컴파일”하는 것입니다. 즉, 1단계 실행 프로그램 단계에서는 컴파일 되어 있는데, 그 내부적으로 아직 컴파일되지 않아 있는 루틴들을 더 찾아 모두 컴파일하고자 …

Continue reading ‘resolve_all 의 유용한 키워드(ENVI 프로그램 컴파일)’ »

TIMER EVENT에서의 이벤트 순서

최근 포스팅에서 WIDGET에서 사용할 수 있는 TIMER EVENT를 소개했는데요. 이번 시간에는 이벤트가 일어나는 순서에 대해서 이야기 해보려고 합니다. 다음 코드는 지난 시간에 사용했던 코드 중에서 다음과 같이 시간을 설정해주는 부분과, 이벤트가 실행되는 부분입니다.

 WIDGET_CONTROL, event.TOP, TIMER=stash.slt_time 이라는 부분은, auto_5s라는 프로시저에서 설정된 slt_time에 맞추어 XMANAGER에 의해서 다음 ‘slt_time’초 후에 반복적으로 이벤트를 실행하게 됩니다. 주의할 점은 …

Continue reading ‘TIMER EVENT에서의 이벤트 순서’ »