[JAVA] 농업기상정보 서비스 API 사용 방법Language/Java2022. 9. 11. 23:54
Table of Contents
반응형
농업기상정보 서비스
농업 관련 기상 데이터가 필요하게 되어 공공데이터 포털 사이트의 농업기상정보 API를 사용하여 조회하였습니다.
Open API 활용 방법
- 농업기상정보서비스 사이트에 접속합니다.
- 이용방법에 따라 회원가입 후 Open API 신청을 하고 Service Key를 발급받습니다.
- 활용 가이드를 다운로드하여 조회 조건 및 결과 데이터를 이해합니다.
농업 기상 데이터 조회
http://weather.rda.go.kr/openapi/realtime_openapi_xml.jsp?mberid={id}®ist_ky={발급받은 Service Key}
결과 데이터(XML 형식)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
<Info>
<stncode>380959A001</stncode>
<stnname>충주시 달천동</stnname>
<date>2020/07/31 14:50</date>
<temp_150>28.3℃</temp_150>
<tmprt_150Top>29.7℃</tmprt_150Top>
<tmprt_150Lwet>22.5℃</tmprt_150Lwet>
<tmprt_50>-℃</tmprt_50>
<tmprt_50Top>-℃</tmprt_50Top>
<tmprt_50Lwet>-℃</tmprt_50Lwet>
<tmprt_400>-℃</tmprt_400>
<tmprt_400Top>-℃</tmprt_400Top>
<tmprt_400Lwet>-℃</tmprt_400Lwet>
<hd_150>86.2%</hd_150>
<hd_150Top>100.0%</hd_150Top>
<hd_150Lwet>75.6%</hd_150Lwet>
<hd_50>-%</hd_50>
<hd_50Top>-%</hd_50Top>
<hd_50Lwet>-%</hd_50Lwet>
<hd_400>-%</hd_400>
<hd_400Top>-%</hd_400Top>
<hd_400Lwet>-%</hd_400Lwet>
<wd_300>남동</wd_300>
<wd_300Top>남</wd_300Top>
<wd_300Lwet>정온</wd_300Lwet>
<wd_150>-</wd_150>
<wd_150Top>-</wd_150Top>
<wd_150Lwet>-</wd_150Lwet>
<wd_1000>-</wd_1000>
<wd_1000Top>-</wd_1000Top>
<wd_1000Lwet>-</wd_1000Lwet>
<arvlty_300>1.9</arvlty_300>
<arvlty_300Top>4.0</arvlty_300Top>
<arvlty_300Lwet>0.0</arvlty_300Lwet>
<arvlty_150>-</arvlty_150>
<arvlty_150Top>-</arvlty_150Top>
<arvlty_150Lwet>-</arvlty_150Lwet>
<arvlty_1000>-</arvlty_1000>
<arvlty_1000Top>-</arvlty_1000Top>
<arvlty_1000Lwet>-</arvlty_1000Lwet>
<afp>0.0mm</afp>
<afv>-mm</afv>
<sunshnTime>202.0hr</sunshnTime>
<solradQy>10.4MJ/㎡</solradQy>
<dwcnTime>0.0hr</dwcnTime>
<pnwgTp>-hr</pnwgTp>
<pnwgTpTop>-hr</pnwgTpTop>
<pnwgTpLwet>-hr</pnwgTpLwet>
<frfrTp>-℃</frfrTp>
<frfrTpTop>-℃</frfrTpTop>
<frfrTpLwet>-℃</frfrTpLwet>
<udgrHeattCndctvt>-100.0℃</udgrHeattCndctvt>
<udgrHeattCndctvtTop>-100.0℃</udgrHeattCndctvtTop>
<udgrHeattCndctvtLwet>-100.0℃</udgrHeattCndctvtLwet>
<udgrTp_10>-℃</udgrTp_10>
<udgrTp_10Top>26.1℃</udgrTp_10Top>
<udgrTp_10Lwet>24.4℃</udgrTp_10Lwet>
<udgrTp_5>-℃</udgrTp_5>
<udgrTp_5Top>-℃</udgrTp_5Top>
<udgrTp_5Lwet>-℃</udgrTp_5Lwet>
<udgrTp_20>-℃</udgrTp_20>
<udgrTp_20Top>-℃</udgrTp_20Top>
<udgrTp_20Lwet>-℃</udgrTp_20Lwet>
<soilMitr_10>32.5</soilMitr_10>
<soilMitr_10Top>36.3</soilMitr_10Top>
<soilMitr_10Lwet>27.3</soilMitr_10Lwet>
<soilMitr_10Cmst>23.4</soilMitr_10Cmst>
<soilMitr_10CmstTop>27.2</soilMitr_10CmstTop>
<soilMitr_10CmstLwet>18.2</soilMitr_10CmstLwet>
<soilMitr_20>-</soilMitr_20>
<soilMitr_20Top>-</soilMitr_20Top>
<soilMitr_20Lwet>-</soilMitr_20Lwet>
<soilMitr_20Cmst>-</soilMitr_20Cmst>
<soilMitr_20CmstTop>-</soilMitr_20CmstTop>
<soilMitr_20CmstLwet>-</soilMitr_20CmstLwet>
<soilMitr_30>-</soilMitr_30>
<soilMitr_30Top>-</soilMitr_30Top>
<soilMitr_30Lwet>-</soilMitr_30Lwet>
<soilMitr_30Cmst>-</soilMitr_30Cmst>
<soilMitr_30CmstTop>-</soilMitr_30CmstTop>
<soilMitr_30CmstLwet>-</soilMitr_30CmstLwet>
</Info>
</Root>
Respone Domain 생성
기본적으로 결과가 XML 형식이므로 javax.xml를 사용하여 도메인을 생성하였습니다.
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import lombok.Data;
/**
* 기상청 API로 기상정보 조회할 때 쓰이는 도메인
*
* @author hgko
*
*/
@Data
@XmlRootElement(name = "Root")
@XmlAccessorType(value = XmlAccessType.FIELD)
public class ResponseXml {
@XmlElement(name = "Info")
private Info info;
@Data
public static class Info {
/** 지역 코드 */
private String stncode;
/** 지역 이름 */
private String stnname;
/** 일시 */
private String date;
/** 온도(150CM) */
private String temp_150;
/** 습도(150CM) */
private String hd_150;
/** 풍향(300CM) */
private String wd_300;
/** 풍속(300CM) */
private float arvlty_300;
/** 강수량 */
private String afp;
/** 증발량 */
private String afv;
/** 일사량 */
private String solradQy;
/** 일조시간 */
private String sunshnTime;
/** 토양수분(10CM) */
private float soilMitr_10;
}
}
데이터 조회
SpringFramework에서 지원하는 RestTemplate를 사용하여 조회합니다.
private final String BASE_URL = "http://weather.rda.go.kr/openapi/realtime_openapi_xml.jsp";
private final String userId = ""; // Login Id
private final String serviceKey = ""; // 발급받은 Service Key
public void getWeatherData() {
StringBuilder urlBuilder = new StringBuilder(BASE_URL);
try {
urlBuilder.append("?" + URLEncoder.encode("mberid", "UTF-8") + "=" + userId);
urlBuilder.append("&" + URLEncoder.encode("regist_ky", "UTF-8") + "=" + serviceKey);
RestTemplate restTemplate = new RestTemplate();
ResponseXml response = restTemplate.getForObject(urlBuilder.toString(), ResponseXml.class);
System.out.println(response);
} catch (Exception e) {
e.printStackTrace();
}
}
반응형
'Language > Java' 카테고리의 다른 글
[JAVA] String형 Bytes length 구하기 (0) | 2022.09.22 |
---|---|
[JAVA] 동네예보 조회서비스 API 사용 방법 (0) | 2022.09.12 |
[JAVA] OpenWeather API 사용 방법 (0) | 2022.09.11 |
[JAVA] proj4 투형 변환 (0) | 2022.09.11 |
[JAVA] Julian Date Conversion (0) | 2022.09.10 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!