티스토리 뷰

머신러닝

[Geocoder] 주소를 위경도로 변환

느린 개미 2023. 2. 27. 05:45
반응형

주소를 위경도로 바꾸려고 이것저것 해보다가 가장 정확한 방법이라 생각되어 포스팅한다. 

 

1. 파이썬 geopy 패지키 이용 (X)

위경도 기반 클러스터링 한 결과가 이상해서 확인해보니, 잘못되게 변환 되는 것들이 꽤 있었다. 

 

2. 구글 스프레드 시트 이용하기 (X)

하루에 변환할 수 있는 개수가 제한이 있는듯 하다 1000건 미만.

 

3. 브이월드 사용

국토교통부에서 제공하는 공간정보 오픈 플랫폼이다. 하루 최대 40,000건 까지 이용 가능하다.

(그리고 우리나라 서비스니깐 뭔가 더 정확하게 변환하리라는 믿음~~)

 

회원가입 후 키 발급이 필요한데, 간단하며 가입 즉시 발급된다. 

아래에 geocoder 사용법이 자세히 설명되어 있다. 

https://www.vworld.kr/dev/v4dv_geocoderguide2_s001.do

 

공간정보 오픈플랫폼 오픈API

Geocoder API 2.0 레퍼런스 Geocoder API 2.0 레퍼런스입니다. API 버전 : Geocoder API 2.0 레퍼런스 Geocoder API 1.0 레퍼런스 이동 소개 주소를 좌표로 변환하는 서비스를 제공합니다. 요청URL을 전송하면 지오코

www.vworld.kr

 

사용 예제는 아래와 같다. 

import requests
apiurl = "http://api.vworld.kr/req/address?"
params = {
    "service": "address",
    "request": "getcoord",
    "crs": "epsg:4326",
    "address": "판교로 242", #변수 이용할 경우 따옴표 없이 변수명만 
    "format": "json",
    "type": "road",
    "key": "발급받은 키"
}
response = requests.get(apiurl, params=params)
if response.status_code == 200:
    json_data = response.json()
    print(json_data)

실행 결과는 아래와 같다. 

json 형식으로 출력되는데 보기가 불편하다. indent 를 넣어 다시 확인해본다. 

실행결과는 아래와 같다. 

import json

print(json.dumps(json_data, indent="\t") )

 

 

결과  : 

x 는 경도(longitude) , y 는 위도(latitude) 이다. (위도->경도 순이 아닌 경도->위도 순임을 유의하자.)

 

경도

json_data['response']['result']['point']['x']

 

위도

json_data['response']['result']['point']['y']

반응형