IDL 8.2의 새로운 기능

IDL 8.2에 IDL 그래픽에 대한 다양한 기능이 추가됩니다.
위젯 프로그래밍에 새로운 스타일과 기능이 지원되고, ENVI의 사용자 정의 툴 개발 과정이 단순해집니다.
또한 프로젝트 개발 과정이 간소해지고, 유니코드 수학 기호를 위한 새로운 글꼴이 지원됩니다.
주) 만일 IDL이 처음이거나 구 버전에서 업그레이드 하는 경우라면 IDL 8.1에 대한 새 소식도 보십시오.

 

  1. 그래픽 (Graphic)
  2. 위젯 (Widget)
  3. 워크벤치 (Workbench)
  4. 기타 (Miscellaneous)

1. 그래픽 (Graphic)

굵은 선 그리기
IDL 8 2는 굵은 선을 더 높은 품질로 그립니다. 선이 1픽셀보다 굵어도 모서리와 교점을 깔끔하게, 곡선과 나선을 부드럽고 세세하게 처리합니다
모서리를 깔끔하게 연결합니다. 45도 이하에서는 비스듬하게, 그 이상에서는 뾰족하게 처리합니다.
두께가 일정하고, 중심을 더 높은 해상도로 나타냅니다.
두께가 일정하고, 끝을 직각으로 처리하며, 중심을 둥글게 나타냅니다.

ARROW 함수의 배열 인수(array argument)
기존의 ARROW 함수로는 한번에 화살표 하나만 그릴 수 있었지만, 이제는 화살표의 속성을 지정하는 다양한 인자들을 배열로 받아들일 수 있어 한번에 다수의 화살표를 그려낼 수 있습니다.
ARROW 함수의 도움말을 확인하세요

AXIS 함수의 사용자 범위
AXIS 함수의 새로운 COORD_TRANSFORM 속성으로 그래픽의 데이터 단위와 축 단위 사이에서 선형 변환을 정의할 수 있습니다. 예를 들면, 섭씨 도표에 적절한 기호와 레이블로 화씨 축을 추가할 수 있습니다. 전체 데이터 공간 범위의 일부분에 제한된 축 범위를 설정할 수도 있고, 데이터를 이동시키거나 확대 또는 축소시키면 축이 데이터와 함께 연동되도록 설정할 수도 있습니다.

SYMBOL 함수의 배열 인수
기존의 SYMBOL 함수로는 한번에 기호 하나만 그릴 수 있었지만, 이제는 한번의 명령으로 배열 데이터를 넘길 수 있어 다수의 심볼을 빠르고 쉽게 생성할 수 있습니다. SYMBOL 함수의 도움말을 확인하세요.

새로운 BACKGROUND_COLOR, BACKGROUND_TRANSPARENCY 속성
그래픽 함수에 BACKGROUND_COLOR, BACKGROUND_TRANSPARENCY 속성이 새로 추가됩니다. 예를 들면, PLOT 함수에 BACKGROUND_COLOR 속성을 설정하여 도표가 있는 영역의 배경을 바꿀 수 있습니다. SURFACE 등의 3D 그래픽에서 배경색을 설정하면 그래픽 뒤에 벽(wall)처럼 추가할 수 있고, WINDOW에서 배경색을 설정하면 전체 창(window)의 배경을 바꿀 수 있습니다. BACKGROUND_ TRANSPARENCY로는 배경색의 불투명도를 바꿀 수 있습니다. 아래와 같이 사용합니다..
p = PLOT3D(/TEST, BACKGROUND_COLOR='lemon chiffon', $
AXIS_STYLE=2, DEPTH_CUE=[0,1])
p.window.BACKGROUND_COLOR = 'lavender'

그래픽 창의 새로운 Erase 메서드
그래픽 창 객체에 ::Erase 메서드가 새로 추가됩니다. Erase 메서드는 창의 내용을 지우지만, 창을 닫지는 않습니다. 따라서 창을 새로 만드는 부담없이, 기존의 창에 새 그래픽을 만들 수 있습니다. COLOR 키워드로는 내용을 지운 후에 배경색을 바꿀 수 있습니다. WINDOW 함수의 도움말을 확인하세요.

모든 그래픽 함수를 위한 새로운 CLIP 속성
모든 그래픽 함수에 CLIP 속성이 새로 추가됩니다. CLIP=1이 기본 설정으로, 데이터 공간 범위 바깥으로 그래픽 오브젝트가 벗어나면 그 부분을 자동으로 잘라냅니다. CLIP=0으로 설정하면 그대로 그려냅니다. 주석 레이어에는 이 속성이 영향을 주지 않습니다.

새로운 DejaVuSans 트루타입(TrueType) 글꼴
IDL 배포판에 DejaVuSans 트루타입 글꼴이 새로 추가됩니다. 이 글꼴에는 다양한 유니코드 수학 기호가 포함되어 있으며 TEXT 함수를 통하여 TeX 명령어처럼 사용할 수도 있습니다. 이 글꼴은 Direct Graphics, Object Graphics, New Graphics에서 사용할 수 있으며, 내장 포맷 코드 !10을 통하여 이 글꼴을 선택하게 됩니다.
SHOWFONTTEXT 함수의 도움말을 확인하세요.

MAPGRID 함수의 새로운 LABEL_FORMAT, LATITUDES, LONGITUDES 속성
MAPGRID 함수에 LABEL FORMAT 속성이 새로 추가됩니다. 이 키워드에 사용자 함수를 연결시켜 경도와 위도 축의 라벨 형식을 사용자가 자유롭게 지정할 수 있습니다. LATITUDES 속성과 LONGITUDES 속성으로는 MAPGRID 객체에서 MAPGRIDLINE 자식 객체(child object)를 검색할 수 있습니다. 이를 이용하여 격자선의 모든 속성을 제어할 수 있습니다. 자세한 내용은 MAPGRID 함수의 도움말에서 확인할 수 있습니다.

불연속 색상표와 사용자 정의 색상표의 새로운 COLORBAR 속성
CONTOUR 함수와 COLORBAR 함수를 사용할 때 불연속 색상표를 사용할 수 있습니다. CONTOUR 생성 이후 COLORBAR를 만들면 컬러바는 자동으로 불연속 색상표로 만들어집니다. 또한 RANGE, RGB_TABLE, TAPER, TEXT_ORIENTATION 속성이 COLORBAR 함수에 새로 추가됩니다. 기존의 TICKNAME 속성과 함께 사용하여 사용자 정의 색상표를 만들 수 있습니다.
아래는 등치선도에서 불연속 색상표를 만드는 예시입니다.

file = FILEPATH('convec.dat', $
SUBDIR=['examples', 'data'])
z = READ_BINARY(file,DATA_DIMS=[248,248])
index = [0,30,60,90,120,150,220]
c1 = CONTOUR(z, /FILL, ASPECT_RATIO=1, DIM=[300,500], $
RGB_TABLE=39, RGB_INDICES=index, C_VALUE=index, $
LAYOUT=[1,2,1], AXIS_STYLE=0, MARGIN=0)

; Create a discrete colorbar with vertical orientation.
; The ends are automatically tapered for a filled contour.
cb = COLORBAR(TARGET=c1, TITLE='Convection', /BORDER, $
ORIENTATION=1, TEXTPOS=1, POSITION=[0.8,0.55,0.85,0.95])

c2 = CONTOUR(z, C_THICK=2, ASPECT_RATIO=1, /CURRENT, $
RGB_TABLE=39, RGB_INDICES=index, C_VALUE=index,$
LAYOUT=[1,2,2], AXIS_STYLE=0, MARGIN=0)

; Create a discrete colorbar with vertical orientation.
; Labels are centered on the colors for a line contour.
cb = COLORBAR(TARGET=c2, TITLE='Convection', /BORDER, $
ORIENTATION=1, TEXTPOS=1, POSITION=[0.8,0.05,0.85,0.45])

벡터 플롯에서 Legend 사용
LEGEND 함수로 VECTOR 플롯에 범례를 추가할 수 있습니다. 또한 각 범례 항목을 검색하고, 이들 항목에 대한 다양한 속성을 설정할 수 있습니다. 아래는 예시입니다.
; Set up the map projection, grid, and continents.
m = Map('Equirectangular', LIMIT=[0,-150,60,-45], $
LABEL_POSITION=0, COLOR='light gray', LABEL_COLOR='black')
m1 = MapContinents(FILL_COLOR='light gray')
; Read the wind data, create a vector plot
RESTORE, FILEPATH('globalwinds.dat', SUBDIR=['examples','data'])
v = Vector(u, v, x, y, /OVERPLOT, LENGTH_SCALE=2)
; Add the legend
l = Legend(SAMPLE_MAGNITUDE=10, UNITS='$m s^{-1}$', $
POSITION=m.MapForward(-45,61), /DATA, $
VERTICAL_ALIGNMENT='bottom‘)
자세한 내용은 LEGEND 함수의 도움말에서 확인할 수 있습니다.

IDL 그래픽스 사용법 도움말
IDL 8.2 도움말 시스템에 Image Analysis(영상 분석)부분이 새로 추가됩니다. 다이렉트 그래픽스와 오브젝트 그래픽스에서 전통적으로 사용되는 필터링 등의 기능에 대한 새로운 예제도 추가되었습니다.

2. 위젯 (Widget)

더 멋진 버튼 모양
비트맵 버튼의 모서리를 둥글게 하는 등, 마이크로소프트 윈도우 플랫폼의 위젯이 더욱 현대적으로 탈바꿈합니다.

알파 채널 버튼 이미지
위젯에서 32-bit(RGBA) 이미지를 사용하여 비트맵 버튼을 만들 수 있습니다. 전체 정보는 WIDGET_BUTTON과 WIDGET_TREE에서 확인할 수 있습니다.

WIDGET_TREE

  • 체크박스(checkbox)
    트리 위젯(tree widget)에 체크박스가 추가됩니다. ‘체크박스’ 관련 키워드로 체크박스 기능을 사용할 수 있습니다. 자세한 내용은 WIDGET_TREE 도움말에서 확인할 수 있습니다.
  • SENSITIVE 키워드 변경
    WIDGET_TREE에서 SENSITIVE 키워드는 전체 트리나 개별 노드에 대하여 감도를 설정할 수 있습니다.

WIDGET_CONTROL

  • REDRAW 키워드
    윈도우에서 REDRAW 키워드로 위젯과 하위 위젯(child widget)을 위한 위젯 업데이트를 허용하거나 불허할 수 있습니다. 이 키워드가 UPDATE 키워드와 다른 점은 위젯과 하위 위젯에게만 영향을 미친다는 것입니다. 그리고 REDRAW가 1로 설정될 때마다 지정된 위젯과 하위 위젯이 즉시 새로 그려집니다 유닉스에서는 UPDATE 키워드와 동일하게 사용됩니다.
    자세한 내용은 WIDGET_CONTROL 도움말에서 확인할 수 있습니다.
  • SENSITIVE 키워드 변경
    WIDGET_CONTROL에서 SENSITIVE 키워드는 노드의 감도를 다이내믹하게 업데이트합니다.

3. 워크벤치 (Workbench)

파일명 중복
IDL 워크벤치는 루틴의 중복된 이름을 자동으로 검사하고, 관련 코드 라인과 Problems View에서 경고 아이콘을 나타냅니다. 또한 환경설정으로 이 작동을 조정할 수 있습니다.

IDL 빌드 속성 페이지 업데이트
프로젝트 빌드 속성이 간결해집니다. 기본 빌드와 사용자 정의 빌드의 차이가 없어지고, 몇몇 옵션은 간단해집니다. 자세한 내용은 IDL Build Properties(빌드 속성)에서 확인할 수 있습니다.

ENVI 확장 마법사
IDL 워크벤치를 사용하여 사용자 정의 ENVI 툴(tool)을 만들 수 있습니다. ENVI 확장 마법사를 이용하여 ENVI의 툴박스에 추가할 기능들을 개발해 보세요.

Drop-in Plugin 지원
IDL 워크벤치는 Eclipse dropins 폴더를 지원합니다. dropins 폴더는 IDL이 설치될 때에 설정된 bin 디렉터리 아래에 있습니다. 새로운 플러그인을 이 폴더에 넣으면 IDL 워크벤치에 새로운 기능이 등록됩니다. 자세한 내용은 dropins 폴더의 README 파일에서 확인할 수 있습니다.

4. 기타 (Miscellaneous)

PDF 문서
도움말의 Additional Topics(추가 주제) 메뉴에 PDF 문서 목록이 있습니다.

ISA 함수의 새로운 NULL 키워드
ISA 함수는 NULL 키워드를 사용하여 함수의 입력 변수가 !NULL과 같으면 1(TRUE)을, 그렇지 않으면 0(FALSE)을 리턴합니다.

IDL_Container의 새로운 NULL 기능
IDL_Container::Get 메서드는 NULL 키워드를 사용하여 어느 객체도 리턴되지 않을 때에 -1 대신 !NULL을 리턴합니다. 또한 IDL_Container::Remove 메서드는 !NULL이 들어올 경우에 에러를 내지 않고 조용히 완료됩니다. 이 기능이 추가됨에 따라 컨테이너에서 특정 타입의 모든 오브젝트를 제거할 때에 따로 에러 체크 기능을 구현할 필요가 없어집니다. 아래와 같이 간단히 사용하세요.
obj->Remove, obj->Get(/ALL, ISA='MyClass', / NULL)

BigTIFF 파일 지원
32-bit 시스템을 포함한 모든 플랫폼에서 4GB 이상의 TIFF 파일을 읽고 쓸 수 있습니다. API가 바뀐 것은 없습니다. 4GB 이상의 TIFF 파일을 생성할 때는 IDL이 자동으로 BigTIFF 헤더를 사용합니다.

동영상 파일 생성에 대한 도움말
IDLffVideoWrite의 자세한 사용법은 새로 추가된 도움말 메뉴인 Creating Video(비디오 제작)에서 확인할 수 있습니다.

JSON(JavaScript Object Notation) 지원
새로운 JSON_PARSE, JSON_SERIALIZE 함수를 사용하여 파일이나 IDL 변수를 JSON 문자열로 변환할 수 있고, 그 반대도 가능합니다. JSON은 사람이 읽고 쓰기 쉽도록 설계된 가벼운 데이터 교환 포맷입니다. JSON 서식에 대한 자세한 내용은 http://www.json.org에서 확인할 수 있습니다.

새로운 List::Where, Hash::Where 메서드
IDL의 문법적 일관성을 높이기 위하여 List::FindValue 메서드를 List::Where로 Hash::FindValue 메서드를 Hash::Where로 변경합니다. FindValue 메서드는 여전히 작동하지만 더 이상 문서화되지 않고, 업데이트되지 않을 계획입니다.

IDL 8.2 SP 1의 기능

업데이트된 8.2.1의 새기능에 대한 설명은 IDL 8.2.1(8.2 SP1)의 새기능 둘러 보기도 보십시오.

기존 IDL 8.0 기능

만일 IDL이 처음이거나 구 버전에서 업그레이드 하는 경우라면 IDL 8.1에 대한 새 소식도 보십시오.
우) 06049 서울시 강남구 논현로150길 8 (논현동, 진영빌딩) 5층 (주)에스이랩 / TEL : 02-888-0850 / FAX : 02-878-1971
COPYRIGHT 2018 SELab. ALLRIGHT RESERVED.