사용자의 위치 정보를 바탕으로 서울에서의 인근 화장실 위치 정보를 제공한다.
(1) 거리 순으로 Distance Score를 부여한다.
(2) Distance Score 상위 10개 중, 실시간 혼잡도가 낮은 곳으로 최종 3곳을 추천한다.
(3) Final Score = Distance Score - Congestion Score
(4) 반경 300m 내에 있는 추천 화장실명, 주소, 혼잡도, 거리 정보를 제공한다.
데이터가 엉망이어서 시간이 좀 걸렸다.
특히 위도와 경도값은 필수인데, 주소값만 있거나 한 것은 구글과 카카오맵 API를 이용하여 정보를 끌어와 채워넣었다.
반대로 주소값이 없고, 위경도값만 있는 것도 같은 방식으로 처리했다.
폴리엄을 이용하여 데이터 값들 전체를 지도에 구현하였다.
그냥 화장실 위치데이터만 들어간 데모 버전이다.
사용자는 접속하여 맵을 확대하면서 직접 자신의 위치를 찾고, 그 근처의 화장실을 찾아야 한다.
위도와 경도를 입력할 수 있는 기능을 추가했다.
사용자는 자신의 위도와 경도를 입력하면 근처의 화장실을 빠르게 찾을 수 있다.
근데 평소에 누가 자신의 위경도값을 알고 있겠음?ㅡ.ㅡㅋㅋㅋ
사용자의 실제 위치 데이터를 가져와서 지도에 표시한다.
파이썬 기반의 웹서비스 중 가장 유명한 것은 장고와 플라스크가 있다.
하지만 데이터 시각화에는 스트림릿이 좋다는 얘길 듣고 한번 사용해 봤다.
참고로 스트림릿은 HTML, CSS, JavaScript, 즉 프론트엔드 기술이 없어도 코드 몇개만 알면 충분히 웹페이지를 구현할 수 있다.
근데 이게 정말 말 그대로 엄격한 틀에 맞춰 짜여진 플랫폼이라서 자유도가 상당히 떨어진다.
그저 데이터 시각화에만 사용을 해야지, 다른 무언가를 하려고 하면 충돌나고, 오류가 발생한다.
특히 자바스크립트로 위치정보를 따오는 코드가 실행이 되지 않아 애를 먹었다.
결국 생각해 낸 것이 PHP로 제작한 개인 웹사이트를 랜딩페이지로 하고 여기서 자바스크립트 코드를 실행해 접속자의 위치 정보를 가져온다.
그리고 그 정보를 쿼리파라미터로 스트림릿 페이지에 전송하여 본페이지에서 사용할 수 있도록 꾀를 내었다.
그래서 결국 성공!
사용자의 현재 위치로부터 거리를 계산하여 가까운 순으로 정렬한다.
그리고 0 ~ 10점의 스코어를 준다.
물론 가까울 수록 스코어가 높다.
하지만 가깝다고 다가 아니죠?
만약 가장 가까운 화장실이지만 사람들이 많이 이용하여 항상 대기하는 줄이 긴 화장실이라면?
차라리 100미터 더 걸어가서 대기하지 않고 바로 똥을 싸재낄 수 있는 곳이 당연히 좋지 않겠음?
따라서 임의로 혼잡도 점수를 데이터에 전처리했다.
사람이 많이 이용하는 화장실은 10점에 가깝고, 한산하면 0점에 가깝다.
그래서 거리 점수에다가 혼잡도 점수를 빼주어 최종스코어를 산출한다.
아무리 가까워도 사람이 너무 많다면 0점, 혹은 마이너스 점수를 받을 수도 있다.
아침에는 이용하는 사람이 많아도 오후에는 한가해질 수도 있고, 저녁에는 다시 사람이 붐벼서 대기 줄이 길어질 수도 있는 법이다.
따라서 하루를 시간 별로, 즉 24개로 쪼개어 혼잡도 점수를 줬다.
(물론 실제로 조사하여 얻은 데이터가 아니라, 임의로 마음대로 정한 점수이다. 만약 사업자를 내고 실제로 서비스를 출시한다면 당연히 조사를 해야겠지만, 그냥 데이터 분석 및 시각화 서비스를 연습하는 것이라 실제 데이터인지는 중요치 않다. 당연히 누군가가 실제 데이터를 조사하고 내게 들고와서 적용하라고 하면 바로 구현된다ㅋ)
그리고 현재 시간 정보를 받아와서 해당 열의 혼잡도 점수를 가져와 파이널 스코어를 계산한다.
9시인 경우와 10시인 경우에 같은 장소에서 추천하는 화장실이 달라짐을 볼 수 있다.
프로젝트를 통해 새로운 프레임워크나 라이브러리, 그리고 다양한 기술 스택을 조합하여 개발을 진행했다.
이를 통해 기존에 익숙하지 않았던 기술들에 대한 이해도와 숙련도를 향상시킬 수 있어 보람찬 프로젝트였다.