국토도시 데이터 분석 과제
LH COMPAS에서 진행한 공모전으로, 수원시 스마트 버스정류장 입지선정이라는 과제에 참여해 공간 분석을 진행한 경험이 있다. 이전에 서울시 빅데이터캠퍼스에 함께 참가한 팀원들과 다시 한번 '공간발굴단'이라는 이름으로 참여했던 과제이기도 하다.
분석 목표는 수원시의 기존 버스정류장들 중 30개를 선정해 시민들을 위한 여러 기능을 보유한 스마트 버스정류장으로 개선하는 것이었다. 분석에 사용할 데이터는 COMPAS 사이트 내에서 모두 제공하여 상세한 분석이 가능하였고, Python으로 분석 결과를 제출해야 하는 조건이 있었다.
그동안 GIS와 R을 주로 사용해왔기에 Python을 이용해 분석을 진행하는 것이 쉽지 않을 거라 생각되었지만, 결과적으로는 Python에 대해 더 많이 배우고 좋은 결과물을 만들어 낼 수 있던 프로젝트였다.
스마트 버스정류장이란?
분석에 앞서 스마트 버스정류장에 대해 간단하게 설명하면, 스마트 버스정류장은 미래형 교통 인프라로, 대기오염 물질 차단 및 수집 기능과 Wifi, 냉방 및 정화 기능, 범죄 안심벨 등의 다양한 기능을 통해 시민들의 안전과 편리성을 향상시키는 시설이다.
유지관리비가 많이 들어가는 만큼, 수원시에서는 정류장 내 상업광고를 유치함으로써 필요한 유지관리비를 확보할 계획이 있었다. 덧붙여, 각 스마트 버스정류장을 설치하는 비용이 매우 컸기 때문에 접근성, 대기오염도, 광고효과 등을 모두 고려해 가장 적합한 30개소를 선정할 필요가 있었다.
데이터 전처리 및 EDA
우선, COMPAS에서 제공하는 데이터를 모두 열어 확인하는 과정을 거쳤다. 그리고 데이터를 전처리 및 시각화하여 버스정류장 분석, 버스정류장별 승하차이력 분석, 버스인허가노선 분석, 상세도로망 분석, 추정교통량 분석, 혼잡시간강도 분석, 일별 유동인구 분석 등을 진행해 수원시의 전체적인 현황을 파악할 수 있었다.
버스정류장 분석을 통해 수원시에 1179개의 버스정류장이 있다는 것을 확인할 수 있었고, 1114개의 버스정류장 승하차이력과 99개의 버스노선정보를 종합할 수 있었다. 그 외의 상세도로망, 추정교통량 및 혼잡시간강도, 유동인구 등은 레이어를 생성해 확인할 수 있었다.
설치가능 장소 파악
전처리 과정 중 하나로, 스마트 버스정류장이 설치 가능한 정류장을 선별해내는 과정을 거쳤다. (분석 요건은 COMPAS 사이트의 과제 분석 개요에서 수원시가 지정한 요건들을 종합하여 분석하였다.)
설치 요건으로는 기존의 버스정류장들 중 BIS(Bus Information System)이 설치되어 있는 정류장을 사용해하는 점과 승강장 규격인 5.5m x 2.5m의 설치 면적과 1.5m의 보행자 통행공간을 고려한 4m 이상의 도로폭이 필요하였다.
그래서 기존의 1179개의 버스정류장 중에서 928개의 BIS가 설치된 정류장을 fiter기능을 활용해 선별해내었고, 정류장 세로 간격과 보행자 통행공간을 고려해 4m 이상의 도보만 추출하여 가변거리 버퍼를 적용하였다. 그리고 해당 버퍼 내에 포함되는 정류장들을 추출해 총 319개의 버스정류장을 도출해낼 수 있었다.
입지선정 지수
입지선정 지수로는 총 3가지에 집중하여 분석을 진행하였다. 인구수, 대기오염도, 광고효과이다. 이에 집중하여 분석을 진행한 이유는 스마트 버스정류장의 특성을 고려함과 동시에 수원시에서 제시한 분석배경과 목적에 알맞게 진행하고자 하는 것이 가장 컸다.
접근성에 대한 고민을 가장 많이 하였는데, 병원, 소방서, 경찰서, 학교, 마트 등의 특정 생활 근린 시설들에 가점을 줌으로써 접근성을 분석하는 방법, 노인, 아이 등의 사회적 배려 대상의 인구 분포에 중점을 두어 분석하는 방법, 거주 인구와 유동 인구를 모두 고려하는 방법 등을 생각하였지만 각 요소에 얼마나 가중치를 주어야 되는지에 대한 명확한 답이 없었기에 단순 거주인구에 가중치를 주지 않고 분석하는 방법을 택했다.
대기오염도의 경우, 미세먼지에만 초점을 두지 않고 전체 오염도를 고려해 분석을 진행하기로 하였다. 특히, 수원시 내에 8개의 미세먼지 측정소가 있었기에 충분한 데이터가 있을거라 확신했고, 이를 활용하면 스마트 버스정류장의 가장 큰 효과인 대기오염 물질 차단 기능의 혜택을 최대화할 수 있을 거라 생각하였다.
마지막으로, 광고효과는 정류장 안에서 버스를 기다리고 있는 승객들을 대상으로 한 내부 광고효과뿐만 아니라 정류장을 지나치는 차량과 유동인구를 고려한 외부 광고효과까지 고려하여 분석을 진행하였다. 광고효과에 대한 계산은 디지털 시니지와 옥외 광고효과를 계산한 논문을 참고하여 도출해 내었다.
그 외에도 많은 요소를 고려할 수 있었겠지만, 너무 많은 요소를 고려하기 보다는 스마트 정류장의 특성과 목적에 부합하는 요인에 초점을 맞춰서 분석하는 것이 바람직하다고 판단하였다.
인구수 분석
접근성에 대한 분석으로 인구수 분석을 진행하였는데, 'UN SDGs와 교통접근성을 중심으로'라는 KIPA 조사포럼에서 UN의 SDGs(Sustainable Development Goals)에서 제시하는 대중교통 접근성 지표를 참고하여 진행하였다.
UN에서 제시하는 대중교통 접근성 지표는 대중교통 정류장 500m 이내 인구비율로, 성-나이별 인구자료와 건물통합정보를 활용하여 진행하였다. 원래대로라면 인구자료를 건물통합정보로 나누어 각 건물에 얼마나 많은 인구가 있는지 계산해야 됐지만, 인구정보 격자 데이터가 있었기에 해당 과정을 생략할 수 있었다.
수원시 전체 거주인구를 구하기 위해 유소년(0~14), 생산연령(15~64), 노년(65세 이상)의 인구 격자를 모두 합산하여 계산하였다. 그리고 buffer를 이용해 각 버스정류장 500m 이내의 인구를 종합하여 접근성 지표를 계산할 수 있었다.
대기오염도 분석
미세먼지는 대기오염물질 농도로 통합하여 분석을 진행하였다. '국토환경연동제 지원을 위한 정밀공간환경정보지도 작성 기법 연구'에서 여러 공간내삽 방법을 사용해 대기오염농도를 계산한 방법이 있었기에, 이를 참고하여 계산을 진행했다.
분석 방법은 각 측정소 별 CAI(통합대기환경지수)를 에어코리아에서 제시된 지수 산출 방법을 활용하여 계산하고, 이를 공간 내삽 방법 중 하나인 IDW(역거리가중) 보간법을 활용해 CAI Map을 생성함으로써 진행하였다. COMPAS에서도 수원시 대기오염도에 대한 데이터를 제공하였지만, 더욱 짧은 시간단위로 측정이 진행된 에어코리아 데이터를 활용하여 계산을 진행하였다.
생성된 CAI레이어를 확인했을 때, 인구와 교통량이 많은 지역의 대기오염도가 심하게 나타나는 것을 확인할 수 있었고 밭와 산이 있는 지역의 경우 대기오염도가 낮게 나타나는 것을 확인할 수 있었다. 즉, 분석이 잘 이루어진 것을 알 수 있었다.
광고효과 분석
광고효과는 외부 광고효과와 내부 광고효과로 나누어 계산하였다. 광고효과를 2개로 나눈 이유는, 스마트 버스정류장 쉘터 외부에 게재되는 옥외광고인 외부 쉘터광고와 스마트 버스정류장 쉘터 내부 BIS 시스템에 게재되는 영상광고인 내부 BIS광고의 성격이 다르다고 판단했기 때문이다.
정류장을 지나는 차량과 사람들에게 노출되는 외부 광고효과는 차량 유동인구와 도보 유동인구를 가시거리와 차량정체도로 각각 곱해 산출하였다. 평균속도가 제한속도의 절반인 기준속도보다 낮을 경우 차량정체가 발생함을 정의해 계산을 진행하였다. 특히, 각 도로마다 평균속도와 기준속도가 다르기 때문에 이를 고려해 계산하였다.
버스를 기다리는 사람들에게 노출되는 내부 광고효과는 승차와 환승 과정에서 발생하는 대기시간에 이용량을 곱하여 산출하였다. 승차 대기시간의 경우, 평균적으로 배차시간의 절반 정도 기다리기에 이를 가정하여 계산하였고, 환승 대기시간의 경우, 노선이 많을수록 더욱 짧은 시간 안에 환승이 가능할거라 생각되어 노선수에 반비례한다고 가정하여 계산을 하였다.
정규화 및 최적화
앞서 구한 인구수, 대기오염도, 광고 효과에 대한 지수들이 모두 다르기 때문에 정규화를 진행하였다. 로버스트 정규화를 통해서 스케일을 조정하였고, 이를 모두 동일한 가중치로 합산하여 30개의 후보지를 도출할 수 있었다.
가중치의 경우, 원래대로라면 AHP(계층)분석을 진행해 교통 및 도시 전문가들의 판단과 수리적인 분석을 통해서 구하는 것이 가장 바람직하나, 현실적으로 짧은 시간 내에 전문가들을 거쳐 분석을 진행하기에는 무리가 있어 모든 지수의 가중치가 동일하게 중요하다고 판단하였다.
산출된 30개의 후보지를 지도에 시각화하였을 때 느꼈던 것은, 모두 특정 중심지에 밀집되어 있다는 점이었다. 전부 가장 많은 사람들이 꾸준히 혜택을 받을 수 있는 장소였지만, 정류장의 특성과 공공성을 고려한다면 편향된 정류장들을 분산시킬 필요가 있어보였다.
그래서 MCLP(Maximum Covering Location Problem) 최적화를 진행하기로 하였다. (MCLP는 여러 제약 조건 아래에서 목적 함수를 최대화하는 방법으로, 그리디 알고리즘, 선형 계획법 등의 다양한 최적화 방법에 의해 풀이된 문제이다.)
그 중 우리는 치환 과정(Substitution Procedure)이 포함된 그리디 에딩 알고리즘(Greedy Adding Algorithm)을 사용하여 다시 319개의 정류장 중에서 30개의 후보지를 추출해 내었다. 프로세스는 일반적인 그리디 알고리즘이랑 비슷한 데, 차이가 있다면 전역 최적값을 고려해 계산한다는 점이 조금 다르다.
그리디 에딩 알고리즘의 반복 선별 작업을 거쳐 새롭게 도출한 30개의 후보지와 기존의 RBS(Robust Scale) 점수 합을 통해 구한 30개의 후보지를 정량적으로 비교해보았다. 그 결과, MCLP 최적화를 적용한 후보지의 RBS 점수 합이 약 20.6% 감소한 것에 비해 각 정류장이 커버할 수 있는 면적이 약 72.2% 증가하였음을 알 수 있었다.
이렇게 구한 최종 30개의 후보지를 앞서 분석한 3가지의 입지선정지수로 만든 레이어에 올려 비교했을 때, 대부분 요건을 만족하는 지역에 적절하게 배치되었음을 확인할 수 있었다.
프로젝트를 되돌아 보며
해당 프로젝트는 나에게 의미가 깊은 프로젝트이다. 공모전에 참여한 94팀 중 2위라는 성과를 내었다는 것도 감사한 일이었지만, 무엇보다도 많이 배우고 연구할 수 있었던 프로젝트였다는게 가장 감사하다.
프로젝트를 되돌아 보면서 느낀 점은 해당 프로젝트가 여러 부분에서 부족했음에도 좋은 성과를 낸 것 같다는 생각이었다. 그럼에도 불구하고 좋은 성과를 낸 이유가 있다면, 선행연구에 기반하여 분석을 진행하였기에 주장에 대한 뒷받침이 확실했던 점이었던 것 같다. 그리고 분석을 의뢰한 수원시에서 제시한 요건들에 충실했기 때문이라고 본다. 스마트 버스정류장의 특성을 최우선시하였고, 무엇보다 최대한 많은 시민들이 혜택을 받을 수 있도록 하는 데에 집중하였다.
프로젝트를 되돌아보는 입장에서 아쉬운 점은 공공시설의 특성을 조금 간과했던 것 같다는 생각이 들었다. 후보지가 수원시의 4개 행정구에 각각 균일하게 분산되지 않고, 사람이 많고 대기오염도가 높아 꼭 필요한 곳에만 치중되어 있기 때문이다. 물론 이를 통해 혜택을 받는 시민들은 더욱 많겠지만, 한편으로는 후보지가 한 개도 없는 지역구의 입장에서는 공평하지 못한 처사일수도 있기 때문이다. 앞으로는 조금 더 형평성을 고려한 분석을 진행해야겠다는 성찰을 할 수 있었다.
공모전이 끝난 이후에는 함께 수상한 팀들의 분석을 모두 확인하였는데 전부 우리와는 다른 방법으로 분석을 진행했기에 배울 점이 정말 많았던 것 같다. 특히, 최우수상을 수상한 팀이 NLP Cluster로 정류장 이름을 이용해 군집을 나눠서 파생변수를 만든 것은 생각도 못했던 방법이었다. 또한, 입지를 선정할 때 수원시가 가진 특성을 고려했으면 더욱 좋은 분석이 가능했을 거라는 생각도 들었다. 다른 팀의 분석들을 보면서 우리의 부족했던 점과 잘한 점을 찾아 볼 수 있었고 아직도 배울 점이 많다고 크게 느꼈다.
더 나은 공간분석을 할 수 있는 내가 되길 바라며, 글을 마친다.
* 자세한 코드는 아래 링크에서 확인 가능하다.
https://compas.lh.or.kr/subj/past/code?subjNo=SBJ_2102_002&teamNo=1178
COMPAS
COMPAS
compas.lh.or.kr
'프로젝트' 카테고리의 다른 글
공항 온실가스 감축 프로젝트 (0) | 2022.02.03 |
---|---|
우리동네 키움센터 입지선정 - 서울시 빅데이터캠퍼스 공모전 (0) | 2022.01.06 |
딥러닝을 활용한 애호박 선별기 (0) | 2022.01.04 |
소셜메트릭스 - 진로 소주 분석 (0) | 2021.12.27 |
마스크 재고 알림 앱 - COMA(COrona Mask Alarm) (0) | 2021.12.27 |