카카오 맵 API를 활용한 좌표 <-> 주소 변환

API 활용 준비

https://developers.kakao.com

카카오 개발자 페이지에서 여러 카카오 제품의 API를 활용할 수 있는데, 그 중에서 좌표와 주소 변환 관련해서는 지도/로컬 제품을 사용하면 됩니다.

REST API 테스트 페이지에서는 어떤 기능을 어떻게 활용할 수 있는지 확인할 수 있습니다. 확인해 볼 기능은 좌표와 주소간 변환이니 아래 이미지의 노란색 2개를 확인해보겠습니다.

좌표변환

주소 -> 좌표 변환

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import requests

KAKAO_REST_API_KEY = '' # 발급받은 API KEY

def convert_address_to_coordinates(address):
"""
입력받은 주소를 WGS84 좌표계 좌표로 변환
"""

url = 'https://dapi.kakao.com/v2/local/search/address.json?query=' + address
header = {'Authorization': 'KakaoAK ' + KAKAO_REST_API_KEY}

r = requests.get(url, headers=header)

if r.status_code == 200:
lng = float(r.json()["documents"][0]["address"]['x'])
lat = float(r.json()["documents"][0]["address"]['y'])
else:
return None

return lat, lng

# Test
convert_address_to_coordinates("서울특별시 강남구 강남대로 396") # 강남역 주소

# Output
# (37.4981646510326, 127.028307900881)

좌표가 맞는지 지도에 찍어봤는데, 강남역을 가리키고 있습니다.

지도좌표검색

좌표 -> 주소 변환

이번에는 좌표에서 주소로 변환해보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def convert_coordinates_to_address(lat, lng):
"""
입력받은 위도, 경도를 도로명, 지번 주소로 변환
"""

y, x = str(lat), str(lng)
url = 'https://dapi.kakao.com/v2/local/geo/coord2address.json?x={}&y={}'.format(x, y)
header = {'Authorization': 'KakaoAK ' + KAKAO_REST_API_KEY}

r = requests.get(url, headers=header)

if r.status_code == 200:
road_address = r.json()["documents"][0]["road_address"]['address_name']
bunji_address = r.json()["documents"][0]["address"]['address_name']
else:
return None

return road_address, bunji_address

# TEST
convert_coordinates_to_address(37.4981646510326, 127.028307900881)

# Output
# ('서울특별시 강남구 강남대로 396', '서울 강남구 역삼동 804')

이전에 강남역 좌표로 얻은 것을 다시 역지오코딩을 했을 때 강남역 주소가 나오는 것을 확인할 수 있습니다.

Author

suyoung jang

Posted on

2021-02-07

Updated on

2021-02-07

Licensed under

댓글