반응형

이번 포스팅에서 자바로 카카오 지오코딩을 활용해서 주소를 좌표변환으로 바꿔보는 예제를 해볼 것이다.

 

카카오개발자센터에서 개발 자키를 생성해서 기본적으로 등록하는 과정은 생략하겠다.

 

카카에 개발자센터에 가면 친절한 매뉴얼을 참고하면 된다.

 

developers.kakao.com

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

public class TestKakao {

    private static String GEOCODE_URL="http://dapi.kakao.com/v2/local/search/address.json?query=";
    private static String GEOCODE_USER_INFO="KakaoAK 발급받은 rest api key"; 
    
    public static void main(String[] args) {
		
        URL obj;
	
        try{
            //인코딩한 String을 넘겨야 원하는 데이터를 받을 수 있다.
            String address = URLEncoder.encode("대구광역시 중구 동성로2가 동성로2길 81", "UTF-8");
            
            obj = new URL(GEOCODE_URL+address);
			
            HttpURLConnection con = (HttpURLConnection)obj.openConnection();
            
            //get으로 받아오면 된다. 자세한 사항은 카카오개발자센터에 나와있다.
            con.setRequestMethod("GET");
            con.setRequestProperty("Authorization",GEOCODE_USER_INFO);
            con.setRequestProperty("content-type", "application/json");
            con.setDoOutput(true);
            con.setUseCaches(false);
            con.setDefaultUseCaches(false);
			
            Charset charset = Charset.forName("UTF-8");
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));
            
            String inputLine;
            StringBuffer response = new StringBuffer();
            
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
			
            //response 객체를 출력해보자
            System.out.println(response.toString());
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

 

코드를 실행해보면 다음 아래와 같은 JSON 데이터를 받을 수 있다.

{
    "documents": [{
        "address": {
            "address_name": "대구 중구 동성로2가 70-1",
            "b_code": "2711012300",
            "h_code": "2711056500",
            "main_address_no": "70",
            "mountain_yn": "N",
            "region_1depth_name": "대구",
            "region_2depth_name": "중구",
            "region_3depth_h_name": "성내1동",
            "region_3depth_name": "동성로2가",
            "sub_address_no": "1",
            "x": "128.596965097921",
            "y": "35.86954385295"
        },
        "address_name": "대구 중구 동성로2길 81",
        "address_type": "ROAD_ADDR",
        "road_address": {
            "address_name": "대구 중구 동성로2길 81",
            "building_name": "",
            "main_building_no": "81",
            "region_1depth_name": "대구",
            "region_2depth_name": "중구",
            "region_3depth_name": "동성로2가",
            "road_name": "동성로2길",
            "sub_building_no": "",
            "underground_yn": "N",
            "x": "128.596965097921",
            "y": "35.86954385295",
            "zone_no": "41938"
        },
        "x": "128.596965097921",
        "y": "35.86954385295"
    }],
    "meta": {
        "is_end": true,
        "pageable_count": 1,
        "total_count": 1
    }
}

 

json 객체를 client로 넘겨서 javascript로 받아서 처리해도 되고

 

필요한 데이터를 java에서 파싱해서 가져다가 쓰면 될 거 같다.

 

보통 지오코딩은 엘라스틱서치 db에 구축해서 데이터를 가져오는 걸로 알고 있다.  흔히 알고 있는 DBMS가 아닌 NO-SQL로 디비로 속도가 빠르고 대용량 데이터를 쉽고 빠르게 접근해서 가져올 수 있는 장점이 있다. 

 

카카오뿐만 아니라 네이버개발자센터, 브이월드에서도 지오코딩 rest api를 제공해준다.

 

api를 참조해서 개발환경에 맞게 개발하면 될 것이다.

 

그밖에도 좌표를 가지고 역으로 주소 데이터를 가져올 수 있는 리버스 지오코딩도 있다. 

 

다음 포스팅에서는 리버스 지오코딩으로 데이터를 가져오도록 해보겠다.

 

 

반응형

'java > Geocoding' 카테고리의 다른 글

카카오 rest api를 활용한 리버스 지오코딩  (0) 2021.06.15

+ Recent posts