- 카카오 API를 이용해 주소에서 위경도를 통해 주소를 추출해보자.우선, 카카오에서 제공하는 API를 사용하기 위해 Kakao Developers에서 api키를 발급 받아야 한다. API key를 발급받자. REST API키
- 카카오 Developer 주소: Kakao Developers
- 참고: 미완성의신
먼저 필요한 모듈을 import 한다. requests는 HTTP를 호출할 때 사용하는 라이브러리이다.
In [100]:
import json
import requests
import folium
import pandas as pd
1. API 셋팅하기¶
이곳에서 사용할 API키는 REST API 키를 참고 하도록 하자. 이번에 사용할 API이다.
In [101]:
api_key = '발급받은 api_key 입력'
2. 지리정보 API를 사용해 주소에서 위경도에서 추출¶
이제 GET()함수를 통해 다음과 같이 API를 호출 해주자. 주소는 남산을 택했으며 "남산" 주소를 검색 결과 “서울 중구 회현동1가”로 나오게 되어 이곳의 위경도를 추출하려고 한다. API문서에서는 다음에 위치 한다.
- 개발가이드: 주소 검색
In [102]:
def addr_to_lat_lon(addr):
url = 'https://dapi.kakao.com/v2/local/search/address.json?query={address}'.format(address=addr)
headers = {"Authorization": "KakaoAK " + api_key}
result = json.loads(str(requests.get(url, headers=headers).text))
match_first = result['documents'][0]['address']
return float(match_first['x']), float(match_first['y'])
이렇게 만든 addr_to_lat_lon 함수를 이용해 남산의 위경도를 추출하자.
In [103]:
df = addr_to_lat_lon("서울 중구 회현동1가")
In [104]:
df
Out[104]:
(126.981204133005, 37.5555892070291)
In [105]:
df[0]
Out[105]:
126.981204133005
In [106]:
df[1]
Out[106]:
37.5555892070291
3. 지리정보 API를 사용해 위경도에서 주소 추출하기¶
이번엔 반대로 위경도를 이용해 주소를 추출해보자.
- 개발가이드: 좌표로 주소 변환
In [107]:
def lat_lon_to_addr(lon,lat):
url = 'https://dapi.kakao.com/v2/local/geo/coord2regioncode.json?x={longitude}&y={latitude}'.format(longitude=lon,latitude=lat)
headers = {"Authorization": "KakaoAK " + api_key}
result = json.loads(str(requests.get(url, headers=headers).text))
match_first = result['documents'][0]['address_name']
return str(match_first)
이렇게 만든 lat_lon_to_addr 함수를 이용해 남산의 위경도를 추출하면 다음과 같이 주소가 출력된다.
In [108]:
lat_lon_to_addr(126.981204133005, 37.5555892070291)
Out[108]:
'서울특별시 중구 회현동1가'
In [109]:
map = folium.Map(location=[df[1], df[0]], zoom_start=14)
# for n in crime_anal_raw.index:
# folium.CircleMarker([crime_anal_raw['lat'][n], crime_anal_raw['lng'][n]],
# radius = crime_anal_raw['검거'][n]*10,
# color='#3186cc', fill_color='#3186cc').add_to(map)
folium.CircleMarker(
[df[1], df[0]],
radius = 10,
color='#3186cc',
fill_color='#3186cc').add_to(map)
map
Out[109]:
Make this Notebook Trusted to load map: File -> Trust Notebook