Skip to content

rad1092/project_dashboard

Repository files navigation

영남권 재난 대피 안내 대시보드

영남권 재난 특보와 대피소 데이터를 기반으로, 사용자 위치에 맞는 대피소 추천, 경로 안내, 재난 패턴 분석을 제공하는 Streamlit 기반 멀티페이지 대시보드입니다.

이 프로젝트는 정적 전처리 데이터와 실시간 재난문자 정보를 함께 활용하여, 사용자가 현재 상황에 맞는 대피소를 확인하고 이동 경로를 탐색할 수 있도록 구성하였습니다. 또한 분석 페이지를 통해 재난 특보의 시계열 패턴, 지역별 특성, 대피소 분포를 함께 살펴볼 수 있습니다.

배포 URL은 추후 추가 예정입니다.
주요 화면 스크린샷 및 데모 GIF도 추후 보완 가능합니다.


목차


프로젝트 개요

본 프로젝트는 재난 발생 시 사용자가 빠르게 대피소를 찾고, 현재 위치 기준으로 이동 경로를 확인하며, 지역별 재난 패턴까지 함께 파악할 수 있도록 설계한 대시보드입니다.

특히 다음 흐름에 초점을 두었습니다.

  • 대피 안내 시뮬레이션을 통해 재난 유형별 대피소 추천 제공
  • 실시간 대피 안내를 통해 최근 재난문자 기반 안내 흐름 제공
  • 데이터 분석 페이지를 통해 재난의 시계열 패턴, 지역별 특성, 대피소 분포 시각화 제공

주요 기능

1. HOME

  • 전체 대피소 수, 권역 범위, 최신 특보 시각을 요약해 보여줍니다.
  • st.navigation 기반으로 각 페이지로 이동할 수 있는 시작 화면입니다.

2. 대피 안내 시뮬레이션

  • 브라우저 위치 권한 또는 수동 좌표 입력으로 현재 위치를 지정할 수 있습니다.
  • 선택한 재난 유형에 맞는 가까운 대피소 후보를 추천합니다.
  • Folium 지도를 통해 현재 위치, 대피소 위치, 이동 경로를 함께 시각화합니다.
  • OSRM 도보 경로 조회가 실패할 경우 직선 fallback 경로로 안내를 이어갑니다.
  • 최근 특보 이력과 추천 결과 표를 함께 확인할 수 있습니다.

3. 실시간 대피 안내

  • preprocessing_code/crawling.py를 통해 실시간 재난문자를 크롤링합니다.
  • preprocessing_code/mock_disaster_message.py를 사용하여 모의 재난문자를 생성하고 동일한 흐름을 테스트할 수 있습니다.
  • 지원 권역은 대구, 울산, 부산, 경북, 경남입니다.
  • 감지된 지역을 기준으로 최근 재난문자, 추천 대피소, 경로 지도를 한 화면에서 제공합니다.
  • 사이드바에서 재난문자 새로고침, 모의 재난문자 실행, 위치 입력 방식을 제어할 수 있습니다.

4. 데이터 분석

  • 분석 필터: 지역, 재난종류, 특보등급
  • KPI: 특보 기록 수, 재난종류 수, 지역 수, 최신 특보 시각
  • 탭 구성
    • 재난 분포: 특보등급별 재난 분포, 지역별 재난 특성 비교
    • 시계열 추이: 월별 재난 분포, 재난종류별 월별 특보 패턴
    • 지역 비교: 지역별 주의보 현황, 지역별 경보 현황, 지역별 대피소 분포, 재난종류별 특보 발생 지역
    • 권역 대피소 지도: HTML 지도를 임베드하여 전체 권역 대피소를 표시
  • 하단 원본 데이터 expander에서 필터 결과 테이블을 직접 확인할 수 있습니다.

데이터 구성

정적 데이터

  • preprocessing_data/preprocessing/danger_clean.csv
  • preprocessing_data/preprocessing/final_shelter_dataset.csv
  • preprocessing_data/preprocessing/earthquake_shelter_clean_2.csv
  • preprocessing_data/preprocessing/tsunami_shelter_clean_2.csv

실시간 및 런타임 데이터

  • preprocessing_code/data/disaster_message_realtime.csv
  • preprocessing_code/data/Emergency_shelter.db

데이터 출처 및 갱신 방식

본 프로젝트는 공공 재난 특보 데이터, 대피소 데이터, 실시간 재난문자 크롤링 결과를 활용합니다.

  • 정적 전처리 데이터는 프로젝트 기준 데이터셋을 바탕으로 수동 관리합니다.
  • 실시간 재난문자 데이터는 크롤링 실행 또는 페이지 새로고침 시 갱신됩니다.
  • 분석 페이지는 SQLite DB를 우선 조회하고, DB가 없을 경우 CSV를 fallback으로 사용합니다.
  • 실시간 페이지는 크롤링 결과를 세션 상태에 캐시하며, 갱신 실패 시 직전 결과를 유지하도록 설계되어 있습니다.

사용 데이터의 상세 출처와 갱신 주기는 추후 README에 더 구체적으로 보완할 수 있습니다.


기술 스택

  • Python 3.12
  • Streamlit
  • Pandas / NumPy
  • Plotly
  • Folium
  • Selenium
  • streamlit-geolocation
  • SQLite

실행 방법

1. 의존성 설치

이 저장소는 pyproject.tomluv.lock을 함께 사용합니다.

uv sync --dev

uv를 사용하지 않는 경우에는 Python 3.12 환경에 맞추어 필요한 패키지를 직접 설치해야 합니다.

2. 앱 실행

streamlit run app.py

3. 모의 재난문자 생성

.\.venv\Scripts\python preprocessing_code\mock_disaster_message.py --sido 경북 --sigungu 포항시

위 명령은 preprocessing_code/data/disaster_message_realtime.csv를 덮어써서, 실시간 대피 안내 페이지에서 즉시 읽을 수 있는 모의 데이터를 생성합니다.


환경 설정

데이터 경로 오버라이드

$env:PREPROCESSING_DATA_DIR="D:\\my-preprocessing-data"

또는 .streamlit/secrets.toml에 아래와 같이 설정할 수 있습니다.

preprocessing_data_dir = "D:/my-preprocessing-data"

경로 엔진 설정

앱은 OSRM 도보 경로 조회를 사용합니다.

$env:OSRM_BASE_URL="http://router.project-osrm.org"
  • 별도 값을 지정하지 않으면 기본 OSRM 엔드포인트를 사용합니다.
  • 경로 조회가 실패할 경우 직선 fallback 경로를 표시합니다.

실시간 크롤링 실행 조건

  • 실시간 재난문자 크롤링은 Selenium + Chromium 환경이 필요합니다.
  • 배포용 시스템 패키지는 packages.txtchromium, chromium-driver로 정의되어 있습니다.

테스트

.\.venv\Scripts\python -m pytest -q

현재 테스트는 아래 범위를 포함합니다.

  • HOME 메타 정보 및 KPI 계산
  • 대피 안내 시뮬레이션의 경로 계산, OSRM fallback, 지도 생성
  • 실시간 재난문자 로딩, 모의 재난문자 생성, 세션 상태 처리
  • 분석 페이지 필터 및 차트 builder
  • 문서 존재 여부와 주요 모듈의 compile/import 가능 여부

테스트 환경에서는 PROJECT_DASHBOARD_IMPORT_ONLY=1을 사용하여, 페이지 import 시 render_page()가 자동 실행되지 않도록 설정합니다.


저장소 구조

.
├─ app.py
├─ pages/
│  ├─ 1_대피_안내_시뮬레이션.py
│  ├─ 2_실시간_대피_안내.py
│  └─ 3_데이터_분석.py
├─ preprocessing_code/
├─ preprocessing_data/
├─ docs/
├─ tests/
├─ .streamlit/
├─ pyproject.toml
├─ packages.txt
└─ uv.lock

제한사항

  • 실시간 재난문자 수집은 Selenium 및 Chromium 실행 환경이 필요합니다.
  • 경로 안내는 OSRM 엔드포인트 상태에 영향을 받을 수 있으며, 실패 시 직선 fallback 경로를 사용합니다.
  • 분석 및 추천 기능은 영남권 5개 권역을 중심으로 구성되어 있습니다.
  • 데이터 품질은 원본 공공데이터 및 전처리 결과에 영향을 받습니다.
  • 일부 실시간 기능은 배포 환경보다 로컬 환경에서 더 안정적으로 동작할 수 있습니다.

향후 개선 계획

  • 전국 단위 권역 확장
  • 실시간 재난문자 자동 갱신 고도화
  • 사용자 위치 기반 추천 로직 개선
  • 수용인원과 재난 유형을 함께 반영한 대피소 추천 기능 추가
  • 모바일 UI 및 지도 인터랙션 개선
  • 사용 데이터 출처 및 갱신 주기 문서화 보강
  • 대표 스크린샷 및 서비스 데모 자료 추가

자료 참고 사이트

  • 재난 안전 데이터 공유 플랫폼
  • 국민 재난 안전 포털
  • 공공데이터 포털

팀 및 작성 정보

  • 개발 및 구현: 김홍대, 남연정, 오승주, 최해목
  • 프로젝트 형태: 팀 프로젝트
  • 주요 구현 범위: 대피소 추천, 실시간 대피 안내, 데이터 분석 페이지 구성

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors