상권 매출 예측 프로젝트 <1-1 : 전처리 좌표코드>

DATA PARK·2022년 1월 3일
0

전처리 요약

상권 데이터와 매출 예측을 위한 데이터들을 좌표를 기준으로 매핑을 진행하려 하였으나, 서로 사용하는 데이터의 좌표가 다른 것을 깨달았다. 결론부터 얘기하면, 라이브러리 pyproj 을 사용해서 상권 데이터의 epsg5181 좌표를 카카오 맵이 사용하는 wgs84 로 변환하여 주소 데이터를 추출하였다.

좌표값에 대한 설명

우선 좌표값을 변환하는 과정중에 알게 된 사실들을 간단히 적어서, 이에 대한 내용을 공유하려고 한다.

위도와 경도 (wgs84)

카카오 맵 API에서 사용하는 좌표값은 위도(latitude)와 경도(longitude)이며, 정확하게는 지리좌표계이다. 위도(latitude)는 지구를 360도의 구로 가정하여 적도가 0도가 된다. 이때 위도는 적도를 기준으로 북쪽 남쪽의 거리를 잰다. 경도(longitude)는 영국의 본초 자오선을 기준으로 동,서를 표시하는 선이다.

카카오 지도 API (ESPG:5181)

EPSG 코드는 전세계 좌표계 정의에 대한 고유한 명칭이다. EPSG 코드에 대한 상세 정의는 prj4와 wkt라는 문자열로 되어 있으며, proj4와 EPSG의 wkt는 좌표계의 다양한 제원값을 정해진 문자열로 구성되어 있다.

ESPG5181은 GRS80 타원체의 한국 중부원점이며 Y 축으로 500,000미터만큼 이동시킨 좌표계이다.

파이썬 코드

자세한 코딩은 깃헙에 최대한 자세하게 작성하였다. Github

from pyproj import Transformer, CRS

def map_address(key, x_axis, y_axis):

    key = 'KakaoAK ' + key
    url = 'https://dapi.kakao.com/v2/local/geo/coord2regioncode.json?x={}&y={}'.format(x_axis, y_axis)
    headers = {"Authorization": key}
    api_test = requests.get(url, headers=headers)
    url_text = json.loads(api_test.text)
    output = url_text['documents'][0]['address_name']

    return output
    
epsg5181 = CRS.from_proj4('+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=500000 +ellps=GRS80 +units=m +no_defs')

wgs84 = CRS.from_proj4("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
transformer = Transformer.from_crs(epsg5181, wgs84, always_xy=True)

df_address = pd.DataFrame()

for x, y in zip(상권_아파트['x'], 상권_아파트['y']):
df_address = df_address.append([map_address(key='', x_axis=x, y_axis=y)], ignore_index=True)
    
    

자료

출저설명
지오서비스ESPG 코드에 대한 설명
pyprojPython pyproj 문서
서울 열린데이터서울열린데이터 상권 좌표설명 (댓글확인)
profile
데이터분석가/데이터사이언티스트

0개의 댓글