기상정보 API 활용하기 1 – 기상청 API소개 및 기본적인 이용법

기상정보 API 활용하기 1 – 기상청 API소개 및 기본적인 이용법

라즈베리 파이 피코 보드를 활용하여, 기상예보를 표시해 주는 간단한 장치를 만들어보기로 했다. 이를 위해서는 기상정보를 가져와야 하는데, 일반적으로 국내에 알려진 활용 가능한 대표적인 기상정보 API는 다음 2가지가 있다.

1. Openweather API

se-l-text” id=”SE-546b5a52-5800-408a-b7bc-10c606992ea5″>

546b5a52-5800-408a-b7bc-10c606992ea5″, “data” : {“link” : “https://openweathermap.org/api”, : “false”, “thumbnail” : ”

가장 먼저 기상정보의 Source로 활용을 고려해 볼 수 있는 것은 기상정보 API로 매우 널리 알려진 Openweather API이다. 이 API는 하루에 1000회 접속까지 무료이어서, 개인이나 소규모 단체에서 사용하는 데는 비용이 들지 않고, 단기예보 외에도 중장기 예보까지 제공이 되며, 과거 기록도 살펴볼 수 있는 것으로 알려져 있다. 또한 가장 중요한 특징은 어느 특정 국가에 국한되지 않고, 지구상 어느 곳이던지 경도와 위도 정보를 가지고 날씨예보를 살펴볼 수 있다는 점이 가장 중요한 특징이다.

다만 전 세계 기상 정보를 취급한다는 것은 좋은 점이기는 하지만, 그만큼 우리나라의 좁은 구역을 세세하게 다루기는 어려울 것 같다는 생각도 든다.

2. 우리나라 기상청 단기예보 API

우리나라 기상청에서도 기상예보에 대한 API를 운영하고 있으며 다음 링크로 접속이 가능하다.

https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15084084

se-l-image” id=”SE-846780ca-921f-47db-b681-adaafc8f4bb2″>

846780ca-921f-47db-b681-adaafc8f4bb2″, “data” : {“link” : “https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15084084”, : “false”, “thumbnail” : “https://dthumb-phinf.pstatic.net/?src=%22http%3A%2F%2Fdata.go.kr%2Fimages%2Fbiz%2Fdata-search%2Fbg-nation.png%22&type=ff120

참고로 이 기상청 Open API는 다음 링크로 접속 가능한 우리나라 정부에서 운영 중인 공공데이터 포털에 포함된 Open API들 중의 하나이다. 기상청 API 외의 다양한 API들을 여기서 찾아 활용할 수 있다.

https://www.data.go.kr/index.do

se-l-image” id=”SE-d29c2acf-7e43-4332-9eb8-b765f0e7e025″>

d29c2acf-7e43-4332-9eb8-b765f0e7e025″, “data” : {“link” : “https://www.data.go.kr/index.do”, : “false”, “thumbnail” : “https://dthumb-phinf.pstatic.net/?src=%22http%3A%2F%2Fdata.go.kr%2Fimages%2Fbiz%2Fdata-search%2Fbg-nation.png%22&type=ff120

기상청 API를 실제로 활용하기 위해서는 기상청 API 소개 화면을 살펴보면 다음과 같다.

여기서 이 화면 중간 부분에 있는 활용신청 메뉴를 통해

필요한 정보를 기입하고,

필요로 하는 항목 및 라이선스 항목에 동의를 확인해 주고 사용신청을 하면

다음과 같이 곧바로 승인이 된다.

이 “승인” 부분을 클릭해 주면 다음과 같이 접속에 필요한 인증키 2종을 확인할 수 있다.

(참고로, 사용조건에 따라 동작하는 인증 키가 달라질 수 있다고 하는데, 내 경우에는 첫 번째 인증키로 접속 가능했다.)

3. 이용방법

위에서 접속용 인증키를 성공적으로 발급받았으면, 신청 화면에 있던 다음 안내서를 다운로드해서 압축을 푼다.

이 파일의 압축을 풀면 다음과 같이 워드 파일과, 엑셀파일이 나오는데,

엑셀파일은 우리나라 각 주소의 경도와 위도 관련 정보이고, 워드 파일은 실제 API를 활용하는 방법에 관한 안내서이다.

워드 파일에는 예보의 종류에 따라 설명과 예 제과 포함되어 있는데, 내가 필요로 하는 단기 예보의 경우,

접속 주소는 http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst라는 내용과 실제 접속 에제로서 다음과 같은 명령어가 제시되어 있다.

http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst

?serviceKey=인증키&numOfRows=10&pageNo=1

&base_date=20210628&base_time=0500&nx=55&ny=127

여기서 전체는 하나의 명령어로 입력되어야 한다.

즉, 값을 요청할 때는 http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst?serviceKey=인증키&numOfRows=10&pageNo=1&base_date=20210628&base_time=0500&nx=55&ny=127 의 형태가 되어야 한다는 의미이다.

이러한 요청문중 인증키 부분은 위에서 확인한 인증키 값을 해당 부분에 넣어야 하고(따옴표 없이), 마지막 부분에는 예측 기준일과 기준 시간, 예보 수(numOf Rows와 pageNo)를 적게 된다. 마지막 부분의 nx와 nyy는 압축파일에서 추출한 엑셀파일에서 각 주소별로 확인한 위치값이다.

한 가지 주의할 것은 기상청 API의 기본 회신 방식은 XML이기 때문에 만일 JSON 방식으로 결과를 받으려면, dataType 항목을 JSON으로 지정해 주어야 한다.

이렇게 API에 입력값을 주고, JSON 형식으로 결과 회신 요청을 하면 다음과 같은 형식으로 회신을 받게 된다.

다음은 nx=55, ny=127 인 경기도 하남시의 한 동네의 예보이며, 기준일 2023-9-9일 05시에 예측한 같은 날 07:00시에 대한 예측 결과 회신이다.

이 결과 중 category의 의미는 다음과 같다.

category 값의 의미는 다음과 같다.

자료를 요청할 때 최소 numofRow=12가 하나의 시간대에 대한 예측치 세트로 보이며, numofRow 값을 원하는 시간만큼 12X 시간 구간 값으로 계산하여 넣으면 원하는 결과를 얻을 수 있다. 즉, 1시간의 예측치를 원하면 numofRow 값을 최소 12로, 만일 12시간을 원하면 최소 144로 기입해야 한다.

위에 표기된 return 값 주 최고치와 최저치인 TMN과 TMX는 시간대에 따라 회신 결과에 포함되기도 하고 포함되지 않기도 하는데, 통상 14×24 이상에 해당하는 numofRow로 지정해서 예측치를 요청해야만 이들 값을 확인할 수 있다.(해당되는 시간대의 예측치에서만 나타나는듯하다)

numofRows=100으로 지정하여 브라우저에서 회신 받은 결과는 다음과 같다.

이번 글에서는 기상청의 API를 이용하여 단기예보를 JSON 형태로 이용하는 방법을 소개했다.

다음 글에서는 라즈베리 파이 피코 보드 W에서 이 json 값을 받아서 활용하는 방법을 소개할 예정이다.