grep

Engineering

(빅데이터를 위한) 리버스 지오코딩 솔루션 개발기

NHN

2019년 7월 29일

원문에서 보기 ↗

데이터테크랩의 '19년 토스트 루키(김규태 사원님, 최명순 사원님, 김민송 사원님)분들과 박지수 전임님께서 함께 수행한 업무과정을 다른 곳에도 공유했으면 좋겠다 라는 생각에 작성한 글입니다.

고민의 시작

미세먼지 수치, 버스도착시간, 최적경로 조회 등 위치기반 정보는 EDA(탐색적 데이터 분석 활동)에 많이 사용되는 데이터 유형입니다. 그런데, 데이터테크랩에서 활용하는 위치기반 데이터를 살펴보면 소스에 따라 꽤나 다양한 모습을 갖고 있습니다.

[신|구] 우편번호, 위경도 좌표, 도로명 주소, 구주소, [행|법] 정동 코드, 프랜차이즈 지역명(ex. 어쩌고 삼평동점)...

이런 다양한 데이터를 함께 분석하기 위해 통일된 체계로 관리하는 것은 필수이며 필요에 따라 다른 위치 체계로 자유롭게 변환해야 하는 요구 또한 상당했습니다. 그중 가장 빈번한 변환은 위경도 좌표를 주소로 변환하는 "리버스 지오코딩" 이었습니다.

주소를 우편번호나 좌표로 변환하는 것은 소규모의 맵핑 데이터만 있으면 쉽게 가능하지만 리버스 지오코딩은 그렇지 못해 외부의 (무료) Open API를 사용했습니다. 하지만 이 Open API들은 빅데이터를 처리하기에는 힘든 제약(QPS, 횟수)들이 존재하였고 일부는 유료화 과정을 거치고 있어 내제화를 결심하게 됩니다.

1.png

고민의 구체화/가능성 확인

시작 아이디어는 지역을 위경도 좌표의 묶음(폴리곤)으로 표현한 후 "조회되는 좌표가 어느 폴리곤에 포함(충돌)되는가?" 를 검사해보자 였습니다. 2.png

검사해야 할 위경도 좌표값이 삼평동이라고 마킹한 폴리곤에 포함(충돌)되면 삼평동의 한글주소를 리턴해주는 간단한 PoC를 거치면서 가능성이 보여 필요한 데이터(지역별 경계면 좌표)를 찾아본 결과 통계청과 행정안전부에 이러한 지리정보가 있음을 확인하고 바로 개발에 착수하였습니다.

공공데이터를 이용한 메타데이터 생성

1. 통계청에서 제공하는 지리정보 Shape File 입수

3.png

이 데이터를 통해서 위의 그림처럼 대한민국 3,504개 행정동의 경계면을 잇는 좌표값(폴리곤)을 추출해 낼 수 있었습니다. 다만 이 데이터는 통계청에서 사용하는 행정동 코드(7자리) 기반의 정보 만을 담고 있어 범용적으로 사용하는 주소체계로의 변환이 필요합니다. 4.png

2. 행정안전부의 행정구역 분류체계 데이터 입수

행정안전부에서 입수한 공공데이터를 이용하면 앞서 입수한 7자리의 통계청 행정 코드를 한글주소 및 10자리의 행정 코드로 변환할 수 있습니다. 5.png

3. Reverse GeoCoding 마스터 데이터 생성

1+2 데이터를 조합하면 행정동 코드, 주소, 경계면 좌표값, 동 중앙 좌표값, 우편번호 등 데이터 테크랩에서 필요한 주소체계 Dictionary를 만들 수 있습니다. 6.png

4.DataProcessing에서 사용할 HIVE UDF 개발

Esri에서 제공하는 Library를 사용하여 좌표 및 폴리곤이 어느 폴리곤에 포함되는지 검증하는 User-Defined Function을 만들었습니다. https://github.com/Esri/spatial-framework-for-hadoop/wiki/UDF-Relationships#st_contains

이렇게 만들어진 UDF는 다음과 같은 형태로 사용되고 있습니다.

with input_data as(

      select ${longitude값} as longitude, ${latitude값} as latitude)

      select &{테이블 내 원하는 컬럼} from ${테이블명}

      join input_data

      where ST_Contains(${테이블명}.boundaryshape, ST_Point(input_data.longitude, input_data.latitude));

개발후기

과거에는 조금이라도 OpenAPI 호출을 줄여보려고 좌표의 소수점을 4자리로 잘라 그룹핑하는 등 서러운(?) 전세살이를 했지만 이제 자체적으로 몇 천만 건도 한 번에 처리할 수 있으며 위경도 좌표, 한글주소, 우편번호, 행정 코드를 넘나드는 맵핑 설루션을 개발하여 좀 더 "스마트한" 위치기반 데이터 분석이 가능해졌습니다.

7.png