본문 바로가기

Qlik

주소 데이터를 좌표로 변환

프로젝트를 하다보면 주소 데이터를 이용해서 Map에 표시 해야 할 경우가 있습니다.

주소 데이터를 좌표로 변환 하는 방법이 여러 가지가 있는데 이중에 한가지를 설명 드리겠습니다.

제가 찾아본 주소변환 방법이 

  • 구글 시트의 플러그인 사용 : 속도 느리고 데이터가 많을경우 안됩니다. 700건까지는 해 봤는데 에러가 납니다.
  • 파이썬 geopy 사용 : 이건 주소가 정확해야 됩니다. 
  • 구글 API 사용 : 이건 안 해봤음
  • vworld 오픈 API 사용(국토교통부) : 한번에 40000건 까지 됩니다. 가입해서 키값만 받으면 됩니다. 

그래서 저는 vworld 오픈 API 사용해서 테스트를 해봤습니다.

1. vworld 사이트에 가서 가입을 하고 API키를 받습니다.

    vworld 오픈API : 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

2. 저는 파이썬 예제를 참조 해서 만들어 봤습니다. 

   테스트 용으로 만든 것이라서 에러는 나지 않는데, 사용하는 데이터에 맞춰서 참조해서 사용 하시면 될거 같습니다.

import pandas as pd
import requests
import json

# 엑셀 파일에서 주소 목록을 가져오기
df = pd.read_excel('xxxxxxxxxxx.xlsx', sheet_name='Sheet0')

# 주소를 이용하여 API를 호출하고, 결과를 DataFrame에 추가
lat_list, lng_list = [], []
apiurl = "http://api.vworld.kr/req/address?"

for i in df.index:
    address = df['주소'][i]
    print(address)
    # 주소에서 위도, 경도 좌표 검색
    params = {
        "service": "address",
        "request": "getcoord",
        "crs": "epsg:4326",
        "address": address,
        "format": "json",
        "type": "PARCEL",
        "key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
    response = requests.get(apiurl, params=params)
    jsonData = None
    if response.status_code == 200:
        jsonData = response.json()
        if jsonData.get("response").get("status") == "OK":
            print(jsonData.get("response").get("result").get("point")) 
            lat = jsonData.get("response").get("result").get("point").get("x")
            lng = jsonData.get("response").get("result").get("point").get("y")
            lat_list.append(lat)
            lng_list.append(lng)

# DataFrame에 위도, 경도 정보 추가
df['latitude'] = lat_list
df['longitude'] = lng_list

# 결과를 엑셀 파일로 저장
df.to_excel('output.xlsx', index=False)