본문 바로가기
Project

[CBB 공모전] 카카오맵 API 활용, 위경도 좌표를 주소로 변환

by aimaimee 2023. 6. 7.

230525 목

💡 영등포구 위경도 좌표를 활용하여 주소 변환

영등포구의 흡연시설은 위도, 경도는 존재하지만 주소컬럼은 존재하지 않는다. 

위경도→주소 변환 하고 싶을 때 사용한 코드(역지오코딩)

카카오맵API를 검색하면, https://apis.map.kakao.com/web/guide/ 해당 사이트가 나오고, 이 사이트는 자바스크립트 API이므로 파이썬 코드를 사용하는 나로서는 이해하기가 쉽지 않다. 파이썬 코드들은 아래 주소의 로컬 > REST API 페이지를 보는게 이해에 도움이 된다. 카카오 developers의 로컬 > REST API 를 사용해서, 주소 검색, 좌표로 주소 변환, 좌표계 변환 등을 할 수 있다.(스크린샷의 우측 목차 참고)

https://developers.kakao.com/docs/latest/ko/local/dev-guide

 

위경도 좌표로 주소를 불러오는 코드를 작성했음에도, 제대로 변환이 안되는 경우가 있다. 그럴 때는 results가 어떻게 나오는지 출력을 해본다. results[0] 부분이 주소 정보에 해당하고, 그 중 불러오고 싶은 정보를 찾아서 코드를 수정해줄 필요가 있다.

현재 경우에는 주소를 불러오고 싶을 때 주소가 할당 된 results[0]의 ['address']의 ['address_name']을 가져오게 설정했지만, 결과값과 가져오고 싶은 값에 따라서 results[0]['road_address']['address_name'] 등 변경이 필요할 때가 있다.

results[0]을 출력한 값

# 위경도 좌표로 주소 매칭하는 함수
def GetAddress(lng, lat):
    
    url = "https://dapi.kakao.com/v2/local/geo/coord2address.json?x="+lng+"&y="+lat
    headers = {"Authorization": 'KakaoAK ###write your key###'}
    results = requests.get(url, headers=headers).json()['documents']
    
    address = results[0]
    name = address['address']['address_name']

    return name

참고) 주소→위경도 변환 하고 싶을 때 사용한 코드(지오코딩)

 

# 위경도 매칭 함수
def GetLatLng(address):
    
    url = "https://dapi.kakao.com/v2/local/search/address.json?query={}".format(address) #요청할 url 주소
    headers = {"Authorization": 'KakaoAK ###write your key###'} #REST API 키(유효한 키)
    results = requests.get(url,
                          headers=headers).json()['documents'] #카카오 API 요청
    
    result = results[0]
    name = result['address_name']
    x = result['x'] # Lng, 경도
    y = result['y'] # Lat, 위도
    data = [name, x, y, address]
    return data

댓글