파이썬으로 리버스 지오코딩하기

좌표를 통해 주소 정보(법정동, 행정동, 지번주소, 도로명주소 등)를 반환해주는 Reverse Geocoding 기능을 네이버 클라우드 플랫폼에서 제공해주고 있다. 최대 월 이용한도 3,000,000건이 무료로 제공된다. REST API 방식도 제공되므로, 파이썬으로 간단하게 Reverse Geocoding 기능을 이용할 수 있다.


서비스 이용 신청하기

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

PNG


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

PNG


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

PNG


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

PNG


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

PNG


Reverse Geocoding API 요청하기

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

import requests

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

# 좌표 (경도, 위도)
coords = "126.969594,37.586541"
output = "json"
orders = 'addr'
endpoint = "https://naveropenapi.apigw.ntruss.com/map-reversegeocode/v2/gc"
url = f"{endpoint}?coords={coords}&output={output}&orders={orders}"

# 헤더
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': {'code': 0, 'name': 'ok', 'message': 'done'},
 'results': [{'name': 'addr',
   'code': {'id': '1111010100', 'type': 'L', 'mappingId': '09110101'},
   'region': {'area0': {'name': 'kr',
     'coords': {'center': {'crs': '', 'x': 0.0, 'y': 0.0}}},
    'area1': {'name': '서울특별시',
     'coords': {'center': {'crs': 'EPSG:4326',
       'x': 126.9783882,
       'y': 37.5666103}},
     'alias': '서울'},
    'area2': {'name': '종로구',
     'coords': {'center': {'crs': 'EPSG:4326',
       'x': 126.9788345,
       'y': 37.5735207}}},
    'area3': {'name': '청운동',
     'coords': {'center': {'crs': 'EPSG:4326',
       'x': 126.9692917,
       'y': 37.5891866}}},
    'area4': {'name': '',
     'coords': {'center': {'crs': '', 'x': 0.0, 'y': 0.0}}}},
   'land': {'type': '1',
    'number1': '50',
    'number2': '31',
    'addition0': {'type': '', 'value': ''},
    'addition1': {'type': '', 'value': ''},
    'addition2': {'type': '', 'value': ''},
    'addition3': {'type': '', 'value': ''},
    'addition4': {'type': '', 'value': ''},
    'coords': {'center': {'crs': '', 'x': 0.0, 'y': 0.0}}}}]}

댓글남기기