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 |
Tags
- 우한코로나
- 정은경 본부장님
- 필리핀사망
- parasite
- 조현병
- 전염병
- wuhan
- Bolton
- cnn
- 진짜영웅
- sharonchoi
- 우한코로나바이러스
- 중국외교부
- 최성재
- red hearse
- 우한
- 코로나19
- 우한 코로나
- 봉준호감독통역
- 웨일즈
- 확진자수
- 코로나
- 창궐
- 봉준호감독통역사
- 코로나바이러스
- 치앙마이
- everybody wants you
- 어서와한국은처음이지
- 미중
- 신종코로나
Archives
- Today
- Total
오지's blog
주소->위도경도변환 python 프로그램 - 네이버, 카카오 API활용 본문
728x90
반응형
카카오나 네이버 마찬가지로 get방식으로 주소를 넘겨주면 api를 호출하여 주소와 관련 위도 경도값이 나옵니다.
1. 카카오 API활용
주의해야 할점이 첫째로 kakao developer에서 key를 받아야 하고, 둘째로 kakao에서 api key를 받아서 "Your API KEY"의 부분에 "KakaoAK Key"를 입력해야한다. 예를들어 Key가 a1s2라고 하면 "Your API KEY"대신 "KakaoAK a1s2"를 입력하면 된다.
def getLatLng(addr):
url = 'https://dapi.kakao.com/v2/local/search/address.json?query=' + addr
headers = {"Authorization": "Your API KEY"}
#get 방식으로 주소를 포함한 링크를 헤더와 넘기면 result에 json형식의 주소와 위도경도 내용들이 출력된다.
result = json.loads(str(requests.get(url, headers=headers).text))
status_code = requests.get(url, headers=headers).status_code
if(status_code != 200):
print(f"ERROR: Unable to call rest api, http_status_coe: {status_code}")
return 0
print(requests.get(url, headers=headers))
print(result)
try:
match_first = result['documents'][0]['address']
lon = match_first['x']
lat = match_first['y']
print(lon, lat)
print(match_first)
return lon, lat
except IndexError: # match값이 없을때
return 0
except TypeError: # match값이 2개이상일때
return 0
네이버 API활용
def get_apikey(key_name, json_filename):
BASE_DIR = Path(__file__).resolve().parent.parent # == os.path.dirname(os.path.abspath(__file__))
json_filepath = os.path.join(BASE_DIR, json_filename)
# print(json_filepath)
if(not os.path.isfile(json_filepath)):
print("JSON File Not Found")
raise FileNotFoundError
with open(json_filepath) as f:
json_p = json.loads(f.read())
# print("json_p: ", json_p)
try:
value=json_p[key_name]
return value
except KeyError:
error_msg = "ERROR: Unvalid Key"
return error_msg
def getlatlng_naver(addr):
key_id = get_apikey('X-NCP-APIGW-API-KEY-ID', json_filename="secret.json")
key = get_apikey('X-NCP-APIGW-API-KEY', json_filename="secret.json")
headers = {'X-NCP-APIGW-API-KEY-ID':key_id,
'X-NCP-APIGW-API-KEY':key}
url = 'https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query='+addr
result = json.loads(str(requests.get(url=url, headers=headers).text))
try:
addr_info_lon = result['addresses'][0]['x']
addr_info_lat = result['addresses'][0]['y']
except IndexError: # match값이 없을때
print("IndexError발생, 해당 주소에 맞는 위도 경도 없음, idx: ",idx, "번째, 주소정보: ", addr)
raise IndexError
except TypeError: # match값이 2개이상일때
print("TypeError발생, 해당 주소에 맞는 위도 경도값 2개 이상, idx: ",idx, "번째, 주소정보: ", addr)
raise TypeError
return addr_info_lon, addr_info_lat
네이버나 카카오api모두 get방식으로 주소를 헤더와 함께 넘겨 각각 포맷에 맞는 위도경도값을 json파일로 부터 가져오는 방식이다.
Reference
'개발노트 > Python' 카테고리의 다른 글
folium popup size 수정하는 방법 (0) | 2021.03.21 |
---|---|
github에 코드 올릴때 key값을 숨기는 방법 - python 이용 (0) | 2021.03.20 |
python을 이용한 코로나19 예방접종센터 현황 관련 지도 띠우기(매우간단) (1) | 2021.03.19 |
python 면접 준비 v1 (0) | 2021.01.15 |
타이타닉 데이터 분석을 kaggle에 제출하고 나서.. (0) | 2021.01.06 |
Comments