본문 바로가기
Project

[CBB 공모전](트러블슈팅) 카카오맵 API 활용, 데이터셋 주소와 위경도 매치

by aimaimee 2023. 5. 24.

230523 화

💡 목표

구별 담배꽁초 쓰레기통 데이터셋에 존재하는 주소에 위경도를 매치하여, 지도 시각화

구글 API 보다 카카오 API의 위경도가 더 정확하게 나온다는 팀원의 정보에 카카오맵 API 활용 예정

❗ 어려움 1 - 강남구 쓰레기통 설치 주소 형태

ex) 압구정로 14길 6(신사동 548-4)

  1. 도로명 주소 or 지번 주소 하나만 필요하지만, 설치주소 컬럼에 도로명주소(지번주소), 도로명주소가 혼재되어 있음
    • 괄호('(')를 기준으로 split 후 0번째 값을 가져오도록 apply와 lambda 활용
  2. 주소 내 '앞'과 '맞은편'이 포함
    • 공백(' ')을 기준으로 split
    • 반복문 내 [-1] 인덱스 값이 '맞은편' 또는 '앞'이라면 [:-1]까지만 가져오도록 함.
  3. 주소 내 시와 구가 포함되어 있지 않음
    • '서울특별시 강남구' + 형태로 더해줌
    • 전체 주소 길이에 따라 출력되는 형태를 다르게 해 줌
      • ex) len(값) == 1인 경우는 '--로 --길'로 끝남. 2이상인 경우 '--로 --길, 7'로 구체적인 주소가 더해져 있음
  4. 중복된 값
    • 인덱스 23번과 24번 값이 동일해서 맵 API 함수를 돌리면 인덱스가 맞지 않다는 에러 발생
    • drop_duplicates(ignore_index = True)

❗ 어려움 2 - 처음 사용하는 맵 API

  1. 입력값(주소)를 넣었을 때, 출력되는 형태 공부
address = '서울특별시 강남구 압구정로14길 6'
url = "https://dapi.kakao.com/v2/local/search/address.json?query={}".format(address)
headers = {"Authorization": 'KakaoAK 발급받은API'}
results = requests.get(url, headers=headers).json()['documents']
results

  1. 좌표변환 함수 공부
  2. 도로명 주소가 존재하지 않아 IndexError 발생
    • 설치 장소가 '도로 모퉁이'인 경우로, 입력된 도로명주소가 존재하지 않음. ex) 입력 정보 : 92길 28 (실제 주소는 27과 29만 존재)
    • 근접한 곳의 위경도로 대체하고 싶으나, 모퉁이가 27번쪽 모퉁이인지, 29번쪽 모퉁이인지 알 수 없음

 

💬 현재 상황

  • 도로명 주소가 존재하지 않은 값의 경우 제외하고 데이터프레임화 해둠
  • 강남구, 동작구 완료
  • 마포구의 경우 read_csv 부터 ParserError 발생해서 내일 다시 체크해 볼 예정

댓글