728x90
반응형
도로명 주소 API 변환
아래의 API를 제공한다.
- 도로명 주소 API
- 영문주소 API
- 좌표제공 API
- 모바일용 API
https://www.juso.go.kr/openIndexPage.do
API를 사용하기 위해선 개발자 센터로 접속해야 한다.
https://www.juso.go.kr/addrlink/main.do?cPath=99MM
API 신청시 실명인증 후 바로 사용이 가능하다.
- 도로명주소 API 코드
CustomRestTemplate customRestTemplate = new CustomRestTemplate();
RestTemplate restTemplate = customRestTemplate.getCustomRestTemplate();
UriComponents builder = UriComponentsBuilder
.fromHttpUrl("http://www.juso.go.kr/addrlink/addrLinkApi.do")
.queryParam("keyword", modify_addr)
.queryParam("currentPage", "1")
.queryParam("countPerPage", "99")
.queryParam("confmKey", "API 신청 후 발급 받은 키")
.queryParam("resultType", "json")
.build(false);
String response = restTemplate.getForObject(builder.toUriString(),String.class);
JSONParser jsonParser = new JSONParser();
JSONObject rtn_jsonObj = (JSONObject) jsonParser.parse(response);
JSONObject rtn_jsonObj_response = (JSONObject) jsonParser.parse(rtn_jsonObj.get("results").toString());
JSONObject rtn_jsonObj_response_common = (JSONObject) jsonParser.parse(rtn_jsonObj_response.get("common").toString());
String addr_rtn_cd = rtn_jsonObj_response_common.get("errorCode").toString();
int addr_cnt = Integer.parseInt(rtn_jsonObj_response_common.get("totalCount").toString());
if(addr_rtn_cd.equals("0")) {
if (addr_cnt > 0) {
JSONArray rtn_jsonObj_response_juso = (JSONArray) jsonParser.parse(rtn_jsonObj_response.get("juso").toString());
if (rtn_jsonObj_response_juso.size() > 0) {
for (int j = 0; j < rtn_jsonObj_response_juso.size(); j++) {
JSONObject temp_item2 = (JSONObject) rtn_jsonObj_response_juso.get(j);
String fd_road_addr = temp_item2.get("roadAddrPart1") != null && !temp_item2.get("roadAddrPart1").toString().equals("") ? temp_item2.get("roadAddrPart1").toString() : "";
String fd_jibun_addr = temp_item2.get("jibunAddr") != null && !temp_item2.get("jibunAddr").toString().equals("") ? temp_item2.get("jibunAddr").toString() : "";
String fd_road_addr_eng = temp_item2.get("engAddr") != null && !temp_item2.get("engAddr").toString().equals("") ? temp_item2.get("engAddr").toString() : "";
String fd_zip_no = temp_item2.get("zipNo") != null && !temp_item2.get("zipNo").toString().equals("") ? temp_item2.get("zipNo").toString() : "";
String fd_adm_cd = temp_item2.get("admCd") != null&& !temp_item2.get("admCd").toString().equals("") ? temp_item2.get("admCd").toString() : "";
String fd_rd_mgt_sn = temp_item2.get("rnMgtSn") != null && !temp_item2.get("rnMgtSn").toString().equals("") ? temp_item2.get("rnMgtSn").toString() : "";
String fd_bd_mgt_sn = temp_item2.get("bdMgtSn") != null && !temp_item2.get("bdMgtSn").toString().equals("") ? temp_item2.get("bdMgtSn").toString() : "";
String fd_bd_nm = temp_item2.get("bdNm") != null && !temp_item2.get("bdNm").toString().equals("")? temp_item2.get("bdNm").toString() : "";
String fd_si_nm = temp_item2.get("siNm") != null && !temp_item2.get("siNm").toString().equals("") ? temp_item2.get("siNm").toString() : "";
String fd_sgg_nm = temp_item2.get("sggNm") != null && !temp_item2.get("sggNm").toString().equals("") ? temp_item2.get("sggNm").toString() : "";
String fd_emd_nm = temp_item2.get("emdNm") != null && !temp_item2.get("emdNm").toString().equals("") ? temp_item2.get("emdNm").toString() : "";
String fd_li_nm = temp_item2.get("liNm") != null && !temp_item2.get("liNm").toString().equals("") ? temp_item2.get("liNm").toString() : "";
String fd_rn = temp_item2.get("rn") != null && !temp_item2.get("rn").toString().equals("") ? temp_item2.get("rn").toString() : "";
String fd_buld_mn_nm = temp_item2.get("buldMnnm") != null && !temp_item2.get("buldMnnm").toString().equals("") ? temp_item2.get("buldMnnm").toString() : "";
String fd_buld_sl_no = temp_item2.get("buldSlno") != null && !temp_item2.get("buldSlno").toString().equals("") ? temp_item2.get("buldSlno").toString() : "";
String fd_lnbr_mn_nm = temp_item2.get("lnbrMnnm") != null && !temp_item2.get("lnbrMnnm").toString().equals("") ? temp_item2.get("lnbrMnnm").toString() : "";
String fd_lnbr_sl_no = temp_item2.get("lnbrSlno") != null && !temp_item2.get("lnbrSlno").toString().equals("") ? temp_item2.get("lnbrSlno").toString() : "";
String udrtYn = temp_item2.get("udrtYn") != null && !temp_item2.get("udrtYn").toString().equals("") ? temp_item2.get("udrtYn").toString() : "";
}
}
}
}
위의 코드는 주소 요청시 도로명주소에서 전달해주는 값이다.
요청 URL | 출력결과 |
http://www.juso.go.kr/addrlink/addrLinkApiJsonp.do | JSONP(xml, json) |
http://www.juso.go.kr/addrlink/addrLinkApi.do | xml, json |
- 좌표 API
CustomRestTemplate customRestTemplate = new CustomRestTemplate();
RestTemplate restTemplate = customRestTemplate.getCustomRestTemplate();
UriComponents builder = UriComponentsBuilder
.fromHttpUrl("http://www.juso.go.kr/addrlink/addrCoordApi.do")
.queryParam("admCd", hMap.get("fd_adm_cd").toString())
.queryParam("rnMgtSn", hMap.get("fd_rd_mgt_sn").toString())
.queryParam("udrtYn", hMap.get("udrtYn").toString())
.queryParam("buldMnnm", hMap.get("fd_buld_mn_nm").toString())
.queryParam("buldSlno", hMap.get("fd_buld_sl_no").toString())
.queryParam("currentPage", "1")
.queryParam("countPerPage", "99")
.queryParam("confmKey", "승인요청된 API 키")
.queryParam("resultType", "json")
.build(false);
String response = restTemplate.getForObject(builder.toUriString(),String.class);
JSONParser jsonParser = new JSONParser();
JSONObject rtn_jsonObj = (JSONObject) jsonParser.parse(response);
JSONObject rtn_jsonObj_response = (JSONObject) jsonParser.parse(rtn_jsonObj.get("results").toString());
JSONObject rtn_jsonObj_response_common = (JSONObject) jsonParser.parse(rtn_jsonObj_response.get("common").toString());
String addr_rtn_cd = rtn_jsonObj_response_common.get("errorCode").toString();
int addr_cnt = Integer.parseInt(rtn_jsonObj_response_common.get("totalCount").toString());
if(addr_rtn_cd.equals("0") && addr_cnt > 0) {
JSONArray rtn_jsonObj_response_juso = (JSONArray) jsonParser.parse(rtn_jsonObj_response.get("juso").toString());
if (rtn_jsonObj_response_juso.size() > 0) {
JSONObject temp_item2 = (JSONObject) rtn_jsonObj_response_juso.get(0);
String entX = temp_item2.get("entX") != null && !temp_item2.get("entX").toString().equals("") ? temp_item2.get("entX").toString() : "";
String entY = temp_item2.get("entY") != null && !temp_item2.get("entY").toString().equals("") ? temp_item2.get("entY").toString() : "";
hMap.put("fd_x_pos", entX);
hMap.put("fd_y_pos", entY);
}
}
좌표값을 전달 받는 코드이다.
요청 URL | 출력결과 |
http://www.juso.go.kr/addrlink/addrCoordApiJsonp.do | JSONP(xml, json) |
http://www.juso.go.kr/addrlink/addrCoordApi.do | xml, json |
728x90
반응형
'Dev > 공공데이터&API연동' 카테고리의 다른 글
도로명주소 API 좌표값 구글맵에서 사용 방법 (3) | 2020.07.30 |
---|---|
공공데이터-보건복지부_코로나19 시·도발생_현황 (0) | 2020.07.20 |