import pandas as pd
import requests
### pip install pandas, pip install requests 할것.
### <https://www.vworld.kr/v4po_main.do> 해당 주소로 들어가 api 키를 요청해야 한다. 회원가입 필요.
### 파이썬 프로그램과 동일한 위치에 xlsx 파일 혹은 csv 파일이 있어야 한다.
file_path = 'kid.xlsx'
df = pd.read_excel(file_path)
# API 요청 함수
def get_coordinates(address):
apiurl = "<https://api.vworld.kr/req/address?">
params = {
"service": "address",
"request": "getcoord",
"crs": "epsg:4326",
"address": address,
"format": "json",
"type": "road",
"simple": "true",
"key": "" # API 키는 적절히 대체해 주세요.
}
try:
response = requests.get(apiurl, params=params)
print(response)
if response.status_code == 200:
response_json = response.json()
print(response_json)
if response_json['response']['status'] == 'OK': # 상태 확인
lon = response_json['response']['result']['point']['x']
lat = response_json['response']['result']['point']['y']
print(lon,lat)
return lon, lat
except Exception as e:
print(f"Error fetching coordinates: {e}")
return None, None
coordinates = []
### '파일명을 제대로 확인 해야하지만 대부분 주소 혹은 address이다.'
for index, address in enumerate(df['주소']):
lon, lat = get_coordinates(address)
if lon and lat: # 좌표가 정상적으로 찾아졌다면 리스트에 추가
coordinates.append({'주소': address, '경도': lon, '위도': lat})
else:
print(f"Address not found or error for: {address}") # 에러 메시지 출력
coordinates.append({'주소': address, '경도': 0, '위도': 0})
# 피드백을 바탕으로, 일정 개수(예: 100)의 요청마다 상태를 확인
if (index + 1) % 100 == 0:
print(f"Processed {index + 1} addresses.")
result_df = pd.DataFrame(coordinates)
### file_path를 다른 파일명으로 변경해야지 중복없이 이용 가능하다.
### 0,0으로 나온 데이터셋의 경우 따로 해당 주소만 직접 검색해서 입력 해야 한다.
result_file_path = 'kid_result.xlsx'
result_df.to_excel(result_file_path, index=False)
print(f'Results saved to {result_file_path}')
추후 위도 경도가 0,0 으로 나오는 데이터의 경우 https://www.findlatlng.org/ 해당 사이트에서 주소를 입력해서 추가 해주시면 됩니다.