서울시 공공데이터를 기반으로, 실시간 혼잡도·사고위험을 반영한 자전거 경로를 추천하는 Flask 기반 백엔드 서비스입니다.
- 개발 도구: Visual Studio Code (VSCode)
- Python 버전: 3.9 이상 권장
- 실행 방식: 로컬 실행 또는 WSGI 서버 배포 가능
- 지도 기반 경로 탐색: OSMNX + NetworkX 활용
⚠️ Colab 환경에서는 GUI 기반 지도 출력과 Flask 실행에 제약이 있으므로 로컬 실행을 권장합니다.
- 아래 라이브러리들은
requirements.txt에 명시되어 있습니다.
서울시 공공데이터 API 인증키를 아래와 같이 .env 파일에 저장해주세요.
현재는 같이 제공되었습니다.
SEOUL_API_KEY=발급받은_실시간_자전거_API_키
SEOUL_HISTORY_API_KEY=발급받은_대여이력_API_키
SEOUL_STATIONS_API_KEY=발급받은_대여소정보_API_키
| Endpoint | 설명 |
|---|---|
/stations |
대여소 정보 조회 |
/bike |
실시간 대여 상태 조회 |
/accident |
자치구별 자전거 사고 통계 |
/history |
시간대별 대여 이력 정보 |
/history/average-congestion |
과거 시간대 기반 평균 혼잡도 조회 |
/route |
📌 다익스트라 기반 경로 탐색 |
/osm/route |
📌 혼잡도+사고위험 기반 경로 탐색 |
/osm/congestion_clusters |
📌 KMeans 클러스터 기반 혼잡 구역 |
📎 클러스터링:
📌 KMeans 알고리즘
📎 최단경로 탐색:📌 Dijkstra 알고리즘
📎 그래프 기반 데이터 모델링:📌 Graph, Priority Queue 사용
📦project-root
┣ 📁routes/ # Flask 블루프린트 라우터
┣ 📁utils/ # 데이터 처리 유틸 함수
┣ 📁osm/ # OSM 기반 그래프 처리 로직
┣ 📁core/ # 커스텀 다익스트라, 그래프 구성 등
┣ 📄app.py # Flask 엔트리포인트
┣ 📄requirements.txt # 필요 라이브러리 명시
┣ 📄.env # (개인용) API 키 환경변수
┣ 📁data/ # 사고통계 CSV 등 데이터파일
- 백엔드 폴더로 이동
cd backend- conda 환경 비활성화 (사용 중일 경우)
conda deactivate- 가상환경 활성화
source venv/bin/activate- 서버 실행
python app.py- 프론트엔드 프로젝트 폴더로 이동
cd frontend- 의존성 설치
npm install- 개발 서버 실행
npm run dev- 브라우저에서 아래 주소로 접속
http://localhost:5173