업무에서 위경도 데이터를 다룰 일이 많아서 지리 데이터를 시각화하기 위한 스터디를 하고 있습니다. 작년에는 Python Folium을 사용해서, 대한민국 법정동 경계선 시각화해보기라는 글을 쓰기도 했는데요.
회사에서 Uber에서 개발한 지리 공간 분석 도구인 kepler를 스터디하게 됐어요! 3개월 동안 점심시간을 활용해서 아래와 같은 학습계획으로 진행하고자하는데요.
Kepler툴을 처음 다뤄보며, Kepler user guide에 작성된 kepler툴을 다루는데 필요한 기본적인 기능들을 정리하여 공유합니다.
Kepler는 Uber에서 개발한 오픈 소스 데이터 시각화 도구입니다. 위치 기반 데이터를 다루고 쉽게 시각화 할 수 있는 것이 장점입니다. 뿐만아니라 서버 백엔드가 없는 클라이언트 측 애플리케이션으로, 시각화하는데 사용하는 데이터가 브라우저에만 존재하며 어떤 서버로도 전송되지 않습니다.
kepler는 demo페이지에 접속하면, 데이터를 추가하는 페이지를 확인할 수 있습니다. 데이터를 추가하는 방법은 총 3가지가 있는데요. Chrome에서 브라우저에 업로드할 수 있는 데이터 양은 250MB로 제한되기 때문에, 250MB 보다 큰 데이터 세트의 경우 ⓑ방법을 사용하여 URL에서 직접 로드해야 합니다!
data가 없더라도 sample data 활용할 수 있게 제공하고 있는데요. 오른쪽 상단 'Try sample data'를 클릭하면 다양한 샘플데이터를 활용해볼 수 있습니다.
여러개의 데이터 셋을 추가하고 싶다면, Add Data를 클릭하면 됩니다.
아래 이미지에서 좌측상단의 빨간색 테두리로 표시해둔, Layers메뉴를 열면 데이터를 시각화 할 수 있습니다.
Layers에서 Add Layer를 클릭하면 new layer가 생성 → new layer의 select A Type을 클릭하면 다양한 layer를 선택할 수 있는 창이 뜨고 → layer를 선택하면 어떤 컬럼을, 어떤 색깔로 시각화할지 선택할 수 있습니다.
대표적인 Layers를 소개하면 다음과 같습니다.
(1) Point
Point는 위도,경도 데이터를 점으로 시각화 하는데요. kepler는 열 이름이 특정 규칙을 따르는 경우 자동으로 Layer를 감지하는데, 내가 업로드한 데이터에 <name>_lat
<name>_lng
또는 <name>_latitude
<name>_longitude
라는 열이 있는 경우 point layer를 자동으로 생성합니다!
(2) Arc
Arc는 두 point사이를 호로 그려 시각화합니다. 두 point사이의 경로를 표시하는 것이 아닌, 단순히 두 point사이의 거리를 표시합니다. 두 point사이의 거리를 3D로 비교할 수 있는 장점이 있습니다. 내가 업로드한 데이터에 두 개의 point layer가 감지되면 하나의 Arc layer가 생성됩니다.
(3) Line
Line은 Arc는의 2D 버전입니다. 둘 다 거리를 나타내기 위해 두 점 사이에 선을 그린다는 공통점이 있는데, Line은 2D로 시각화됩니다.
(4) Hexbin
Hexbin은 포인트를 육각형으로 집계합니다. 개수는 색상 또는 높이를 통해 표시될 수 있습니다.
(5) Heatmap
히트맵은 데이터 값을 색상으로 표현한 데이터를 그래픽으로 표현한 것입니다.
(6) Cluster
Cluster Layer는 지리공간 반경을 기반으로 집계된 데이터를 시각화합니다.
(7) Icon
Icon Layer는 Point Layer의 일종입니다. 필드를 기준으로 Point에 아이콘을 지정해줄 수 있습니다. 예를 들어 자동차 아이콘을 사용하여 자동차의 위도경도를 구별할 수 있겠죠!
(8) Grid
Grid Layer는 Heatmap과 유사합니다. Point의 밀도를 보여줍니다.
(9) GeoJSON
GeoJSON Layer는 Line이나 polygon을 표시할 수 있습니다. GeoJSON Layer를 활용하면 여행 경로와 같은 데이터를 표시할 수 있습니다. GeoJSON 레이어를 추가하려면 데이터세트에 geometry 데이터가 포함되어 있어야 합니다.
필터기능을 활용하여 내가 원하는 데이터만 사용하여 시각화 해볼 수 있습니다. 필터는 데이터세트의 열을 기반으로 적용됩니다.
아래 이미지에서 좌측상단의 빨간색 테두리로 표시해둔, Filters메뉴를 열면 추가 할 수 있습니다.
Filters에서 Add Filters를 클릭하면 select a filed가 생성 → select a filed를 클릭하면 어떤 컬럼을 filter로 사용할 지 선택할 수 있는 창이 뜨고 → 컬럼을 선택하면, 해당 컬럼을 필터링하여 원하는 정보만 시각화 할 수 있습니다. 이때 filter는 동일한 data의 모든 layer에 적용됩니다.
timestamp같은 시간 관련 컬럼을 filter로 선택하면, 시간대별로 데이터의 흐름을 재생해볼 수 있습니다!
Interactions과 Base map, Map Settings기능을 활용하면 세팅된 지도 값을 바꿔서 내가 원하는 시각화에 최적화할 수 있습니다.
먼저, Interactions기능에는 총 4가지가 있는데요. 사용하고 싶은 기능을 활성/비활성하는 스위치를 클릭해서 사용할 수 있습니다.
(1) Tooltip
Tooltip은 데이터 포인트 위로 마우스를 가져가면 어떤 항목을 표시할지 설정할 수 있는 기능입니다.
(2) Geocoder
Geocoder를 활성화하면 우측 상단에 창이 하나뜨는데요. 주소를 입력하거나 위도, 경도를 입력하면 지도상에 해당 위키를 찍어줍니다!
(3) Brush
Brush를 사용하면 커서로 영역을 강조 표시할 수 있습니다. 브러시를 켜면 모든 Layer가 어두지고 커서를 올려놓은 부분만 밝게 표시됩니다. 브러시는 특히 Arc Layer를 시각화 할 때 활용하면 유용합니다. Tooltip과 Brush는 동시에 사용할 수 없습니다.
(4) Coordinates
Coordinates를 선택하면 마우스를 이동할 때, 위도와 경도가 포함되어 마우스를 따라갑니다.
Base map기능을 활용하면, 배경지도 스타일을 변경하거나 맞춤 지도 스타일을 추가할 수 있습니다.
먼저 배경지도 스타일을 변경하고 싶으면 Map Style을 누르고 → 원하는 스타일을 클릭 → 선택한 지도 스타일을 map layer기능을 사용하여 숨기고 표시할 옵션을 선택할 수 있습니다.
왼쪽의 눈 표시를 클릭하면 숨길지 보여줄지를 선택할 수 있고, 오른쪽 화살표를 클릭하면, map layer가 표시되는 순서를 조정할 수 있습니다.
사용자 정의 기본 지도 스타일도 추가할 수 있습니다. Add Map Style을 클릭하여 원하는 style Url을 붙여넣어서 사용할 수 있습니다.
지도 우측 상단에 Map Settings 기능을 활용할 수도 있습니다.
주요 기능은 다음과 같습니다.
(1) 분할
지도 분할 기능을 사용하면 동일한 지도 영역을 다른 layer와 나란히 비교할 수 있습니다.
(2) 범례 표시
지도 범례를 표시할 수 있습니다.
(3) 3D로 보기
3D 아이콘을 클릭하면 지도를 3D로 볼 수 있습니다.
마지막으로 시각화한 지도를 저장하고 Export하는 방법입니다.
(1) cloud storage
개인 클라우드 저장소에 지도를 저장할 수 있습니다.
(2) share
공유하는 방식은 총 4가지가 있는데요.
ⓐ 이미지 내보내기
현재 지도를 이미지로 내보낼 수 있습니다. 이미지로 내보낼 비율이나 해상도 등을 선택할 수 있고 범례를 추가할 수도 있습니다.
ⓑ 데이터 내보내기
필터링된 데이터만 내보내거나 전체 데이터세트를 내보내는 옵션을 사용하여 지도 데이터를 csv 파일로 내보낼 수 있습니다.
ⓒ 지도 내보내기
HTML or Json 형식으로 현재 지도를 내보낼 수 있습니다.
ⓓ url 공유하기
현재 지도를 다른 사용자와 공유하기 위해 URL 공유를 클릭 하고 Dropbox 등 클라우드 저장소로 선택하면 url링크를 생성하게 됩니다.
Kepler툴을 처음 다뤄보며, Kepler user guide에 작성된 kepler툴을 다루는데 필요한 기본적인 기능들을 스터디하여 공유했어요. 지도 데이터를 시각화하기에 최적화된 툴이고, user guide에 기능들도 잘 정리되어 있어 기능을 익히는 것은 수월했어요. 이 툴을 사용하여 어떤 것을 시각화할지, 어떤 프로젝트에 활용할지 주제를 떠올리며 기능을 학습해서 더 재밌었습니다. 회사에서 진행하는 스터디 후기도 기회가 되면 작성해볼게요!