기상청 동네예보 정보 조회 서비스 분석 포스트입니다.
이 포스트는 ‘ThinkGround Ordinary Apps Development Project‘와 관련하여 작성되었습니다.
지난 포스트(기상청 동네예보 정보조회 서비스 Open API 획득 방법)에서 오늘 좀 알아보려고 하는 API 획득하는 방법에 대해 소개해드렸습니다.
서비스명은 ‘동네예보정보조회 서비스’라고 되어 있으며, ‘최근 24시간 자료’라고 부제가 붙어 있네요. 아마 이전의 자료를 참고하려면 다른 서비스도 신청해야할 것 같습니다.
이 서비스에는 오퍼레이션이라는 개념의 Sub기능이 명시가 되어 있습니다.
‘초단기실황조회’, ‘초단기예보조회’, ‘동네예보조회’, ‘예보버전조회’
이 포스트에서는 각 오퍼레이션에 대해 정리해보려고 합니다.
초단기실황조회 오퍼레이션
‘초단기실황조회’는 실황정보를 조회하는 기능이라고 합니다.
간단하게 개발에 필요한 정보들만 정리해보면 아래와 같습니다.
호출 메시지 정보
http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastGrib
위 주소가 기본 메세지 코드입니다.
뒤에 필요한 method를 붙여 호출하는 형식입니다.
사용되는 메소드는 아래와 같습니다.
항목명(영문) : (필수)ServiceKey 항목명(국문) : 서비스 키 항목크기 : 255 항목구분 : 1 샘플데이터 : SERVICE_KEY 항목설명 : 서비스 인증 항목명(영문) : (필수)base_date 항목명(국문) : 발표일자 항목크기 : 8 항목구분 : 1 샘플데이터 : 20151201 항목설명 : 15년 12월 1일 발표 항목명(영문) : (필수)base_time 항목명(국문) : 발표시각 항목크기 : 4 항목구분 : 1 샘플데이터 : 0600 항목설명 : 06시 발표(정시 단위), 매 시각 40분 이후 호출 항목명(영문) : (필수)nx 항목명(국문) : 예보지점 X 좌표 항목크기 : 2 항목구분 : 0 샘플데이터 : 18 항목설명 : 예보지점의 X 좌표값 항목명(영문) : (필수)ny 항목명(국문) : 예보지점 Y 좌표 항목크기 : 2 항목구분 : 0 샘플데이터 : 1 항목설명 : 예보지점의 Y 좌표값 항목명(영문) : numOfRows 항목명(국문) : 한 페이지 결과 수 항목크기 : 2 항목구분 : 0 샘플데이터 : 10 항목설명 : 한 페이지 결과 수 항목명(영문) : pageNo 항목명(국문) : 페이지 번호 항목크기 : 5 항목구분 : 0 샘플데이터 : 1 항목설명 : 페이지 번호 항목명(영문) : _type 항목명(국문) : 타입 항목크기 : 항목구분 : 샘플데이터 : xml, json 항목설명 : xml(기본값), json
필수라고 작성된 항목들에 대해서는 꼭 Parameter value를 전달해야 합니다.
예시로 작성된 URI는 아래와 같이 공개하고 있습니다.
http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastGrib?ServiceKey=서비스키&base_date=20151201&base_time=0600&nx=55&ny=127&pageNo=1&numOfRows=1&_type=json
응답 메시지 정보
위 Request를 하면 돌아오는 응답 메시지 관련 내용입니다.
Default 타입으로 xml형태로 값이 리턴되는데요.
요청시에 json으로 요청을 하게되면 타입을 변경할 수 있습니다.
우선 각 항목별 정리를 하자면 아래와 같습니다.
항목명(영문) : resultCode 항목명(국문) : 결과코드 항목크기 : 4 항목구분 : 1 샘플데이터 : 0000 항목설명 : 결과코드 항목명(영문) : resultMsg 항목명(국문) : 결과 메시지 항목크기 : 50 항목구분 : 1 샘플데이터 : OK 항목설명 : 결과 메시지 항목명(영문) : numOfRows 항목명(국문) : 한 페이지 결과 수 항목크기 : 2 항목구분 : 0 샘플데이터 : 10 항목설명 : 한 페이지 결과 수 항목명(영문) : pageNo 항목명(국문) : 페이지 번호 항목크기 : 5 항목구분 : 0 샘플데이터 : 1 항목설명 : 페이지 번호 항목명(영문) : totalCount 항목명(국문) : 전체 결과 수 항목크기 : 7 항목구분 : 0 샘플데이터 : 12334 항목설명 : 전체 결과 수 항목명(영문) : baseDate 항목명(국문) : 발표일자 항목크기 : 8 항목구분 : 1 샘플데이터 : 20151201 항목설명 : 15년 12월 1일 발표 항목명(영문) : baseTime 항목명(국문) : 발표시각 항목크기 : 6 항목구분 : 1 샘플데이터 : 0600 항목설명 : 06시 발표 (매 정시) 항목명(영문) : nx 항목명(국문) : 예보지점 X 좌표 항목크기 : 2 항목구분 : 0 샘플데이터 : 59 항목명(영문) : ny 항목명(국문) : 예보지점 Y 좌표 항목크기 : 2 항목구분 : 0 샘플데이터 : 125 항목명(영문) : category 항목명(국문) : 자료구분코드 항목크기 : 3 항목구분 : 1 샘플데이터 : LGT 항목명(영문) : obsrValue 항목명(국문) : 실황 값 항목크기 : 2 항목구분 : 0 샘플데이터 : 0 항목설명 : RN1, T1H, UUU, VVV, WSD 실수로 제공
응답 메시지의 예시 코드는 아래와 같이 제공하고 있습니다.
<response>
<header>
<resultCode>0000</resultCode>
<resultMsg>OK</resultMsg>
</header>
<body>
<items>
<item>
<baseDate>20151201</baseDate>
<baseTime>0600</baseTime>
<category>LGT</category>
<nx>55</nx>
<ny>127</ny>
<obsrValue>0</obsrValue>
</item>
.
.
.
<numOfRows>10</numOfRows>
<pageNo>1</pageNo>
<totalCount>10</totalCount>
</body>
</response>
----------------------------------------------------------------------------
JSON DATA
{"response":{"header":{"resultCode":"0000","resultMsg":"OK"},"body":{"items":{"item":[
{"baseDate":20151013,"baseTime":1600,"category":"LGT","nx":55,"ny":127,"obsrValue":0},
.
.
.
"numOfRows":10,"pageNo":1,"totalCount":10}}}
초단기예보조회 오퍼레이션
요청 코드 예시입니다.
http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastTimeData?base_date=20151201&base_time=0630&nx=55&ny=127
==========================================================
http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastTimeData?base_date=20151201&base_time=0630&nx=55&ny=127&_type=json
응답메시지 예시입니다.
<response>
<header>
<resultCode>0000</resultCode>
<resultMsg>OK</resultMsg>
</header>
<body>
<items>
<item>
<baseDate>20151201</baseDate>
<baseTime>0630</baseTime>
<category>LGT</category>
<fcstDate>20151201</fcstDate>
<fcstTime>0700</fcstTime>
<fcstValue>0</fcstValue>
<nx>55</nx>
<ny>127</ny>
</item>
.
.
.
<numOfRows>16</numOfRows>
<pageNo>1</pageNo>
<totalCount>16</totalCount>
</body>
</response>
-------------------------------------------------------------------------
JSON DATA
{"response":{"header":{"resultCode":"0000","resultMsg":"OK"},"body":{"items":{"item":[
{"baseDate":20151021,"baseTime":1430,"category":"LGT","fcstDate":20151021,"fcstTime":1500,"fcstValue":0,"nx":55,"ny":127},
.
.
"numOfRows":16,"pageNo":1,"totalCount":16}}}
동네예보조회 오퍼레이션
요청 코드 예시입니다.
http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastSpaceData?base_date=20151021&base_time=0230&nx=1&ny=1
==================================
http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastSpaceData?base_date=20151021&base_time=0230&nx=1&ny=1&_type=json
응답 메시지 예시입니다.
<response>
<header>
<resultCode>0000</resultCode>
<resultMsg>OK</resultMsg>
</header>
<body>
<items>
<item>
<baseDate>20151021</baseDate>
<baseTime>0500</baseTime>
<category>T3H</category>
<fcstDate>20151021</fcstDate>
<fcstTime>0900</fcstTime>
<fcstValue>-50</fcstValue>
<nx>1</nx>
<ny>1</ny>
</item>
<item>
<baseDate>20151021</baseDate>
<baseTime>0500</baseTime>
<category>UUU</category>
<fcstDate>20151021</fcstDate>
<fcstTime>0900</fcstTime>
<fcstValue>-100</fcstValue>
<nx>1</nx>
<ny>1</ny>
</item>
<item>
<baseDate>20151021</baseDate>
<baseTime>0500</baseTime>
<category>VEC</category>
<fcstDate>20151021</fcstDate>
<fcstTime>0900</fcstTime>
<fcstValue>74</fcstValue>
<nx>1</nx>
<ny>1</ny>
</item>
.
<numOfRows>308</numOfRows>
<pageNo>1</pageNo>
<totalCount>308</totalCount>
</body>
</response>
----------------------------------------------------------------------------------------------
JSON DATA
{"response":{"header":{"resultCode":"0000","resultMsg":"OK"},"body":{"items":{"item":[
{"baseDate":20151021,"baseTime":"0500","category":"T3H","fcstDate":20151021,"fcstTime":"0900","fcstValue":-50,"nx":1,"ny":1},
{"baseDate":20151021,"baseTime":"0500","category":"UUU","fcstDate":20151021,"fcstTime":"0900","fcstValue":-5,"nx":1,"ny":1},
{"baseDate":20151021,"baseTime":"0500","category":"VVV","fcstDate":20151021,"fcstTime":"0900","fcstValue":-1,"nx":1,"ny":1},
{"baseDate":20151021,"baseTime":"0500","category":"POP","fcstDate":20151021,"fcstTime":"0900","fcstValue":-1,"nx":1,"ny":1},
{"baseDate":20151021,"baseTime":"0500","category":"WAV","fcstDate":20151021,"fcstTime":"0900","fcstValue":1,"nx":1,"ny":1},
{"baseDate":20151021,"baseTime":"0500","category":"WSD","fcstDate":20151021,"fcstTime":"0900","fcstValue":5,"nx":1,"ny":1},
{"baseDate":20151021,"baseTime":"0500","category":"VEC","fcstDate":20151021,"fcstTime":"0900","fcstValue":74,"nx":1,"ny":1},
,"numOfRows":308,"pageNo":1,"totalCount":308}}}
예보버전조회 오퍼레이션
요청 코드 예시입니다.
http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastVersionCheck?ServiceKey=서비스키&ftype=ODAM&basedatetime=201701170800&pageNo=1&numOfRows=1
응답 메시지 예시입니다.
<response>
<header>
<resultCode>0000</resultCode>
<resultMsg>OK</resultMsg>
</header>
<body>
<item>
<filetype>ODAM</filetype>
<version>20170117082027</ version>
</item>
</body>
</response>
---------------------------------------------------------------------------
JSON DATA
{"response":{"header":{"resultCode":"0000","resultMsg":"OK"},"body":{"item":{"filetype” : “ODAM” ,”version”: 20170117082027}}} }
지금까지 기상청 동네예보 정보 조회 서비스 분석 포스트였습니다.
더 자세한 정보는 기상자료개발포털을 참조해주시기 바랍니다.