SMALL

IDL/Data Type & Format 35

구조체(Structure)에 관하여

IDL에서 지원되는 자료형(Data Type)들을 보면 정수(Integer), 실수(Float), 문자(String) 등과 같은 아주 기본적인 것들 그리고 긴 정수(Long Interger), 64비트 긴 정수(64bit Long Interger), 2배 정밀도 실수(Double Precision) 등과 같이 값의 비트(bit) 수가 더 높아서 더 많은 단계의 값들을 표현할 수 있도록 해주는 것들이 있습니다. 그런데 이러한 것들 외에도 일종의 특수 자료형이라고 할 만한 것들도 있는데 구조체(Structure), 포인터(Pointer), 리스트(List), 해쉬(Hash) 등이 이러한 범주에 해당됩니다. 제가 이 블로그에서 예전에 리스트와 해쉬에 관해서는 관련 게시물들을 올린 바 있습니다. 참고로 이 게시..

해쉬(Hash) 자료형에 관하여

IDL 8.0 버전에서부터 지원되기 시작한 자료형(Data Type)들인 리스트(List)와 해쉬(Hash)에 관하여 순차적으로 소개하고 있습니다. 먼저 리스트(List) 자료형에 관해서는 앞서 관련 게시물들(링크1, 링크2)을 통하여 소개한 바 있고, 이제 해쉬(Hash) 자료형에 관하여 살펴보기로 하겠습니다. 이미 소개된 리스트(List)와 마찬가지로 해쉬(Hash)도 일종의 복합형 자료형의 성격을 띈다고 볼 수 있습니다. 다만 해쉬의 경우는 일종의 사전(Dictionary)와 같은 성격을 띕니다. 즉 어떤 원소값이 있으면 이 값에 대응되는 키(key)라는 것이 반드시 존재하여, 각 원소는 키-원소값의 쌍(key-value pair)의 형태가 되어야 합니다. 이러한 '사전'과 같은 형태의 자료형은 이..

리스트(List) 자료형에 관하여 [2]

IDL 8.0 버전에서부터 도입된 복합형 자료형인 리스트(List)에 관하여 소개하고 있습니다. 지난 회차 게시물에서 바로 이어지는 내용입니다. 다수의 리스트 개체들을 합쳐서 하나의 리스트 개체로 만들 수도 있습니다. 이를 위해서는 + 연산자를 사용하면 되며 그 예제를 보면 다음과 같습니다. IDL> lst1 = LIST('zero', 1, 2.0)IDL> lst2 = LIST(!pi, 'one', [1, 2, 3, 4])IDL> lst3 = lst1+lst2IDL> PRINT, lst3 zero 1 2.0000000 3.1415927 one 1 2 3 4 연산자 EQ를 이용하여 두 리스트 개체들을 서로 비교할 수도 있..

리스트(List) 자료형에 관하여 [1]

리스트(List)와 해쉬(Hash)는 IDL 8.0 버전에서부터 지원되기 시작한 자료형(Data Type)들입니다. 이 두 자료형들은 기존의 정수, 실수, 문자 등과 같은 단일형 자료형과는 다른 일종의 복합형 자료형의 성격을 띕니다. 즉 서로 다른 자료형의 값들을 한꺼번에 품을 수 있는 특성을 갖는다고 보면 됩니다. IDL 8.0 버전 이전에는 구조체(Structre)만이 이러한 복합형 자료형의 범주에 속했지만, 그 이후부터는 리스트와 해쉬 자료형들까지 추가되면서 IDL에서 활용 가능한 복합형 자료형들의 범위가 더 넓어졌다고 볼 수 있습니다. 그래서 리스트 및 해쉬 자료형에 관하여 순차적으로 소개해보고자 합니다. 오늘은 첫번째 순서로 리스트(List) 자료형에 관하여 알아보기로 하겠습니다. 리스트 자료형..

ISA 함수의 활용

이번에 소개할 ISA 함수는 얼마전 별도의 게시물을 통하여 소개했던 TYPENAME 함수와 유사한 측면도 있지만, 좀 더 확장된 기능을 갖고 있습니다. ISA 함수 역시 TYPENAME 함수와 마찬가지로 IDL 8.0 버전부터 도입된 함수입니다. 그러면 관련 예제들을 통하여 이 함수의 기능을 살펴보기로 하겠습니다.이 함수는 결과를 항상 1 또는 0이라는 값으로 전달합니다. 즉 주어진 인자가 특정한 자료형(Data Type)인지 또는 클래스인지 등등에 관하여 판단을 하고 그 결과를 참 또는 거짓에 해당되는 논리값인 1 또는 0으로 전달하는 것입니다. 먼저 사전에 정의되지 않은 변수에 대하여 이 함수를 적용해보면 다음과 같이 0이란 값을 출력합니다. 즉 존재하지 않는 변수라는 의미입니다.IDL> PRINT,..

TYPENAME 함수의 활용

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

JSON 파일의 읽기 및 처리 (Hash within List)

지난 회차에서는 리스트 내 리스트(List within List)의 형태로 데이터가 수록된 JSON 파일을 읽고 처리하는 방법 및 예제를 소개하였습니다. 오늘은 해쉬 내 리스트(Hash within List)의 형태로 데이터가 수록된 JSON 파일을 읽고 처리하는 방법에 관하여 예제와 함께 알아보겠습니다. 리스트 내 해쉬 (Hash within List) 지난 회 게시물에서는 해쉬 내 리스트의 형태로 데이터가 수록된 JSON 파일의 일부를 제시한 바 있습니다. 그 모습을 다시 보면 다음과 같습니다. [{"time-tag": "1749-01", "ssn": 96.7}, {"time-tag": "1749-02", "ssn": 104.3}, {"time-tag": "1749-03", "ssn": 1..

JSON 파일의 읽기 및 처리 (List within List)

IDL에서 JSON 형식의 파일을 읽는 방법에 관해서는 꽤 오래전에 관련 게시물을 올린 바 있습니다. 일반적으로 JSON 형식으로 배포되는 파일들은 내부에 많은 양의 데이터를 담고 있는 경우가 많으며, 그 데이터를 읽어서 배열의 형태로 가져오는 것이 최우선적인 과제가 됩니다. 그래야 실제로 처리 및 표출 등의 작업으로 이어질 수 있기 때문입니다. 앞서 언급한 과거의 관련 게시물에서도 언급을 한 바 있지만, 실제로 배포되는 JSON 파일들의 내용을 잘 보면 내부적으로 포함된 데이터의 형태가 리스트(List)인 경우 또는 해쉬(Hash)인 경우로 나눠집니다. 실제로 배포되는 JSON 파일들 중 한 파일의 모습을 일부만 살펴보면 다음과 같습니다. [["time_tag","dst"],["2024-02-14 08..

클래스 기반 문법에 의한 변수 및 배열 처리 [3]

IDL에서 변수 또는 배열을 일종의 클래스(Class) 기반의 문법으로 처리하는 방법에 관하여 소개하고 있습니다. 지난 회에 이어서 오늘은 IDL_String 클래스에 관하여 알아보겠습니다. 이 클래스에 대하여 지원되는 여러가지 메서드(Method)들 중에서 주목해볼만한 몇가지만 골라서 예제와 함께 살펴보고자 합니다. * 참고로 오늘 소개될 내용은 IDL 도움말에서 Routines (by Topic) -> Variable Functions and Attributes 섹션의 내용을 바탕으로 합니다. 그리고 이 내용은 해당 웹페이지를 통해서도 볼 수 있습니다. CharAt 메서드는 대상 문자열에 대하여 특정한 위치의 문자를 추출하는 역할을 합니다. 위치는 인덱..

클래스 기반 문법에 의한 변수 및 배열 처리 [2]

IDL에서 변수 또는 배열을 일종의 클래스(Class) 기반의 문법으로 처리하는 방법에 관하여 소개하고 있습니다. 지난 회에 이어서 오늘은 IDL_Variable 클래스에 관하여 알아보겠습니다. 이 클래스에 대하여 지원되는 여러가지 메서드(Method)들 중에서 주목해볼만한 몇가지만 골라서 예제와 함께 살펴보고자 합니다. * 참고로 오늘 소개될 내용은 IDL 도움말에서 Routines (by Topic) -> Variable Functions and Attributes 섹션의 내용을 바탕으로 합니다. 그리고 이 내용은 해당 웹페이지를 통해서도 볼 수 있습니다. 이 메서드는 대상 데이터를 기준값과 비교하는 역할을 하는데, 정확히 말하면 크다(GT), 똑같다(EQ), 작다(LT)..

728x90