기상청 동네예보 정보 조회 서비스 분석

Weather API Analysis 1

기상청 동네예보 정보 조회 서비스 분석 포스트입니다.
이 포스트는 ‘ThinkGround Ordinary Apps Development Project‘와 관련하여 작성되었습니다.

Weather API Analysis 1

지난 포스트(기상청 동네예보 정보조회 서비스 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}}} }

지금까지 기상청 동네예보 정보 조회 서비스 분석 포스트였습니다.
더 자세한 정보는  기상자료개발포털을 참조해주시기 바랍니다.

Leave a Reply