Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 | 29 | 30 | 31 |
Tags
- osmnx
- GCN
- 파이썬
- python최단거리
- docker
- 알고리즘
- 지하철역좌표
- 이미지빌드
- 그리드분할
- MESH
- 귀여운고래
- 도커 레이어
- 컨테이너
- STL
- geopandas
- 패치분할
- graph
- GIS
- geojson
- 3d
- 동명이인찾기
- Python
- 폴더조사
- 도커
- 3d데이터
- 좌표거리
- Set
- 데이터입수
- pyvista
- GNN
Archives
- Today
- Total
이것저것 기록
[python, GIS] 카카오 지도 API 를 사용해서 도로명주소 및 행정구역코드 추출 본문
근래에 카카오 지도 API를 사용해야할 일이 있었다. 사실 네이버 API든 카카오 API든 상관 없었는데,
네이버 API는 서비스 등록 환경을 등록해야해서 url이나 앱 주소를 넣어야 했다.
난 그냥 파이썬에서 API 기능 몇 개만 써보고 싶었는데...ㅠㅠ
아무리 찾아도 서비스 등록 환경 없이 파이썬에서 네이버 API를 사용하는 방법에 대한 글을 찾을 수 없어서,
그냥 포기하고 카카오 API로 갈아 탔다 ㅋㅋㅋ
그래서 오늘은 카카오 지도 API를 사용해서 주소 및 행정구역코드 정보를 받아오는 방법에 대해 기록해 두려고 한다.
이 포스팅에 올린 코드는 깃헙에 샘플 파일과 함께 올려두었으니 참고!
1. 필요한 라이브러리
import pandas as pd
import requests
import sys
import json
import datetime
2. 함수 정의
def json_request(url='', encoding='utf-8', success=None, error=lambda e: print('%s : %s' % (e, datetime.now()), file=sys.stderr)):
headers = {'Authorization': 'KakaoAK {}'.format(APP_KEY)}
resp = requests.get(url, headers=headers)
# print('%s : success for request [%s]' % (datetime.now(), url))
return resp.text
def reverse_geocode(longitude, latitude):
# 파라미터 최적화하여 url 생성
url = '%s?x=%s&y=%s' %(URL, longitude, latitude)
# json request
try:
# print('try')
json_req = json_request(url=url)
json_data = json.loads(json_req)
json_doc = json_data.get('documents')[0]
json_name = json_doc.get('address_name')
json_code = json_doc.get('code')
except:
# print('nan')
json_name = 'NaN'
json_code = 'NaN'
return json_name, json_code
def get_address(x,y):
address = []
json_name, json_code = reverse_geocode(x, y)
address.append(json_name)
return address # 전처리 함수에서 주소 리스트 받아서 데이터프레임에 추가
def get_code(x,y):
code = []
json_name, json_code = reverse_geocode(x, y)
code.append(json_code)
return code # 전처리 함수에서 행정구역코드 리스트 받아서 데이터프레임에 추가
def get_address와 get_code는 카카오 지도 API를 사용해서 불러온 정보를 리스트 형식으로 저장해서 내보내는 코드이고, 실제로 카카오 지도 API에서 정보를 불러오는 함수는 def json_request와 def reverse_geocode 이다.
reverse_geocode에서 요청을 보낼 url및 요청할 정보들을 정의하고, json_request에서 요청을 보내는 형식으로 짜여있다.
만약에 내가 현재 설정한 정보 말고 다른 정보가 불러오고 싶다면 아래의 코드를 수정하면 된다.
그리고 카카오 지도 API에서 제공하는 다양한 정보 및 요청 방법은 카카오의 개발가이드를 참고하면 된다.
3. 코드 실행
APP_KEY = '개인 REST APP KEY'
URL = 'https://dapi.kakao.com/v2/local/geo/coord2regioncode.json'
df_all = pd.read_csv('서울특별시_병의원_위치_정보.csv', encoding='cp949')
df = df_all[['기관ID', '병원경도', '병원위도']] # 기관ID, 병원경도, 병원위도 열만 추출 (도로명주소는 일부러 날림)
for i in range(len(df)):
x_crd = float(df.loc[i, ['병원경도']])
y_crd = float(df.loc[i, ['병원위도']])
address = get_address(x_crd, y_crd)
code = get_code(x_crd, y_crd)
df.loc[i, ['ADDRESS']] = address
df.loc[i, ['CODE']] = code
if i%100 == 0:
print('{} 번째 경위도 좌표계에 대한 정보 불러오는 중...'.format(i))
'코린이 > 실무를 위한 코딩 기록' 카테고리의 다른 글
[python, GIS] 도로명주소 데이터 좌표계 확인 및 변환 (16) | 2021.02.19 |
---|---|
[python, graph] 그래프 관련 파이썬 라이브러리 소개 및 추천 (geo2dr, karateclub) (0) | 2021.01.10 |
[python, GIS] 여러 개의 .shp파일을 .png로 시각화하기 (4) | 2020.12.16 |
[python, GIS] OSMnx로 POI 데이터 추출 및 활용 (1) | 2020.12.16 |
[python, GIS] geopy로 주소 간단하게 지오코딩 하는 방법 (5) | 2020.12.09 |
Comments