MZP

Movement Zone Pattern #

S-MZP 분석은 Spatial Movement Zone Pattern의 약자로서 기존에 수집된 대중교통 스마트카드 이용 데이터를 기반으로 대중교통의 이용자가 탑승하여 하차하는 구역(Zone)을 발견하고 클러스터링 하여 탑승객의 이동하는 주요 구역(S-MZP)을 발견하는 것이 목표이다.

본 실험은 일주일간의 대중교통 스마트카드 이용 내역 중 지하철과 마을버스를 제외한 탑승객의 탑승내역을 기반으로 하여 버스 탑승객의 S-MZP를 찾고 찾은 결과를 지도에 표시하는 방법에 대해 설명하겠다. 스마트카드 이용내역에서 탑승객의 승하차위치 정보 추출, 버스 정류장 위치 정보를 지오해시(Geohash)로 변환, 변환 된 위치와 이용내역을 기반으로 구역별 이동 패턴 발견, 발견된 이동 패턴을 지도에 표시하는 크게 4단계로 이루어진다.

첫 번째 단계는 스마트카드 이용내역에서 탑승객의 승하차 위치 정보를 추출하는 것으로 진행된다. 이용내역은 2012년 3월 2번째 주의 일주일 동안 축적된 서울시 스마트카드 이용 DB를 사용하였다. 서울시는 거리비례 요금제를 채택하고 있기 때문에 탑승객은 탑승 시에 기본요금을 스마트카드를 터치하여 요금을 납부하고 하차 시에 이동거리에 비례한 추가 요금을 스마트카드를 터치하여 납부하는 방식이다. 따라서 승객의 승하차 위치를 판별하는 데 스마트카드 이용내역을 기반으로 판단하였다. 스마트카드 이용내역은 다양한 속성의 데이터를 가지고 있지만 본 연구에서는 승객의 승하차 위치 및 시간을 추출하여 사용 하였다.

두 번째 단계는 추출된 내역에서 위치 정보를 지오해시로 변환하는 단계이다. 지오해시란 Gustavo Niemeyer가 개발한 위도/경도 지오코드 시스템으로서, 위도와 경도로 표시되는 위치를 공간을 쪼개서 만든 격자모양의 “buckets”를 이용 계층적 공간 데이터 구조(hierarchical spatial data structure)로 바꿔준다. 따라서 실제 정확한 한 점(point)를 나타내는 것이 아니라 그 점이 속한 박스(bucket)를 나타낸다. 예를 들어 광화문을 나타내는 위도 37.576003, 경도 126.976914는 지오해시 코드로는 “wydmc2tb0dcf”로 표시된다. Geohash의 장점은 지리적으로 가까운 장소에 대한 정보를 물리적으로 근접하게 해주며, 지오해쉬의 코드는 크기별로 위치에 대한 정확도를 나타내며 지오해시 끝자리를 삭제하며 크기를 줄이면 위치 정밀도가 서서히 감소하는 장점이 있다. 예를 들어 지오해시 8자리의 버킷의 크기는 38.2m*19m이며 최대 위치 오차는 ±19m가 발생하지만 7자리 크기는 152.9m*152.4m 최대 위치 오차는 ±76m, 6자리 크기는 1200m*609.4m 최대 위치 오차는 ±610m 순으로 격자의 크기는 점점 커지며 이에 따라 오차가 순차적으로 증가하는 것을 볼 수 있다. 본 연구에서는 버스 정류장의 하나의 구역을 구성하는데 지오해시의 buckets를 활용하였다. 그래서 분석에 사용되는 버스 정류장 수는 8207개 이지만 지오해시 6자리 단위로 buckets을 구성한 결과 1055개의 구역을 기준으로 분석하게 되었다. 기존에 작성된 버스 정류장 ID별 위치를 지오해시 라이브러리를 이용 변환하여 사용한다.

아래의 지도는 Geohash 격자에 승/하차객을 나타낸 것으로서 인원의 추이를 보여준다. Color scale은 해당 지도의 최대 인원으로부터 200단계로 생성하여 표시한다. 노랑색은 탑승객이 적은곳이고, 빨간색으로 갈 수록 탑승객이 많은 곳이다.


Geohash 크기 5, 평일(월,화,수,목,금) 승차 인원의 합


Geohash 크기 6, 평일(월,화,수,목,금) 승차 인원의 합


Geohash 크기 5, 주말(토,일) 승차 인원의 합


Geohash 크기 6, 주말(토,일) 승차 인원의 합


Geohash 크기 5, 평일(월,화,수,목,금) 하차 인원의 합


Geohash 크기 6, 평일(월,화,수,목,금) 하차 인원의 합


Geohash 크기 5, 주말(토,일) 하차 인원의 합


Geohash 크기 6, 주말(토,일) 승차 인원의 합

iframe이 너무 많아 느려지는 관계로 링크로 대체한다.

PHP 프로그램인 GMGeohashBOX는 Geohash 8자리 지역으로 나눠진 시간대별 승/하차 인원 데이터를 기반으로 각각의 보고 싶은 타입에 따라 지도에 표시하는 기능을 한다. 이 프로그램은 탑승객의 타입을 크게 4가지로 정할 수 있다. Geohash의 사이즈를 나타내는 size - "5~8", 탑승 일자를 나타내는 day - 데이터의 해당 일자 "20120312~20120318") 또는 평일 "w"/주말 "e", 탑승 시간을 나타내는 time- 아침 출근시간(6~10) "m"/저녁 퇴근시간(17~20) "e"/무 지정 하루 전체 승하차 유형을 나타내는 type - 승차 "r"/하차 "a"/승하차 합 "s" 의 타입으로 조작이 가능하다.

http://web.blg.kr/trans/GMgeohashBOX.php?size=7&day=w&time=e&type=r
위의 링크는 Geohash size 7, 평일 퇴근시간 승차객을 보여준다.

http://web.blg.kr/trans/GMgeohashBOX.php?size=8&day=e&type=s
위의 링크는 Geohash size 8, 주말 승/하차객 합을 보여준다.


세 번째 단계는 지오해시로 변환된 위치 정보와 이용내역을 바탕으로 구역별 이동 패턴 발견하는 것이다. 먼저 이용내역에서 탑승 정류장의 지오해시, 탑승 시간, 하차 정류장의 지오해시, 하차 시간을 추출하여 저장한다. 저장된 데이터를 기반으로 ...

네 번째 단계는 발견된 이동 패턴을 지도에 표시하는 것이다. 이동패턴의 결과는 지오해시 6자리로 출발지와 도착지들을 표시한다. 먼저 지도에 표시할 모든 지오해시코드를 추출하여 node.js의 ngeohash 라이브러리를 이용 지오해시의 격자의 위치를 추출한다. 추출된 지오해시 격자의 위치와 이동 패턴 결과를 데이터베이스에 삽입한다. 구글 지도 라이브러리를 활용하여 출발지(빨산색)와 도착지(파란색)의 위치를 표시 및 해당 결과의 순위를 표시한다.


Geohash 6자리 발견된 S-MZP 1위부터 10위


Geohash 7자리 발견된 S-MZP 1위부터 10위


Retrieved from http://bpm.khu.ac.kr/wiki/wiki.php/MZP
last modified 2014-10-23 21:07:30