4. CLIK API
CLIK Open Application Program Interface (API)는 사용자가 프로그래밍을 이용하여 자료를 사용할 수 있도록 하는 서비스입니다. API를 이용하여 자신의 코드내에 자료를 다운로드하는 코드를 추가할 수 있습니다. CLIK 플랫폼은 현재 API를 사용할 수 있는 API Client를 Python, Java 두 가지 언어로 제공하고 있습니다. 이 튜토리얼에서는 Python 언어를 이용하는 방법을 소개합니다.
가. API Key 설정
API Key는 API를 사용할 때 필수적입니다. 사용자 Key는 다음과 같이 설정할 수 있습니다.
(그림 3-5-1) 사용자 Key 발급
key=810050f2-727e-5ed3-a871-b7a881a04d34
request_url=https://request.apcc21.org/apccdata
status_url=https://request.apcc21.org/status
[코드 1] apccapi.properties
나. API Client 설치
CLIK은 Python 언어로 작성된 API Client를 제공하고 있습니다. 다음과 같은 방법으로 API Client를 설치할 수 있습니다.
$ wget http://download.apcc21.org/pythonapi -O apccapi.tar.gz
$ tar xvf apccapi.tar.gz
[코드 2] API Client 다운로드 및 설치
다. API Client 사용
API Client를 설치한 후 사용자는 프로그램 내에서 자료를 요청하기 위해서 API를 호출할 수 있습니다.
사용자는 Python을 사용하여 다음과 같이 3개월, 6개월 MME 자료를 내려받을 수 있습니다. 예제의 type, method, variable 등의 선택사항은 Dataset 다운로드 페이지에서 확인할 수 있습니다
#!/usr/bin/env python
import apccapi
c = apccapi.Client()
c.retrieve(
{
'jobtype': 'MME',
'dataset': 'MME_3MONTH',
'type': 'FORECAST',
'method': 'SCM',
'variable': ['prec', 't2m'],
'period': ['Monthly mean'],
'yearmonth': ['201909', '201910']
},
'mme3.zip'
)
[코드 3] Python 예제: MME (3-Month)
#!/usr/bin/env python
import apccapi
c = apccapi.Client()
c.retrieve(
{
'jobtype': 'MME',
'dataset': 'MME_6MONTH',
'type': 'HINDCAST',
'method': 'GAUS',
'variable': ['prec', 't2m'],
'period': ['Monthly mean', 'Seasonal mean'],
'yearmonth': ['201909']
},
'mme6.zip'
)
[코드 4] Python 예제: MME (6-Month)
사용자는 Python을 사용하여 다음과 같이 MME 모델 자료를 내려받을 수 있습니다. 예제의 type, institute, model, variable 등의 선택사항은 Dataset 다운로드 페이지에서 확인할 수 있습니다.
#!/usr/bin/env python
import apccapi
c = apccapi.Client()
c.retrieve(
{
'jobtype': 'MODEL',
'dataset': 'MODEL',
'type': 'FORECAST',
'institute': 'APCC',
'model': 'SCOPS',
'variable': ['prec', 't2m'],
'yearmonth': ['201909']
},
'model.zip'
)
[코드 5] Python 예제: Model
사용자는 Python을 사용하여 다음과 같이 CMIP5 자료를 내려받을 수 있습니다. 예제의 code 값은 Dataset 다운로드 페이지에서 확인할 수 있습니다.
#!/usr/bin/env python
import apccapi
c = apccapi.Client()
c.retrieve(
{
'jobtype': 'CMIP5',
'dataset': 'CMIP5',
'code': 'AD'
},
'cmip5.zip'
)
[코드 6] Python 예제: CMIP5