프로젝트를 하다보면 주소 데이터를 이용해서 Map에 표시 해야 할 경우가 있습니다.
주소 데이터를 좌표로 변환 하는 방법이 여러 가지가 있는데 이중에 한가지를 설명 드리겠습니다.
제가 찾아본 주소변환 방법이
- 구글 시트의 플러그인 사용 : 속도 느리고 데이터가 많을경우 안됩니다. 700건까지는 해 봤는데 에러가 납니다.
- 파이썬 geopy 사용 : 이건 주소가 정확해야 됩니다.
- 구글 API 사용 : 이건 안 해봤음
- vworld 오픈 API 사용(국토교통부) : 한번에 40000건 까지 됩니다. 가입해서 키값만 받으면 됩니다.
그래서 저는 vworld 오픈 API 사용해서 테스트를 해봤습니다.
1. vworld 사이트에 가서 가입을 하고 API키를 받습니다.
vworld 오픈API : https://www.vworld.kr/dev/v4dv_geocoderguide2_s001.do
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)
'Qlik' 카테고리의 다른 글
Qlik Nprinting 설치시 주의 할점 (0) | 2023.05.24 |
---|---|
Qlik nprinting 설치하고 license 적용할때 에러 날경우(system.security.cryptography.cryptographicexception Keyset does not exist) (0) | 2023.05.09 |
Qlik Sense Enterprise Scalability Tools를 이용한 preload (0) | 2023.04.20 |
Qlik Header 인증을 통한 로그인 (0) | 2023.04.19 |
Qlik 데이터로드 편집기에서 데이터 연결화면이 늦게 나올 경우 (0) | 2023.04.18 |