✔ Python/10. Others

[기상청 API 허브] 지상관측 데이터 다운받기 (1/2)

  • -
주제: 실시간 기상자료 수집코드 구현하기(코드 포함)
작성: 2024-02-29
수정: 2024-03-12 (추가내용 기술)

해당 포스팅은 "오픈 API 활용한 실시간 기상데이터 수집" 관련 2번째 글입니다.

🧑🏻‍💻 API 활용한 실시간 기상데이터 수집 ☁️
1. 사이트 소개 - 2024.02.25 - [✔ Python/10. Others] - [기상청 API 허브] API 활용한 기상자료 쉽게 다운받기
2. 코드 구현(1) - 2024.03.01 - [✔ Python/10. Others] - [기상청 API 허브] 지상관측 데이터 다운받기 (1/2)
3. 코드 구현(2) - 2024.03.14 - [✔ Python/10. Others] - [기상청 API 허브] 지상관측 데이터 다운받기(2/2)
4. 코드 구현(3) - 2024.03.14 - [✔ Python/10. Others] - [기상청 API 허브] 위성 데이터 다운받기 (코드 포함)

이전 포스팅에서 기상데이터를 다운로드할 수 있는 "기상청 API 허브"에 대해 소개했습니다.
그럼 이번 포스팅에서는 샘플코드를 통해서 어떻게 API 활용하여 데이터를 조회할 수 있는지 확인하도록 하겠습니다.

샘플 전체코드

기상청 API 허브에는 기본적으로 샘플코드를 제공합니다. 하지만, 사용하는 OS 및 환경에 따라서 인코딩 이슈로 한글과 같은 문자열이 제대로 표현되지않는 경우가 발생합니다. 이에 기본적으로 제공되는 코드에서 디코딩하는 코드 한줄만 추가로 작성하도록 합니다.

우선, 전체 소스코드입니다.

from urllib.request import urlopen

domain = "https://apihub-pub.kma.go.kr/api/typ01/cgi-bin/url/nph-aws2_min?"
tm = "tm1=202302132200&tm2=202302132210&"
stn_id = "stn=104&"
option = "disp=0&help=1&authKey="
API_KEY = '@@@@@@@@@본인의 API_KEY 작성해주세요@@@@@@@@@@@@' 

url = domain + tm + stn_id + option+ API_KEY

with urlopen (url) as I:
    html_bytes = I.read ()
    html = html_bytes.decode('euc-kr')  
    print (html)

기상청 API 허브 출력값

샘플 코드 이해하기 (1)

1. 모듈 임포트하기

URL을 읽어서 내용을 확인하기 위해 urllib.request의 urlopen 함수를 가져와서 사용합니다.

from urllib.request import urlopen

 

2. API 요청을 위한 URL 구성

domain = "https://apihub-pub.kma.go.kr/api/typ01/cgi-bin/url/nph-aws2_min?"
tm = "tm1=202302132200&tm2=202302132210&"
stn_id = "stn=104&"
option = "disp=0&help=1&"
API_KEY = 'authKey=@@@@@@@@@본인의 API_KEY 작성해주세요@@@@@@@@@@@@'

url = domain + tm + stn_id + option + API_KEY

API 요청에서는 각 문자열 변수를 사용하여 최종적인 API 요청 URL을 구성합니다. 
본인이 조회 및 다운받고자하는 데이터에 따라 URL 구조는 상이하니, 필요한 데이터의 URL 확인이 필요합니다.

이번 코드에서는 기상관측(AWS) 데이터를 조회하겠습니다. * 도메인을 제외한 문자열은 &를 통해서 구분됩니다.

  • domain: API의 기본 도메인 주소입니다.
  • tm: 조회할 시간 범위를 tm1 (시작 시간)과 tm2 (종료 시간)로 설정합니다.
  • stn_id: 관측소 ID를 의미합니다. 여기서는 104가 사용되었습니다.
  • option: 추가 옵션을 의미하며, 여기서는 출력 형식(disp=0)과 도움말 사용 여부(help=1)를 설정합니다.
  • API_KEY: 사용자는 여기에 자신의 API 키를 입력해야 합니다. API 키는 서비스를 이용하기 위해 필요한 인증 키입니다.

 

3. API 요청 및 응답 처리

with urlopen(url) as I:
    html_bytes = I.read()
    html = html_bytes.decode('euc-kr')
    print(html)
  • urlopen(url): 구성된 URL로 웹 요청을 보냅니다.
  • html_bytes = I.read(): 서버로부터 받은 응답을 바이트 형태로 읽습니다.
  • html = html_bytes.decode('euc-kr'): 응답 받은 바이트 데이터를 euc-kr 인코딩을 사용하여 문자열로 디코딩합니다. euc-kr은 한국어 웹 페이지에서 자주 사용되는 인코딩 방식입니다.
  • print(html): 디코딩된 HTML 내용을 출력합니다. 이 결과는 API 호출의 응답으로, 기상 정보를 포함할 수 있습니다.

 

다음 포스팅...? 원하는 데이터 다운받기

원하는 데이터를 클릭하면, 해당 데이터 인자 및 관련 URL 예시를 제공합니다.
데이터 인자를 변경하여 본인이 원하는 데이터를 취사선택하여 다운로드 받을 수 있습니다. 

다음 포스팅에서는 조회가 아닌 데이터 수집하는 코드를 구현해보도록 하겠습니다.

기상청 API 허브 사용방법안내(출처: 기상청)


관련 글

해당 포스팅은 "오픈 API 활용한 실시간 기상데이터 수집" 관련 2번째 글입니다.

🧑🏻‍💻 API 활용한 실시간 기상데이터 수집 ☁️
1. 사이트 소개 - 2024.02.25 - [✔ Python/10. Others] - [기상청 API 허브] API 활용한 기상자료 쉽게 다운받기
2. 코드 구현(1) - 2024.03.01 - [✔ Python/10. Others] - [기상청 API 허브] 지상관측 데이터 다운받기 (1/2)
3. 코드 구현(2) - 2024.03.14 - [✔ Python/10. Others] - [기상청 API 허브] 지상관측 데이터 다운받기(2/2)
4. 코드 구현(3) - 2024.03.14 - [✔ Python/10. Others] - [기상청 API 허브] 위성 데이터 다운받기 (코드 포함)

 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.