PYTHON/Python

Python 카카오 오픈 API(REST API) 주소로 위도, 경도 좌표 찾기

진리뷰 2024. 2. 19. 09:00
반응형

 

 

Python-카카오-오픈-API(REST API)-주소로-위도-경도-좌표-찾기-썸네일
파이썬 주소로 위도, 경도 좌표 찾기

 

 

 

카카오 오픈 API

 

내가 가진 데이터셋에 위도, 경도가 없었다.

그래서 주소를 바탕으로 위도, 경도 좌표를 찾아주는 카카오 오픈 API(REST API)를 사용했다.

 

 

오픈 API(Open Application Programming Interface)

누구나 사용할 수 있도록 공개하고 제공하는 프로그래밍 인터페이스를 의미한다.
이는 특정 기능 구현이나 데이터 접근을 가능하게 한다.
예를 들어, 앱에서 지도를 볼 수 있는 기능을 구현할 때 사용한다.

 

 

카카오 오픈 API

 

Kakao Developers

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

developers.kakao.com

 

 

위 사이트에 접속 후, [회원가입-내 애플리케이션[애플리케이션 추가하기]]를 진행한다.

 

 

내-애플리케이션
카카오 오픈 API 애플리케이션 추가하기

 

 

애플리케이션을 추가하면 [앱 설정-요약 정보-앱 키]에 개인 키 값들이 주어진다.

이 중 REST API 키 값을 사용할 것이다.

 

 

카카오API-RESTAPI-키
카카오 오픈 API REST API 키

 

 

 

주소로 위도, 경도 찾기

 

참고로 카카오 Dev 사이트에 로컬 API 구현 방법들이 정리되어 있다.

* 위 링크에서 주소 검색하기를 참조하면 된다.

 

갖고 있는 주소로 위도, 경도를 찾는 코드는 다음과 같다.

이때 위에서 받은 REST API 키 값을 붙여 넣기 해서 사용한다.

 

 

# requests 라이브러리 설치
!pip install requests

#라이브러리 import
import json
import requests

# REST API 키 저장
rest_api_key = "카카오에서 받은 자신의 REST API 키 값 붙여넣기"

# 요청 코드
def lat_long(address):    # lat_long 함수 정의	
    url = "https://dapi.kakao.com/v2/local/search/address.json?query=" + address
    headers = {"Authorization": "KakaoAK " + rest_api_key}

    try:
        response = requests.get(url, headers=headers)    # url 요청
        json_result = response.json()    # json 데이터(주소 결과) 파싱
        print(json.dumps(json_result, indent = 4, ensure_ascii = False))    # JSON 데이터 문자열 변환, 들여쓰기, 이스케이프 미처리 설정

        address_xy = json_result['documents'][0]['address']    # json 파일 내 address 선택
        return float(address_xy['x']), float(address_xy['y'])    # address에서 경도, 위도 튜플 반환
    
    except Exception as e:    # 오류 발생 시 메세지 출력
        print(e)
        return None, None

 

 

위 코드와 아래 코드를 실행하면 다음과 같은 결과가 나온다.

*이를 통해 json_result['document'][0]['address']가 왜 쓰였는지 확실히 알 수 있다.

 

 

lat_long함수-결과
함수 실행 결과

 

 

 

위도, 경도 값을 파일로 저장하기

 

lat_long()를 사용한 for문으로 주소만 담긴 csv 파일(address)의 '업소 주소' 컬럼을 끝까지 훑으며 위도, 경도 값을 리스트에 추가한다.

이렇게 값이 추가된 각각의 리스트는  'Lat', 'Long' 컬럼의 데이터로 저장된다.

 

 

 
# 리스트 초기화
latitudes = []
longitudes = []

# 주소 컬럼 csv 파일 불러오기
address = pd.read_csv("저장 경로.csv", encoding="cp949")

# 주소 컬럼 반복 함수
for addr in address['업소 주소']:
    lat, long = lat_long(addr)
    latitudes.append(lat)    # 리스트에 위도 추가
    longitudes.append(long)    # 리스트에 경도 추가

# 위도, 경도 새 컬럼 추가
address['Lat'] = latitudes
address['Long'] = longitudes

# csv 파일 새로 저장
address.to_csv("저장 경로.csv", encoding="cp949", index=False)

 

 

아래는 csv 파일로 새로 저장한 결과이다.

이로써 카카오 오픈 API를 활용한 주소로 위도, 경도 구하기는 끝났다.

이제 열심히 구한 위도, 경도 값으로 folium 라이브러리를 활용한 시각화를 해보자!

 

 

위도-경도-추가-컬럼
위도, 경도 컬럼을 추가한 csv 파일

 

반응형
top