반응형

배경 상황

클릭 시 사이트로 이동합니다

학교 과제로 거제시의 상권분석을 해야 한다. 산업단지 및 공장이 많은 거제시의 특징에 따라 위 정보를 취득하였다.

 

그런데 데이터를 뜯어보니, 좌표 정보가 없었다. 다만 지번 형태의 주소 정보는 존재했다. 이러한 상황에서 주소 정보만을 가지고 좌표 정보를 얻는 과정을 수행해보려 한다.

 

준비 사항

클릭 시 사이트로 이동합니다

위 그림을 보면 인증키가 필요하다. 이는 회원가입이 필요함을 말한다. 브이월드에 회원가입한다.

 

회원가입 이후 서비스 -> 인증키 클릭한다.

 

이용약관에 동의한 후 위 내용을 기입하고 인증키를 받는다.

 

Geocoder API 활용 코드(파이썬)

import pandas as pd
import requests

# CSV 파일 로드
file_path = '경상남도_거제시_산업단지 및 공장등록 현황_20221231.csv'
data = pd.read_csv(file_path, encoding='cp949')

# API 요청 함수
def get_coordinates(address, api_key):
    apiurl = "https://api.vworld.kr/req/address?"
    params = {
        "service": "address",
        "request": "getcoord",
        "crs": "epsg:4326",
        "address": address,
        "format": "json",
        "type": "parcel",
        "key": api_key
    }
    response = requests.get(apiurl, params=params)
    if response.status_code == 200:
        data = response.json()
        try:
            point = data['response']['result']['point']
            return (point['y'], point['x'])  # 위도, 경도
        except KeyError:
            return (None, None)
    else:
        return (None, None)

# API 키 설정
api_key = "YOUR_API_KEY"

# 데이터프레임에 위도와 경도 열 추가
data['위도'] = None
data['경도'] = None

# 모든 주소에 대해 좌표 요청 및 데이터 업데이트
for index, row in data.iterrows():
    coords = get_coordinates(row['공장대표주소(지번)'], api_key)
    data.at[index, '위도'] = coords[0]  # 위도
    data.at[index, '경도'] = coords[1]  # 경도

# 결과를 새 CSV 파일로 저장
output_path = 'updated_data.csv'
data.to_csv(output_path, index=False, encoding='cp949')

위 코드에서 주의할 점은 이전 작업을 통해 발급받은 API KEY를 직접 기입할 것, 그리고 get_coordinates 함수 내에 "type" 값이 도로명주소일 경우에는 "road"로 변경해야 한다는 점이다.

 

결과

위 코드 실행 결과, 원래 존재하던 CSV 파일에 Geocoder를 통해 취득한 위도, 경도 정보가 추가되었다.

QGIS를 통해 띄워보니, 잘 추가된 모습이다.

 

 

QGIS - CSV 파일 지도에 나타내기

준비과정CSV 파일을 준비한다. QGIS로 CSV 파일 불러오기툴팁 -> 레이어 -> 레이어 추가 -> 구분자로 분리된 텍스트 레이어 추가 파일에 맞는 인코딩 설정 -> *X 필드와 Y 필드 지정 (필수과정) -> 오른

jschan0911.tistory.com

CSV 파일을 통해 QGIS 내에서 지도 위에 띄우는 방법은 위 링크를 참고하길..

반응형

+ Recent posts