SMALL

IDL 707

TYPENAME 함수의 활용

TYPENAME 함수는 IDL 8.0 버전에서 처음 도입된 함수로서, 그 명칭에서 짐작할 수 있듯이 대상 인자 값의 자료형(Data Type)이 무엇인가를 확인하여 전달해주는 역할을 합니다. 아주 단순한 기능이지만 프로그래밍 작업에 있어서 꽤 유용하게 사용될 수 있는 기능이기도 합니다. 예를 들어 2라는 정수형 값에 대하여 이 함수를 적용하면 다음과 같이 이 값이 정수형이라는 의미로 'INT'라는 문자열을 전달받게 됩니다.IDL> PRINT, TYPENAME(2)INT만약 2.0이라는 값을 인자로 주면 다음과 같이 실수형 값이라는 의미로 'FLOAT'라는 문자를 전달받게 됩니다.IDL> PRINT, TYPENAME(2.0)FLOAT함수에 투입되는 인자는 값 자체일수도 있고 변수가 될 수도 있습니다. 다음..

과거 게시물들에 대한 재정비

제가 이 블로그를 개설한지 이제 대략 만 15년 정도가 되었습니다. 그 동안 700개가 넘는 IDL 관련 게시물들을 올린 바 있는데요. 이러한 게시물들 중에는 올린지가 꽤 오래된 초창기의 게시물들도 많습니다. 연식으로 따지면 10년이 넘는 게시물들인데, 시기상으로 보면 주로 IDL 8.0 버전이 출시된 직후부터 8.1, 8.2 버전들이 나오던 시절이었습니다. 어쨌든 올린 게시물들의 숫자가 커지다보니 저도 그 내용을 일일이 다 기억하기 힘든 경우가 많습니다. 그래서 뭔가 게시물을 작성할라고 내용을 구상할 때, 이 내용이 혹시 과거에 이미 올렸던 것과 중복되는 것은 아닐까 싶어서 한번쯤 의심 및 확인을 거치게 됩니다. 그러다보니 블로그 내에서 게시물 검색을 자주 하는 편입니다. 즉 블로그 메인 페이지에서 우..

IDL/General 2025.05.28

FOREACH 구문 소개

오늘은 IDL 8.0 버전부터 새로 도입된 FOREACH라는 구문(Statement)을 소개하기로 하겠습니다. 이름을 봐서는 아무래도 FOR문과 흡사한 역할을 할 것 같다는 느낌이 먼저 듭니다만, 사용법은 약간 다릅니다. 사실 IDL에서는 반복형 구문으로서 FOR, WHILE, REPEAT 구문들이 지원되는데 FOREACH 구문은 가장 나중에 도입된 반복형 구문이라고 보시면 됩니다. 그러면 FOREACH 구문의 예제를 하나 보도록 하겠습니다. 그러면 아마 FOR 구문과의 차이점을 확연히 느낄 수 있을 것입니다. 다음과 같이 a라는 배열을 먼저 생성해봅시다. a = 100*INDGEN(11) 이 배열은 0, 100, 200, ..., 900, 1000과 같은 11개의 정수값들로 이루어져 있습니다. 이 배열..

IDL/Programming 2025.05.26

CASE 구문과 SWITCH 구문

IDL에서 지원되는 구문들(Statements) 중에는 여러가지 경우들 중 조건에 부합되는 하나의 경우에 대하여 지정된 작업이 실행되도록 해주는 CASE 구문 및 SWITCH 구문이 있습니다. 그런데 CASE와 SWITCH는 얼핏 보면 비슷해 보일 수도 있지만 세부적인 기능은 서로 다릅니다. 오늘은 이 두가지 구문들 각각에 대한 개요 및 서로간의 차이점을 살펴보기로 하겠습니다. CASE 구문은 여러가지 경우들 중 조건에 부합되는 하나의 경우에 대하여 지정된 작업을 실행하도록 하는 구문입니다. CASE 구문은 기본적으로 CASE로 시작하여 ENDCASE로 끝나는 구조를 갖습니다. 간단한 예제를 보면 다음과 같습니다. x = 2CASE x OF 1 : PRINT, 'one' 2 : PRINT, '..

IDL/Programming 2025.05.20

QHULL 함수를 이용하여 최대 볼록 다각형 찾기 (3차원)

2차원 이상의 공간 내에서 다수의 점들이 분포하는 상태에서 Quick Hull 알고리즘에 의하여 이 점들을 모두 포함하는 최대 크기의 볼록 다각형(Largest Convex Polygon)을 찾아내는 작업을 IDL에서 QHULL 함수를 사용하여 수행하는 방법 및 예제를 지난 회차 게시물에서 소개한 바 있습니다. 지난 예제의 경우는 2차원 공간상에 분포한 데이터 포인트들을 대상으로 하였는데요. 기본적으로 QHULL 함수는 2차원 이상인 경우에 대하여 적용이 가능합니다. 그래서 오늘은 3차원 공간상에 분포한 데이터 포인트들을 대상으로 QHULL 함수를 적용해보는 예제를 소개해보고자 합니다. 먼저 다음과 같이 3차원 공간상에 분포하는 10개의 포인트들에 대한 X, Y, Z 좌표 데이터를 생성하는 방식으로 가상..

IDL/Programming 2025.05.14

QHULL 함수를 이용하여 최대 볼록 다각형 찾기 (2차원)

오늘은 IDL에서 Quick Hull 알고리즘을 사용할 수 있게 해주는 QHULL 프로시저를 소개해보고자 합니다. 이 알고리즘은 2차원 이상의 공간 내에서 다수의 점들이 분포하는 상태에서 Quick Hull 알고리즘에 의하여 이 점들을 모두 포함하는 최대 크기의 볼록 다각형(Largest Convex Polygon)을 찾아내는 기법입니다. 그러면 2차원 공간 내에 존재하는 임의의 점들을 가정하여 그 과정을 살펴보기로 하겠습니다. 먼저 다음과 같이 10개의 점들로 구성된 가상 데이터를 생성하고 이 점들을 2차원 공간상에 표시해봅시다. x1 = RANDOMU(-1, 10)*10 y1 = RANDOMU(-2, 10)*10+50 win = WINDOW(DIMENSIONS=[600, 600], /NO_TOOLBA..

IDL/Programming 2025.05.07

POLARPLOT 함수 소개 [2]

POLARPLOT 함수는 NG 체계에서 극좌표(Polar Coordinate) 기반의 플롯을 표출할 수 있도록 해주는 그래픽 함수로서, 이 함수의 기본적인 역할 및 사용법에 관해서는 예전에 관련 게시물을 통하여 소개를 한 바 있습니다. 다만 이 당시 소개했던 예제 및 표출 그림들을 보면 데이터 포인트들이 모두 동일한 색상으로 표시되어 있습니다. 그러면 예전 게시물에서 사용했던 것과 유사한 방식으로 예제 데이터를 생성하고 POLARPLOT 함수를 사용하여 그림을 표출하는 과정을 먼저 진행해봅시다. n = 61 r = FINDGEN(n)/6theta = FINDGEN(n)*18*!DTOR win = WINDOW(DIMENSIONS=[600, 600], /NO_TOOLBAR) p = POLARPLOT(r, t..

IDL/New Graphics 2025.04.29

Permil 기호의 표시 featuring 유니코드 문자 사용법

IDL의 NG 체계에서 Tex 형식의 특수 문자 및 기호들을 사용하는 방법에 관해서는 예전에 관련 게시물들(링크1, 링크2)을 통하여 소개한 바 있습니다. 예제를 하나 보면 다음과 같습니다. win = WINDOW(DIMENSIONS=[600, 400], /NO_TOOLBAR)tx = TEXT(0.5, 0.5, '$\alpha\beta\gamma\Mars\Sun$', $ FONT_SIZE=36, ALIGNMENT=0.5, /NORMAL)이와 같은 방식으로 다양한 특수 문자 및 기호들을 표시할 수 있습니다. 그런데 이런 작업을 하다보면 특정한 문자나 기호가 제대로 표시되지 않는 경우가 가끔 있습니다. 예를 들면 Permil(천분율) 기호가 그러한 케이스인데요. 일단 이 기호의 모습을 보면 다음과 같습니다..

IDL/Programming 2025.04.22

Yale Bright Star Catalog 데이터 읽기 (개선된 방법)

최근에 Yale Bright Star Catalog(예일 밝은 별 목록, YBSC) 데이터를 바이너리 파일(Binary File)의 형태로 입수하여 그 파일을 읽고 관련 표출을 해보는 방법을 총 4회에 걸쳐서 연재한 바 있습니다. 그래서 제가 전달하고자 했던 모든 내용들은 이미 다 소개가 된 상태입니다. 다만 이번에 또 YBSC 데이터 읽기라는 타이틀로 또 다른 게시물을 올리게 된 이유는, 해당 바이너리 파일을 IDL에서 읽고 그 데이터를 배열로 가져오는데 있어서 이미 소개된 READ_BINARY 함수를 주로 사용하는 방식 외에도 또 다른 방식들이 있다는 것을 소개할 필요가 있다는 판단 때문입니다. 그래서 오늘은 그 방법들을 자세히 소개해보기로 하겠습니다. 방금 언급했듯이 기존에 소개했던 방식은 주로 R..

IDL/Programming 2025.04.15

Yale Bright Star Catalog 데이터를 읽고 처리하기 [4]

지난 회차 게시물에서는 Yale Bright Star Catalog(예일 밝은 별 목록, YBSC) 공식 웹페이지에서 바이너리 파일(Binary File)로 제공되는 데이터를 IDL에서 배열로 읽어들이고, 별들의 좌표 데이터(RA, Dec)를 이용하여 별들을 맵(Map) 상에 표시하는 작업을 진행하였습니다. 이 작업에서는 기본적으로 IDL의 지도 표출 기능을 사용하였습니다. 다만 경도 및 위도 대신 RA 및 Dec 좌표값들이 표시되어야 하는 천체 지도의 특성을 반영하기 위하여 라벨 문자들의 표시 내용 맟 형식을 유저가 직접 커스터마이즈하는 역할을 하는 함수형 부프로그램(mapgrid_labels_bsc5.pro)을 별도로 제작하여 활용한 바 있습니다. 이러한 방법을 동원하여 지난 회차에서 표출했던 그림을..

IDL/Programming 2025.04.08
728x90