Notice
Recent Posts
Recent Comments
Link
헬창 개발자
카카오 API, Folium 다루기 본문
실습전 환경설정
API키 발급 안하면 실습진행 불가!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
https://health-coding.tistory.com/29?category=997153
이 페이지의 목적
- Kakao Map API 기본 사용법 이해
- Folium 기본 사용법 이해
Kakao Map API 실습 코드
- Rest 키를 이용하여 주소 검색 해보기
import json
import requests
class KakaoLocalAPI:
"""
Kakao Local API 컨트롤러
"""
def __init__(self, rest_api_key):
"""
Rest API키 초기화 및 기능 별 URL 설정
"""
# REST API 키 설정
self.rest_api_key = rest_api_key
self.headers = {"Authorization": "KakaoAK {}".format(rest_api_key)}
# 서비스 별 URL 설정
# 01 주소 검색
self.URL_01 = "https://dapi.kakao.com/v2/local/search/address.json"
# 02 좌표-행정구역정보 변환
self.URL_02 = "https://dapi.kakao.com/v2/local/geo/coord2regioncode.json"
# 03 좌표-주소 변환
self.URL_03 = "https://dapi.kakao.com/v2/local/geo/coord2address.json"
# 04 좌표계 변환
self.URL_04 = "https://dapi.kakao.com/v2/local/geo/transcoord.json"
# 05 키워드 검색
self.URL_05 = "https://dapi.kakao.com/v2/local/search/keyword.json"
# 06 카테고리 검색
self.URL_06 = "https://dapi.kakao.com/v2/local/search/category.json"
def search_address(self, query, analyze_type=None, page=None, size=None):
"""
01 주소 검색
"""
params = {"query": f"{query}"}
if analyze_type != None:
params["analyze_type"] = f"{analyze_type}"
if page != None:
params['page'] = f"{page}"
if size != None:
params['size'] = f"{size}"
res = requests.get(self.URL_01, headers=self.headers, params=params)
document = json.loads(res.text)
return document
def geo_coord2regioncode(self, x, y, input_coord=None, output_coord=None):
"""
02 좌표-행정구역정보 변환
"""
params = {"x": f"{x}",
"y": f"{y}"}
if input_coord != None:
params['input_coord'] = f"{input_coord}"
if output_coord != None:
params['output_coord'] = f"{output_coord}"
res = requests.get(self.URL_02, headers=self.headers, params=params)
document = json.loads(res.text)
return document
def geo_coord2address(self, x, y, input_coord=None):
"""
03 좌표-주소 변환
"""
params = {"x": f"{x}",
"y": f"{y}"}
if input_coord != None:
params['input_coord'] = f"{input_coord}"
res = requests.get(self.URL_03, headers=self.headers, params=params)
document = json.loads(res.text)
return document
def geo_transcoord(self, x, y, output_coord, input_coord=None):
"""
04 좌표계 변환
"""
params = {"x": f"{x}",
"y": f"{y}",
"output_coord": f"{output_coord}"}
if input_coord != None:
params['input_coord'] = f"{input_coord}"
res = requests.get(self.URL_04, headers=self.headers, params=params)
document = json.loads(res.text)
return document
def search_keyword(self,query,category_group_code=None,x=None,y=None,radius=None,rect=None,page=None,size=None,sort=None):
"""
05 키워드 검색
"""
params = {"query": f"{query}"}
if category_group_code != None:
params['category_group_code'] = f"{category_group_code}"
if x != None:
params['x'] = f"{x}"
if y != None:
params['y'] = f"{y}"
if radius != None:
params['radius'] = f"{radius}"
if rect != None:
params['rect'] = f"{rect}"
if page != None:
params['page'] = f"{page}"
if size != None:
params['size'] = f"{params}"
if sort != None:
params['sort'] = f"{sort}"
res = requests.get(self.URL_05, headers=self.headers, params=params)
document = json.loads(res.text)
return document
def search_category(self, category_group_code, x, y, radius=None, rect=None, page=None, size=None, sort=None):
"""
06 카테고리 검색
"""
params = {'category_group_code': f"{category_group_code}",
'x': f"{x}",
'y': f"{y}"}
if radius != None:
params['radius'] = f"{radius}"
if rect != None:
params['rect'] = f"{rect}"
if page != None:
params['page'] = f"{page}"
if size != None:
params['size'] = f"{size}"
if sort != None:
params['sort'] = f"{sort}"
res = requests.get(self.URL_06, headers=self.headers, params=params)
document = json.loads(res.text)
return document
rest_api_key = "카카오api키입력"
kakao = KakaoLocalAPI(rest_api_key)
- 주소 쿼리를 이용해 정보 받기
query = "전북 군산시 대학로 558"
result_01 = kakao.search_address(query)
result_01
- 좌표-행정구역 정보 변환
x = 126.680356828107
y = 35.9503457085054
result_2 = kakao.geo_coord2regioncode(x, y)
result_2
- 좌표-주소변환
x = 126.680356828107
y = 35.9503457085054
result_3 = kakao.geo_coord2regioncode(x, y)
result_3
- 키워드 검색
query = "군산대학교"
result_5 = kakao.search_keyword(query)
result_5
- 카테고리 검색
'''
category_group_code
MT1 대형마트
CS2 편의점
PS3 어린이집, 유치원
SC4 학교
AC5 학원
PK6 주차장
OL7 주유소, 충전소
SW8 지하철역
BK9 은행
CT1 문화시설
AG2 중개업소
PO3 공공기관
AT4 관광명소
AD5 숙박
FD6 음식점
CE7 카페
HP8 병원
PM9 약국
'''
category_group_code = "SC4"
x = 126.680356828107
y = 35.9503457085054
radius = 20000 # 검색 범위
result_6 = kakao.search_category(category_group_code, x, y, radius)
result_6
Folium 실습 코드
Folium
- folium : 지도 시각화 라이브러리
- 기본적인 명령
- Map(location=[위도, 경도], Map(location=(위도, 경도)
- tiles : 스타일 설정(OpenStreetMap, Stamen Terrain/Toner/Watercolor, CartoDB positron, CartoDB dark_matter 등)
- zoom_start : 줌 설정(0~18)
- save : 지도를 html 형식으로 저장
- Marker : 지도에 마커 추가
- popup, tooltip : 마커 클릭 또는 커서 이동 시 문구 출력(html 문법 사용 가능)
- icon : 다양한 모양의 아이콘 지원
- add_to : Map을 매개변수로 받아 해당 지도에 마커 추가
import folium my_map = folium.Map(location=[35.94642607873417, 126.68218834963535], tiles="OpenStreetMap",zoom_start=17) folium.Marker([35.94642607873417, 126.68218834963535], popup="<i>Kunsan University</i>", icon = folium.Icon(icon="info_sign", color="red")).add_to(my_map) my_map
- Map(location=[위도, 경도], Map(location=(위도, 경도)
'데이터 분석' 카테고리의 다른 글
3. 네이버 영화 평점 크롤링 (4) | 2022.02.15 |
---|---|
2. 서울시 범죄 현황 분석 (0) | 2022.02.15 |
판다스 매트플롯 다루기 (0) | 2022.02.15 |
1. 서울시 cctv 현황 분석 (0) | 2022.02.15 |
환경 설정 (0) | 2022.02.15 |
Comments