2016년 4월 15일 사용자 스토리

Elastic Stack을 이용한 서울시 지하철 대시보드

By 김종민

서울시에서 제공하는 공공데이터와 Elastic Stack 을 이용하여 서울시 지하철 사용자 현황 대시보드를 만드는 방법을 소개합니다. 지하철 사용량 데이터를 추출하고 대시보드를 만드는 방법은 다음 동영상에 설명이 되어 있습니다.


2014년도 데이터이기 때문에 시간대를 먼저 2014-01-01 ~ 2014-12-31 로 조정을 해 줘야 합니다.

seoul-metro_time-period.png

서울시 지하철은 더 많은 노선이 있지만 1~4호선은 서울메트로 그리고 5~8호선은 서울도시철도가 관리합니다. 그 외의 노선은 코레일에서 관리하기 때문에 공공데이터 포털에는 정보가 올라와 있지 않습니다. 또한 서울시가 관리하지 않는 일부 라인 (예: 3호선 일산선 삼송~대화) 또한 데이터에 포함되어 있지 않습니다. 만약 이용자가 마두(일산선) 에서 탑승하고 종로3가(3호선)에서 나왔다면 승차는 집계되지 않고 하차만 집계됩니다.

지하철역의 좌표 필드(station_geo)가 있어 맵에 표시가 가능하며, 역 이름 또한 다국어 (station_name_kr, _en, _ch, _jp) 필드로 되어 있어 다른 나라 언어로도 대시보드 제작이 가능합니다.

seoul-metro_json.png

완성된 대시보드 화면입니다.

seoul-metro-full.png

시간 그래프를 나타내는 라인차트에 보면 아래로 떨어진 구간들이 보이는데 구정 그리고 추석 연휴입니다.

seoul-metro-timeline-full.png

1주일로 시간 그래프를 줄여보면 재미난 모양을 볼 수 있습니다. 월~금 요일은 출, 퇴근시간대의 피크타임이 표시되고 주말은 완만한 곡선을 그리고 있습니다.

seoul-metro-week.png

아침과 오전 시간대로 그래프를 다시 줄여보면 사람들이 주로 많이 승차하는 지역과 하차하는 지역이 확연하게 구분이됩니다. 승차인원이 가장 많은 곳은 신림, 사당, 잠실 같은 거주지역 또는 교통 허브 지역이고 하차인원이 가장 많은 곳은 강남, 역삼, 삼성 등의 상업 지역입니다. 

seoul-metro-morning.png

seoul-metro-morning-map.png

오후와 저녁 시간대로 그래프를 변경하면 이번에는 반대 결과가 나타납니다. 강남은 여전히 하차인원 3위 지역인데, 퇴근 후에도 약속이 있어 강남쪽으로 향하는 사람들이 있다는것을 알 수 있습니다.

seoul-metro-evening-map.png

다시 시간 주기를 1주일로 변경 한 뒤 테이블 차트의 강남을 클릭해서 필터링 해 보면 시간 그래프의 모습이 오전과 오후가 구별되는 것을 볼 수 있습니다. 오전은 하차인원, 오후는 승차인원이 높습니다.

seoul-metro-gangnam.png

파이차트에 2호선 영역을 클릭해서 2호선으로 필터링을 해서 보면 지도 역시 2호선 라인만 표시됩니다.

seoul-metro-line2.png

seoul-metro-line2-map.png

지도에서도 필터링이 가능합니다. +, -, 드래그를 이용해서 원하는 지역으로 이동해서 사각형 버튼을 클릭하고 드래그를 하면 지역 범위로 필터링이 됩니다. 강남, 역삼, 선릉의 상업 지구를 필터링 해 보면 월~금은 이용량이 월등히 많고 주말은 이용량이 적은 것을 확인할 수 있습니다.

seoul-metro-seolleng.png

이번에는 홍대, 신촌의 관광, 데이트 지역으로 이동해서 필터링을 해 보면 주말 역시 이용량이 많고 가장 이용이 많은 시간대는 금요일 저녁인것을 확인할 수 있습니다.

seoul-metro-hongdae.png

이처럼 Elasticsearch 와 Kibana를 이용해서 공공데이터를 가지고 다양한 분석을 할 수 있습니다.