브이월드(vWorld)
카카오맵, 네이버맵과 같은 지도정보 서비스 중 하나입니다.
다만, 서비스 운영을 공공기관(공간정보산업진흥원, 국토부 위탁)에서 하는 차이가 있습니다.
지오코딩
우리는 브이월드에서 제공하고 있는 기능 중에서 지오코더(Geocoder) API를 통해 주소정보에서
GPS 정보로 변환하는 지오코딩을 해보려고 합니다.
지오코딩이란?
지오코딩(Geocoding)은 고유명칭(주소나 산,호수의 이름등)을 가지고 위도와 경도의 좌표값를 얻는 것을 말한다.
- 위키백과 사전 중에서...
1. 계정생성 및 오픈API 서비스키 발급
- 브이월드 제공 서비스를 이용하기 위해서 로그인 계정을 우선 생성해야 합니다.
- 계정생성 후 이제 오픈API 서비스키 발급을 위해서 [메인화면] - [서비스 바로가기] - [오픈API] 로 이동합니다.
- 페이지 이동 후 [인증키] - [인증키 발급] 으로 이동합니다.
- 인증키 발급을 위해서 URL, 사용목적을 입력합니다. 저는 테스트 용도로 아래와 같이 입력 후 신청하였습니다.
- [지도 인증키 받기] 클릭하면 회원가입시 등록했던 메일로 인증메일이 발송됩니다. 메일에서 인증키를 받아와서 사용하시면 됩니다.
- 이메일에서 승인이 되기전까지 "신청" 상태이며, 인증 후 상태가 "승인"으로 바뀝니다. 저는 기존에 한개 신청해둔 키가 있어 두개가 같이 보이네요.
- 제한사용초과요청은 별도 양식을 다운받아 신청하면 되고, 지오코딩을 경우 기본 일일 3만건까지는 가능하다고 나와 있네요.
2. 지오코딩
- urllib 모듈을 사용
import json
from urllib.request import Request, urlopen
from urllib.parse import urlencode, quote_plus, quote
- 주소 입력
addr = '서울특별시 압구정동 현대아파트'
- 오픈API 호출
vworld_apikey = '발급받은인증키'
url = "http://api.vworld.kr/req/address?service=address&request=getCoord&type=ROAD&refine=false&key=%s&" % (vworld_apikey) + urlencode({quote_plus('address'):addr}, encoding='UTF-8')
print(url)
request = Request(url)
response = urlopen(request)
rescode = response.getcode()
print(response)
if rescode == 200:
response_body = response.read().decode('utf-8')
else:
print('error code:', rescode)
- JSON 응답데이터 가공 및 출력
jsonData = json.loads(response_body)
lat = float(jsonData['response']['result']['point']['y'])
lng = float(jsonData['response']['result']['point']['x'])
print('lat:{}, lng:{}'.format(lat, lng))
다음 시간에는 네이버 지오코딩을 같이 공부해봐요.
- [참고] 네이버 제공 지오코딩
api.ncloud-docs.com/docs/ai-naver-mapsgeocoding-geocode
github.com/mskim8717/python-scripts
이상. 끝.
'자기개발 > 데이터분석' 카테고리의 다른 글
[ERROR] folium RecursionError: maximum recursion depth exceeded in comparison (0) | 2021.04.14 |
---|---|
[데이터분석] 국토부 아파트 실거래가 분석 - 2. 데이터 수집(2) (0) | 2021.04.11 |
[데이터분석] 국토부 아파트 실거래가 분석 - 2. 데이터 수집(1) (2) | 2021.04.01 |
[정보공유] 데이터 분석 경진대회 사이트 (0) | 2021.03.28 |
[데이터분석] 국토부 아파트 실거래가 분석 - 1. 계정생성 및 서비스키 발급 신청 (0) | 2021.03.27 |