반응형

IDL/Programming 84

기상청 ASOS 자료의 공간 분포 표출 [2]

지난 회차 게시물에서는 기상청 ASOS 장비의 기상요소 관측자료를 기상자료 개방포털 웹페이지에서 CSV 파일로 수신한 다음 이 파일을 IDL에서 읽고 처리하여 특정한 시각에 대한 모든 지점들의 기온 값을 한반도 지도상에 표출하는 과정을 소개한 바 있습니다. 여기서는 BUBBLEPLOT 함수를 사용하여 각 지점의 위치에 버블이 표시되면서 그 색상이 기온 값에 따라 차등적으로 보이도록 하였습니다. 그런데 이와 같이 지점별로 존재하는 데이터를 바탕으로 일정한 경도 및 위도 범위의 격자들을 가정하여 2차원적인 격자 데이터로 계산하여 표출하는 것이 필요한 경우도 있습니다. 즉 불규칙한 분포를 하는 데이터들을 규칙적인 격자 데이터로 변환하는 작업인데, 이러한 변환 작업에 사용되는 여러가지 계산 기법들 중 Krigi..

IDL/Programming 2025.01.27

기상청 ASOS 자료의 공간 분포 표출 [1]

지난 회차 게시물에서는 기상청 ASOS 장비의 기상요소 관측자료를 기상자료 개방포털 웹페이지에서 CSV 파일로 수신한 다음 이 파일을 IDL에서 읽고 처리하여 개별 기상요소를 시계열 플롯의 형태로 가시화하는 과정을 관련 예제와 함께 소개한 바 있습니다. 여기서는 특정한 하나의 지점에 대하여 자료의 전체 기간에 걸친 기온의 시계열 플롯을 얻었는데, 오늘은 특정한 시각에 대한 모든 지점들의 기온 값들을 지도상에 표출하는 방식으로 작업을 진행해보겠습니다. 자료 파일은 지난 회차에서 사용했던 CSV 파일을 그대로 사용합니다.  또한 이 파일을 수신하고 READCOL 명령으로 읽는 과정까지는 지난 회차 게시물에서 소개했던 내용과 거의 동일합니다. 초반부의 과정은 다음과 같습니다. file = 'OBS_ASOS_T..

IDL/Programming 2025.01.20

기상청 ASOS 자료의 지점별 시계열 표출

지난 회차 게시물에서는 기상청 ASOS 장비의 지점 분포에 관한 메타 자료를 기상자료 개방포털 웹페이지에서 CSV 파일로 수신하여 IDL에서 읽고 처리하여 지점별 분포 현황을 가시화하는 과정을 관련 예제와 함께 소개한 바 있습니다. 오늘은 ASOS 장비에서 관측된 각종 기상요소 관측값들에 대한 자료를 역시 동일한 웹페이지에서 수신하여 IDL에서 처리 및 가시화하는 작업을 시도해보고자 합니다. ASOS의 기상관측자료를 수신하는데 있어서는 일정한 기간을 정하고 그 기간 동안 ASOS 모든 지점에서 관측된 기상요소 값들이 수록된 CSV 파일의 형태로 얻어봅시다. 이를 위해서는 기상자료 개방포털 웹페이지의 해당 섹션에서 필요한 설정을 하여 자료 파일을 수신하면 됩니다. 즉 이와 같이 종관기상관측(ASOS) 자료..

IDL/Programming 2025.01.14

기상청 ASOS 지점 분포 자료 획득 및 표출

대한민국 기상청에서는 각종 기상요소들(기온, 기압, 습도, 풍향, 풍속 등)에 대한 전국적인 관측을 위하여 종관기상관측장비(ASOS : Automated Synoptic Observing System)들을 전국에 걸쳐 다수의 지점들에 설치하여 운영하고 있습니다. 2024년 12월 기준으로는 97개의 지점들이 운영되고 있으며 각 지점별로 17종 이상의 기상요소들을 주기적으로 관측하고 있습니다. 이러한 ASOS 지점들에 대한 정보 및 각 지점별 관측요소 데이터는 기상자료 개방포털 웹페이지를 통하여 누구나 받을 수 있도록 서비스가 되고 있습니다. 그래서 기상청 ASOS 지점들의 분포 자료 및 각 지점별 기상관측자료를 받아서 IDL에서 이를 처리하고 가시화하는 작업들에 대한 예제를 앞으로 몇 차례에 걸쳐서 순차..

IDL/Programming 2025.01.07

JSON 데이터의 수신/처리/표출 예제

IDL에서 JSON 형식의 파일을 읽는 방법에 관해서는 제가 이 블로그에서 몇 차례 관련 게시물들(링크 1, 링크 2, 링크 3)을 올리면서 자세히 소개한 바 있고, JSON 형식의 파일을 읽고 간단하게 표출을 해보는 예제도 함께 소개한 바 있습니다. 오늘 소개할 내용도 기본적인 골격은 크게 다르지는 않습니다. 그냥 실제로 배포되는 JSON 형식의 데이터 파일을 수신하여 IDL에서 읽고 그림으로 표출하는 과정에 대한 하나의 실전 예제 정도로 생각해주시면 될 것 같습니다. 일단 예제로 사용할 JSON 파일은 아래에 링크를 통하여 다운로드받을 수 있습니다. https://services.swpc.noaa.gov/products/solar-wind/plasma-7-day.json 이 파일에 수록된 데이터는 항..

IDL/Programming 2024.12.23

HttpRequest 클래스 소개

오늘 소개할 HttpRequest 클래스는 HTTP 또는 HTTPS 서버와 접속하여 Get, Post, Put 등의 요청을 수행할 수 있도록 해주며, IDL 9.0 버전에서 처음 도입되었습니다. 오늘은 HttpRequest 클래스의 기능에 관하여 간략히 소개를 해볼까 합니다. 사실 이와 유사한 기능이 기존에 없었던 것은 아닙니다. 제가 예전에 관련 게시물을 통하여 소개했던 IDLnetURL 클래스 역시 그 역할은 비슷합니다. 다만 둘 사이에는 기능상의 차이가 좀 있는데 대략 요약해보면 다음과 같습니다. (1) HTTP, HTTPS 또는 FTP 서버에 접속(2) Get, Put 등의 메서드들이 지원되지만 Post 메서드는 지원하지 않음(3) 파일 다운로드 기능 탑재 (1) HTTP 또는 HTTPS 서버에 ..

IDL/Programming 2024.12.09

LABEL_DATE 함수의 활용법

IDL에서 날짜 기반의 데이터를 플롯(Plot)의 형태로 표출하는 방법에 관해서는 예전에 관련 게시물들(링크 1, 링크 2, 링크 3)을 통하여 소개했던 적이 있습니다. 이 게시물들에서는 주로 날짜 기반의 포맷 코드를 활용하는 방식으로 처리를 하였으며 이러한 포맷 코드의 사용 방법에 관해서도 관련 게시물들(링크1, 링크 2)을 통하여 따로 소개한 바 있습니다. 실제로 앞서 언급한 관련 게시물들에서는 PLOT 함수의 XTICKFORMAT 속성에 대하여 예를 들면 다음과 같은 방식으로 날짜 기반의 포맷 코드를 부여한 바 있습니다. XTICKFORMAT='(C(CMoA, " ", CDI, " ", CHI2.2, ":", CMI2.2))' 이러한 방식으로 처리하면 플롯의 X축의 눈금값들이 일정한 포맷의 날짜 형..

IDL/Programming 2024.09.24

IDL 8.9에서 추가된 상수 정의 기능

IDL 8.9에서는 상수(Constants)의 정의 기능에 있어서 업데이트된 사항들이 몇가지 있습니다. 그래서 관련된 주요 사항들을 정리하여 소개해보고자 합니다. 기존의 IDL에서는 복소수를 정의하는데 있어서 COMPLEX 함수를 사용하는 것이 유일한 방법이었습니다. 예를 들어서 복소수 2-3i를 정의하는 방법은 다음과 같습니다. a = COMPLEX(2, -3) HELP, a 이렇게 하면 출력된 내용을 통하여 확인할 수 있듯이 변수 a는 복소수 2-3i를 담게 됩니다. A COMPLEX = ( 2.00000, -3.00000) 그런데 IDL 8.9에서는 복소수를 정의하는 새로운 방법이 추가되었는데, 바로 알파벳 i 또는 j를 활용하는 방법입니다. 즉 다..

IDL/Programming 2023.06.29

IDL 8.9의 Literal Strings 문법

IDL에서는 문자값을 정의할 때 항상 따옴표를 사용하는데, 따옴표는 싱글 또는 더블 모두 가능합니다. 즉 다음 두 경우는 모두 같은 결과를 출력합니다. PRINT, 'IDL 8.9 is now available' PRINT, "IDL 8.9 is now available" 그런데 만약 다음과 같은 문장을 출력하고 싶다고 합시다. There are 43 persons in this class 그리고 저 43이라는 값이 n이라는 변수에 저장된 상황을 가정합니다. 그러면 위와 같은 문장을 출력하기 위해서는 기존에는 다음과 같은 문법으로 처리해야 했습니다. n = 43 PRINT, 'There are '+STRTRIM(n, 2)+' persons in this class' 이것은 정수형 값 변수인 n을 문자값 ..

IDL/Programming 2023.06.28

음수 범위를 로그 스케일(Log Scale)로 표시하기

IDL에서 플롯 계열의 표출을 하는데 있어서 축(Axis)의 눈금을 로그(Log) 스케일로 표시하는 기능은 이미 예전부터 지원되어오고 있습니다. NG 체계의 PLOT 함수 및 DG 체계의 PLOT 프로시저 모두 /XLOG 및 /YLOG 키워드를 사용하여 설정하면 됩니다. 간단한 예제를 하나 본다면 다음과 같습니다. x = FINDGEN(11) y = x*450+500 win = WINDOW(DIMENSIONS=[600, 500], /NO_TOOLBAR) p = PLOT(x, y, YRANGE=[100, 10000], /YLOG, YTICKUNITS='exponent', $ SYMBOL='circle', /SYM_FILLED, COLOR='crimson', CLIP=0, FONT_SIZE=10, $ MAR..

IDL/Programming 2023.04.25