본문 바로가기
개발/GIS

[저장용] 네이버 리버스 지오코딩(JAVA)

by Strong_옹이 2022. 12. 20.
728x90
반응형

연계한 정보의 좌표정보로 법정동정보를 취득하기 위해 네이버 리버스 지오코딩을 이용하여 법정동 정보 저장.

좌표계정보는 기본값이 epsg:4326이여서 기본값으로 호출함.

URL 에 orders=legalcode,addr,admcode,roadaddr 부분을 수정하면 법정동코드, 지번주소, 행정동코드, 도로명주소 정보도 같이 받을수 있음.

try {
	//법정동코드가없는 전철역 정보 조회
	List<Map<String, Object>> list = dataApiDAO.selectSubwayList();
    if (list != null && list.size() > 0) {
        HashMap<String, Object> param = new HashMap<String, Object>(); 

        for ( int j = 0 ; j < list.size(); j++ ) {
			//업데이트를 하기위해 키값 저장
            param.put("statnId", list.get(j).get("statnId"));

            String addr = URLEncoder.encode(list.get(j).get("x").toString() + ","+list.get(j).get("y").toString(), "utf-8");

            HttpClient client = HttpClientBuilder.create().build();
            HttpGet getRequest = new HttpGet(getReverseGeocodingUrl + addr + "&output=json&orders=legalcode");
            getRequest.setHeader("X-NCP-APIGW-API-KEY-ID", getNaverKey);
            getRequest.setHeader("X-NCP-APIGW-API-KEY", getNaverClientId);

            HttpResponse response = client.execute(getRequest);

            //Response 출력
            if (response.getStatusLine().getStatusCode() == 200) {
                ResponseHandler<String> handler = new BasicResponseHandler();
                String body = handler.handleResponse(response);

                ObjectMapper mapper = new ObjectMapper();
                JsonNode bodyJson = mapper.readTree(body);
                System.out.println(bodyJson);

                if (bodyJson.get("results") != null) {
                    param.put("lglDongCd", bodyJson.get("results").get(0).get("code").get("id").asText());
                    dataApiDAO.updateStationPosInfo(param);
                }
            }
        }
    }
} catch (Exception e ) {
    e.printStackTrace();
}
728x90
반응형

댓글