파이썬으로 지오코딩하기

주소의 텍스트를 입력받아 좌표를 포함한 상세정보들을 제공해주는 Geocoding 기능을 네이버 클라우드 플랫폼에서 제공해주고 있다. 최대 월 이용한도 3,000,000건이 무료로 제공된다. REST API 방식도 제공되므로, 파이썬으로 간단하게 Geocoding 기능을 이용할 수 있다.


서비스 이용 신청하기

Geocoding API를 이용하기 위해서는 네이버 클라우드 플랫폼에 회원가입 후 결제수단을 등록해야한다. 이후 아래와 같이 Maps API 에서 이용 신청하기를 눌러준다.

PNG


콘솔 창 하단의 Application 등록을 누르고, 이용약관을 살펴본 후 다음 절차를 진행한다.

PNG


애플리케이션 이름을 적어준다.

PNG


Maps - Geocoding 을 체크 후 등록을 누르면 애플리케이션 등록이 완료된다.

PNG


API의 당일 사용량, 당월 사용량 등을 확인할 수 있다. 아래 창에서 애플리케이션 이름 영역의 인증 정보을 누르면 Client IDClient Secret 정보를 볼 수 있는데, REST API 요청 시 필요한 값들이므로 미리 복사해둔다.

PNG


Geocoding API 요청하기

Geocoding 개요 에 소개된 내용을 바탕으로 아래와 같이 파이썬으로 Geocoding API를 요청하면 된다.

import requests

# NCP 콘솔에서 복사한 클라이언트ID와 클라이언트Secret 값
client_id = ""
client_secret = ""

# 주소 텍스트
query = "서울특별시 강남구 강남대로 310"

endpoint = "https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode"
url = f"{endpoint}?query={query}"

# 헤더
headers = {
    "X-NCP-APIGW-API-KEY-ID": client_id,
    "X-NCP-APIGW-API-KEY": client_secret,
}

# 요청
res = requests.get(url, headers=headers)
res.json()
{'status': 'OK',
 'meta': {'totalCount': 1, 'page': 1, 'count': 1},
 'addresses': [{'roadAddress': '서울특별시 강남구 강남대로 310 유니온센터오피스텔',
   'jibunAddress': '서울특별시 강남구 역삼동 837-11 유니온센터오피스텔',
   'englishAddress': '310, Gangnam-daero, Gangnam-gu, Seoul, Republic of Korea',
   'addressElements': [{'types': ['SIDO'],
     'longName': '서울특별시',
     'shortName': '서울특별시',
     'code': ''},
    {'types': ['SIGUGUN'], 'longName': '강남구', 'shortName': '강남구', 'code': ''},
    {'types': ['DONGMYUN'], 'longName': '역삼동', 'shortName': '역삼동', 'code': ''},
    {'types': ['RI'], 'longName': '', 'shortName': '', 'code': ''},
    {'types': ['ROAD_NAME'],
     'longName': '강남대로',
     'shortName': '강남대로',
     'code': ''},
    {'types': ['BUILDING_NUMBER'],
     'longName': '310',
     'shortName': '310',
     'code': ''},
    {'types': ['BUILDING_NAME'],
     'longName': '유니온센터오피스텔',
     'shortName': '유니온센터오피스텔',
     'code': ''},
    {'types': ['LAND_NUMBER'],
     'longName': '837-11',
     'shortName': '837-11',
     'code': ''},
    {'types': ['POSTAL_CODE'],
     'longName': '06253',
     'shortName': '06253',
     'code': ''}],
   'x': '127.0315025',
   'y': '37.4909898',
   'distance': 0.0}],
 'errorMessage': ''}

댓글남기기