본문 바로가기
Python

[python] 공공 데이터 포털 API 기상청 단기예보 동네예보 조회

by 퍼포먼스마케팅코더 2022. 8. 14.
반응형

이거는 기상청에서 단기 예보 옛날 말로 동네 예보라고 나오는데 그것에 따라서 한마디로 완전 실시간에 날씨 정보를 찾을 수 있는 데이터라고 보시면 될 것 같습니다. 구버전 데이터라고 하는데 한마디로 여러분의 좌표값에 따라서 날씨 정보가 어느 정도 되는지 그거를 거의 뭐 30분 단위로 주는 것 같더라고요.

 

공공 데이터 포털 API 기상청 단기예보 동네예보 조회 API 키 발급

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

 

기상청_단기예보 ((구)_동네예보) 조회서비스

초단기실황, 초단기예보, 단기((구)동네)예보, 예보버전 정보를 조회하는 서비스입니다. 초단기실황정보는 예보 구역에 대한 대표 AWS 관측값을, 초단기예보는 예보시점부터 6시간까지의 예보를,

www.data.go.kr

[python] 공공 데이터 포털 API 기상청 단기예보 동네예보 조회

데이터를 보면 되긴 하는데 그렇게까지 많이 쓰일 것 같지는 않은 데이터 같긴 한데 하여튼 재미로 저는 가져와 봤고요 마찬가지로 기상청 단기 예보 동네 이 데이터를 보기 위해서는 마찬가지로 공공 데이터 포털 api 웹 사이트에 들어가셔서 api 키를 발급받아야 됩니다. 발급만 받고 제가 대표적인 한 두 가지 정도만 가지고 왔는데 보다 자세한 사항을 보려면 제가 참고해 줬던 웹사이트 안에 들어가 보시면 더 자세한 정보가 있으니까 그걸로 확인하시면 될 것 같습니다.

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다

warnings.filterwarnings('ignore')

#초단기예보조회
#초단기예보정보를 조회하기 위해 발표일자, 발표시각, 예보지점 X 좌표, 예보지점 Y 좌표의 조회 조건으로 자료구분코드, 예보값, 발표일자, 발표시각, 예보지점 X 좌표, 예보지점 Y 좌표의 정보를 조회하는 기능

serviceKey='' #api 키
pageNo = '1' #페이지번호
numOfRows = '10' #한 페이지 결과 수
dataType = 'json' #요청자료형식(XML/JSON) Default: XML
base_date = '20220813' #‘22년 8월 13일 발표
base_time='0630' #06시30분 발표(30분 단위)
nx='55'  #예보지점 X 좌표값
ny='127'  #예보지점 Y 좌표값

url = 'https://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtFcst?serviceKey={}&pageNo={}&numOfRows={}&dataType={}&base_date={}&base_time={}&nx={}&ny={}'.format(serviceKey,pageNo,numOfRows,dataType,base_date,base_time,nx,ny)

response = requests.get(url, verify=False)
#dict_data = xmltodict.parse(response.text)
#json_data = json.dumps(dict_data, ensure_ascii=False)
r_data = json.loads(response.text)


#Shape of passed values is (2, 4), indices imply (1, 4)
#data = pd.DataFrame(r_data['response']['body']['items']['item'])  이걸로 넣어주면 됨.

#If using all scalar values, you must pass an index 에러 문구가 뜰 경우, index=[0]
#data = pd.DataFrame(r_data['response']['body']['items']['item'], index=[0]) 이렇게 바꿔주면됨.


#columns=r_data['header']['columns']

try : 
    data = pd.DataFrame(r_data['response']['body']['items']['item'])  
except :
    data = pd.DataFrame(r_data['response']['body']['items']['item'], index = [0])

#data.columns = r_data['header']['columns'] #컬럼변경

data

 

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다

warnings.filterwarnings('ignore')

#예보버전조회
#단기예보정보조회서비스 각각의 오퍼레이션(초단기실황, 초단기예보, 단기예보)들의 수정된 예보 버전을 파악하기 위해 예보버전을 조회하는 기능

serviceKey='' #api 키
pageNo = '1' #페이지번호
numOfRows = '1000' #한 페이지 결과 수
dataType = 'json' #요청자료형식(XML/JSON) Default: XML
ftype = 'SHRT' #파일구분 -ODAM: 동네예보실황 -VSRT: 동네예보초단기 -SHRT: 동네예보단기
basedatetime='202208141000' #각각의 base_time 로 검색

url = 'https://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getFcstVersion?serviceKey={}&pageNo={}&numOfRows={}&dataType={}&ftype={}&basedatetime={}'.format(serviceKey,pageNo,numOfRows,dataType,ftype,basedatetime)

response = requests.get(url, verify=False)
#dict_data = xmltodict.parse(response.text)
#json_data = json.dumps(dict_data, ensure_ascii=False)
r_data = json.loads(response.text)

r_data
#Shape of passed values is (2, 4), indices imply (1, 4)
#data = pd.DataFrame(r_data['response']['body']['items']['item'])  이걸로 넣어주면 됨.

#If using all scalar values, you must pass an index 에러 문구가 뜰 경우, index=[0]
#data = pd.DataFrame(r_data['response']['body']['items']['item'], index=[0]) 이렇게 바꿔주면됨.


#columns=r_data['header']['columns']

#try : 
#    data = pd.DataFrame(r_data['body']['items'])  
#except :
#    data = pd.DataFrame(r_data['body']['items'], index = [0])

#data.columns = r_data['header']['columns'] #컬럼변경

#data

 

반응형

댓글