IT/파이썬
[파이썬] 기상청 지상 날씨 일별 자료 조회하기.
SageIN
2021. 12. 15. 11:01
반응형
data.go.kr 에서 "기상청_지상(종관, ASOS) 일자료 조회서비스" 검색한다음 활용 신청을 합니다.
요청변수(Request Parameter)
항목명(국문)항목명(영문)항목크기항목구분샘플데이터항목설명
서비스키 | ServiceKey | 4 | 필수 | - | 공공데이터포털에서 받은 인증키 |
페이지 번호 | pageNo | 4 | 옵션 | 1 | 페이지번호 Default : 1 |
한 페이지 결과 수 | numOfRows | 4 | 옵션 | 10 | 한 페이지 결과 수 Default : 10 |
응답자료형식 | dataType | 4 | 옵션 | XML | 요청자료형식(XML/JSON) Default : XML |
자료 코드 | dataCd | 4 | 필수 | ASOS | 자료 분류 코드(ASOS) |
날짜 코드 | dateCd | 3 | 필수 | DAY | 날짜 분류 코드(DAY) |
시작일 | startDt | 8 | 필수 | 20100101 | 조회 기간 시작일(YYYYMMDD) |
종료일 | endDt | 8 | 필수 | 20100601 | 조회 기간 종료일(YYYYMMDD) (전일(D-1)까지 제공) |
지점 번호 | stnIds | 3 | 필수 | 108 | 종관기상관측 지점 번호 (활용가이드 하단 첨부 참조) |
출력결과(Response Element)
항목명(국문)항목명(영문)항목크기항목구분샘플데이터항목설명
결과코드 | resultCode | 2 | 필수 | 00 | 결과코드 |
결과메시지 | resultMsg | 50 | 필수 | NORMAL_SERVICE | 결과메시지 |
한 페이지 결과 수 | numOfRows | 4 | 필수 | 10 | 한 페이지 결과 수 |
페이지 번호 | pageNo | 4 | 필수 | 1 | 페이지번호 |
전체 결과 수 | totalCount | 4 | 필수 | 3 | 전체 결과 수 |
데이터 타입 | dataType | 4 | 필수 | XML | 응답자료형식 (XML/JSON) |
시간 | tm | 10 | 필수 | 2010-01-01 | 일시 |
지점 번호 | stnId | 3 | 필수 | 108 | 종관기상관측 지점 번호 |
1.5m 지중온도 | avgM15Te | 6 | 옵션 | 9.2 | 1.5m 지중온도 |
9-9강수 | n99Rn | 6 | 옵션 | 1.1 | 9-9강수 |
최저 해면기압 | minPs | 6 | 옵션 | 1019.4 | 최저 해면기압 |
평균 상대습도 | avgRhm | 6 | 옵션 | 48 | 평균 상대습도 |
평균 상대습도 시각 | minRhmHrmt | 4 | 옵션 | 1137 | 평균 상대습도 시각 |
최대 순간 풍속 풍향 | maxInsWsWd | 6 | 옵션 | 34 | 최대 순간 풍속 풍향 |
평균 지면온도 | avgTs | 6 | 옵션 | -4.6 | 평균 지면온도 |
최대 순간풍속 시각 | max_ins_ws_hrmt | 4 | 옵션 | 105 | 최대 순간풍속 시각 |
일 최심적설 시각 | ddMesHrmt | 4 | 옵션 | 0 | 일 최심적설 시각 |
최고 해면기압 시각 | maxPsHrmt | 4 | 옵션 | 5 | 최고 해면기압 시각 |
평균 증기압 | avgPv | 6 | 옵션 | 1.7 | 평균 증기압 |
최소 상대습도 | minRhm | 6 | 옵션 | 30 | 최소 상대습도 |
합계 일조 시간 | sumSsHr | 6 | 옵션 | 7.3 | 합계 일조 시간 |
가조시간 | ssDur | 6 | 옵션 | 9.6 | 가조시간 |
평균 해면기압 | avgPs | 6 | 옵션 | 1021.7 | 평균 해면기압 |
최대 풍속 | maxWs | 6 | 옵션 | 3.4 | 최대 풍속 |
평균 5cm 지중온도 | avgCm5Te | 6 | 옵션 | -3.4 | 평균 5cm 지중온도 |
최저 초상온도 | minTg | 6 | 옵션 | -13 | 최저 초상온도 |
최대 풍속 풍향 | maxWsWd | 6 | 옵션 | 7 | 최대 풍속 풍향 |
합계 소형증발량 | sumSmlEv | 6 | 옵션 | 0.6 | 합계 소형증발량 |
평균 전운량 | avgTca | 6 | 옵션 | 3.8 | 평균 전운량 |
1시간 최다 일사량 | hr1MaxIcsr | 6 | 옵션 | 1.51 | 1시간 최다 일사량 |
평균 이슬점온도 | avgTd | 6 | 옵션 | -16.9 | 평균 이슬점온도 |
최고 해면 기압 | maxPs | 6 | 옵션 | 1024.4 | 최고 해면 기압 |
평균 20cm 지중온도 | avgCm20Te | 6 | 옵션 | -0.7 | 평균 20cm 지중온도 |
일 최심적설 | ddMes | 6 | 옵션 | 2.2 | 일 최심적설 |
최저 기온 | minTa | 6 | 옵션 | -12.7 | 최저 기온 |
최저 해면기압 시각 | minPsHrmt | 6 | 옵션 | 2356 | 최저 해면기압 시각 |
5.0m 지중온도 | avgM50Te | 6 | 옵션 | 17.2 | 5.0m 지중온도 |
최고 기온 | maxTa | 6 | 옵션 | -3.6 | 최고 기온 |
풍정합 | hr24SumRws | 4 | 옵션 | 1608 | 풍정합 |
3.0m 지중온도 | avgM30Te | 6 | 옵션 | 15.2 | 3.0m 지중온도 |
평균10cm 지중온도 | avgCm10Te | 6 | 옵션 | -1.7 | 평균10cm 지중온도 |
0.5m 지중온도 | avgM05Te | 6 | 옵션 | 2.4 | 0.5m 지중온도 |
1시간 최다 일사량 시각 | hr1MaxIcsrHrmt | 4 | 옵션 | 1100 | 1시간 최다 일사량 시각 |
최대 순간풍속 | maxInsWs | 6 | 옵션 | 7.5 | 최대 순간풍속 |
평균 전운량 | avgTca | 6 | 옵션 | 2.3 | 평균 전운량 |
평균 30cm 지중온도 | avgCm30Te | 6 | 옵션 | 0.5 | 평균 30cm 지중온도 |
1.0m 지중온도 | avgM10Te | 6 | 옵션 | 6.1 | 1.0m 지중온도 |
합계 일사 | sumGsr | 6 | 옵션 | 8.63 | 합계 일사 |
최대 풍속 시각 | maxWsHrmt | 4 | 옵션 | 2350 | 최대 풍속 시각 |
평균 현지기압 | avgPa | 6 | 옵션 | 1010.6 | 평균 현지기압 |
평균 풍속 | avgWs | 6 | 옵션 | 1.9 | 평균 풍속 |
일기현상 | iscs | 1000 | 옵션 | -{박무}-{박무}{강도0}0300-0515. | 일기현상 |
안개 계속 시간 | sumFogDur | 6 | 옵션 | 0.67 | 안개 계속 시간 |
합계 대형증발량 | sumLrgEv | 6 | 옵션 | 2.8 | 합계 대형증발량 |
합계 3시간 신적설 | sumDpthFhsc | 6 | 옵션 | 1.6 | 합계 3시간 신적설 |
일 최심신적설 | ddMefs | 6 | 옵션 | 25.8 | 일 최심신적설 |
일 최심신적설 시각 | ddMefsHrmt | 4 | 옵션 | 1355 | 일 최심신적설 시각 |
일강수량 | sumRn | 6 | 옵션 | 0 | 일강수량 |
1시간 최다 강수량 시각 | hr1MaxRnHrmt | 4 | 옵션 | 1441 | 1시간 최다 강수량 시각 |
1시간 최다강수량 | hr1MaxRn | 6 | 옵션 | 0.7 | 1시간 최다강수량 |
10분 최다강수량 시각 | mi10MaxRnHrmt | 4 | 옵션 | 1459 | 10분 최다강수량 시각 |
10분 최다 강수량 | mi10_max_rn | 6 | 옵션 | 0.5 | 10분 최다 강수량 |
평균 기온 | avgTa | 6 | 옵션 | -7.6 | 평균 기온 |
최저 기온 시각 | minTaHrmt | 6 | 옵션 | -12.7 | 최저 기온 |
최대 기온 시각 | maxTaHrmt | 4 | 옵션 | 1501 | 최대 기온 시각 |
최대 풍향 | maxWd | 6 | 옵션 | 70 | 최대 풍향 |
평균 중하층운량 | avgLmac | 6 | 옵션 | 2.3 | 평균 중하층운량 |
다양한 정보를 제공해준다.
json으로 데이터를 받거나 xml로 받아 파싱해주면 된다.
import requests
import json
import xlsxwriter
def getWthrDataList(date):
url = 'http://apis.data.go.kr/1360000/AsosDalyInfoService/getWthrDataList'
params = {'serviceKey': '발급받키를 입력하세요.', # 서비스코드
'numOfRows':'1', # 한페이지 결과수
'pageNo': '1', # 페이지번호
'dataType': 'JSON', # 응답자료형식
'dataCd': 'ASOS', # 자료코드
'dateCd': 'DAY', # 날짜코드
'startDt': date, # 조회 기간 시작일(YYYYMMDD)
'endDt': date, # 조회 기간 종료일(YYYYMMDD) (전일(D-1)까지 제공)
'stnIds': '108' # 종관기상관측 지점 번호 (108 서울)
}
response = requests.get(url, params=params)
result = json.loads(response.text)
items = result['response']['body']['items']['item']
for item in items:
print(item)
if __name__ == '__main__':
getWthrDataList("20210601")
결과
{'stnId': '108',
'stnNm': '서울',
'tm': '2021-06-01',
'avgTa': '20.2',
'minTa': '15.9',
'minTaHrmt': '811',
'maxTa': '23.9',
'maxTaHrmt': '1311',
'mi10MaxRn': '1.3',
'mi10MaxRnHrmt': '754',
'hr1MaxRn': '2.3',
'hr1MaxRnHrmt': '712',
'sumRnDur': '4.42',
'sumRn': '3.2',
'maxInsWs': '9.0',
'maxInsWsWd': '290',
'maxInsWsHrmt': '527',
'maxWs': '5.4',
'maxWsWd': '320',
'maxWsHrmt': '533',
'avgWs': '2.2',
'hr24SumRws': '1863',
'maxWd': '50',
'avgTd': '15.4',
'minRhm': '57',
'minRhmHrmt': '1322',
'avgRhm': '74.6',
'avgPv': '17.5',
'avgPa': '1003.9',
'maxPs': '1016.5',
'maxPsHrmt': '710',
'minPs': '1011.5',
'minPsHrmt': '221',
'avgPs': '1013.8',
'ssDur': '14.6',
'sumSsHr': '1.9',
'hr1MaxIcsrHrmt': '1000',
'hr1MaxIcsr': '2.03',
'sumGsr': '13.01',
'ddMefs': '',
'ddMefsHrmt': '',
'ddMes': '',
'ddMesHrmt': '',
'sumDpthFhsc': '',
'avgTca': '8.1',
'avgLmac': '2.1',
'avgTs': '21.1',
'minTg': '13.9',
'avgCm5Te': '21.2',
'avgCm10Te': '20.5',
'avgCm20Te': '20.1',
'avgCm30Te': '19.7',
'avgM05Te': '19.0',
'avgM10Te': '17.5',
'avgM15Te': '16.8',
'avgM30Te': '14.2',
'avgM50Te': '13.6',
'sumLrgEv': '2.7',
'sumSmlEv': '3.9',
'n99Rn': '0.0',
'iscs': '{비}0433-0443. {비}0515-{비}{강도0}0600-0835. {박무}0755-0820. {비}1530-1625. {박무}2245-{박무}{강도0}2400-',
'sumFogDur': ''
}
지점 코드
지점 | 지점명 | 관리관서 | 지점 | 지점명 | 관리관서 |
90 | 속초 | 강원지방기상청 | 212 | 홍천 | 춘천기상대 |
93 | 북춘천 | 춘천기상대 | 216 | 태백 | 강원지방기상청 |
95 | 철원 | 강원지방기상청 | 217 | 정선군 | 강원지방기상청 |
98 | 동두천 | 수도권기상청 | 221 | 제천 | 청주기상지청 |
99 | 파주 | 수도권기상청 | 226 | 보은 | 청주기상지청 |
100 | 대관령 | 강원지방기상청 | 232 | 천안 | 대전지방기상청 |
101 | 춘천 | 춘천기상대 | 235 | 보령 | 대전지방기상청 |
102 | 백령도 | 수도권기상청 | 236 | 부여 | 대전지방기상청 |
104 | 북강릉 | 강원지방기상청 | 238 | 금산 | 대전지방기상청 |
105 | 강릉 | 강원지방기상청 | 239 | 세종 | 대전지방기상청 |
106 | 동해 | 강원지방기상청 | 243 | 부안 | 전주기상지청 |
108 | 서울 | 수도권기상청 | 244 | 임실 | 전주기상지청 |
112 | 인천 | 수도권기상청 | 245 | 정읍 | 전주기상지청 |
114 | 원주 | 강원지방기상청 | 247 | 남원 | 전주기상지청 |
115 | 울릉도 | 대구지방기상청 | 248 | 장수 | 전주기상지청 |
119 | 수원 | 수도권기상청 | 251 | 고창군 | 전주기상지청 |
121 | 영월 | 강원지방기상청 | 252 | 영광군 | 광주지방기상청 |
127 | 충주 | 청주기상지청 | 253 | 김해시 | 부산지방기상청 |
129 | 서산 | 홍성기상대 | 254 | 순창군 | 전주기상지청 |
130 | 울진 | 안동기상대 | 255 | 북창원 | 창원기상대 |
131 | 청주 | 청주기상지청 | 257 | 양산시 | 울산기상대 |
133 | 대전 | 대전지방기상청 | 258 | 보성군 | 광주지방기상청 |
135 | 추풍령 | 청주기상지청 | 259 | 강진군 | 목포기상대 |
136 | 안동 | 안동기상대 | 260 | 장흥 | 목포기상대 |
137 | 상주 | 대구지방기상청 | 261 | 해남 | 목포기상대 |
138 | 포항 | 대구지방기상청 | 262 | 고흥 | 광주지방기상청 |
140 | 군산 | 전주기상지청 | 263 | 의령군 | 창원기상대 |
143 | 대구 | 대구지방기상청 | 264 | 함양군 | 창원기상대 |
146 | 전주 | 전주기상지청 | 266 | 광양시 | 광주지방기상청 |
152 | 울산 | 울산기상대 | 268 | 진도군 | 목포기상대 |
155 | 창원 | 창원기상대 | 271 | 봉화 | 대구지방기상청 |
156 | 광주 | 광주지방기상청 | 272 | 영주 | 안동기상대 |
159 | 부산 | 부산지방기상청 | 273 | 문경 | 안동기상대 |
162 | 통영 | 부산지방기상청 | 276 | 청송군 | 대구지방기상청 |
165 | 목포 | 목포기상대 | 277 | 영덕 | 대구지방기상청 |
168 | 여수 | 광주지방기상청 | 278 | 의성 | 대구지방기상청 |
169 | 흑산도 | 광주지방기상청 | 279 | 구미 | 대구지방기상청 |
170 | 완도 | 목포기상대 | 281 | 영천 | 대구지방기상청 |
172 | 고창 | 전주기상지청 | 283 | 경주시 | 대구지방기상청 |
174 | 순천 | 광주지방기상청 | 284 | 거창 | 울산기상대 |
177 | 홍성 | 홍성기상대 | 285 | 합천 | 울산기상대 |
184 | 제주 | 제주지방기상청 | 288 | 밀양 | 울산기상대 |
185 | 고산 | 제주지방기상청 | 289 | 산청 | 창원기상대 |
188 | 성산 | 제주지방기상청 | 294 | 거제 | 부산지방기상청 |
189 | 서귀포 | 제주지방기상청 | 295 | 남해 | 부산지방기상청 |
192 | 진주 | 창원기상대 | |||
201 | 강화 | 인천기상대 | |||
202 | 양평 | 수도권기상청 | |||
203 | 이천 | 수도권기상청 | |||
211 | 인제 | 강원지방기상청 |
반응형