Spaces:
Sleeping
Sleeping
Upload 5 files
Browse files
README.md
CHANGED
|
@@ -1,19 +1,28 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
colorTo: purple
|
| 6 |
-
sdk:
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
- streamlit
|
| 10 |
pinned: false
|
| 11 |
-
|
| 12 |
---
|
| 13 |
|
| 14 |
-
#
|
| 15 |
|
| 16 |
-
|
| 17 |
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Smart Transit MVP
|
| 3 |
+
emoji: ๐
|
| 4 |
+
colorFrom: blue
|
| 5 |
colorTo: purple
|
| 6 |
+
sdk: streamlit
|
| 7 |
+
sdk_version: 1.35.0
|
| 8 |
+
app_file: app.py
|
|
|
|
| 9 |
pinned: false
|
| 10 |
+
license: mit
|
| 11 |
---
|
| 12 |
|
| 13 |
+
# ๐ ์ฌ์ผ ๋์ค๊ตํต N๋ฒ์ค-DRT ํตํฉ ๋์๋ณด๋ (Smart Transit MVP)
|
| 14 |
|
| 15 |
+
์คํ์คํธ๋ฆฌํธ๋งต(OSM)์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฐ์ ธ์, **๊ฐ๋จ์ญ ์ผ๋**์ ์ ํฅ/์์
์์ค๊ณผ ์ฃผ๊ฑฐ/์์ ์ทจ์ฝ ์ง์ญ์ ๋ถ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ผ๋ฒ์ค(N๋ฒ์ค)๊ฐ ๋ฟ์ง ์๋ ์ฌ๊ฐ์ง๋๋ฅผ ์ฐพ์๋ด๊ณ , ์๊ฐ๋๋ณ ์์ ๋ณํ์ ๋ง์ถฐ ๋ค์ด๋ด๋ฏนํ๊ฒ ์์ง์ด๋ **DRT(์์์๋ตํ ๋ฒ์ค) ํ์น ๋ฃจํ ๋
ธ์ **์ ์๊ฐํํ๋ ๋์๋ณด๋์
๋๋ค.
|
| 16 |
|
| 17 |
+
## ๐ ์ฃผ์ ๊ธฐ๋ฅ
|
| 18 |
+
1. **OSM ์ค์๊ฐ ์ฐ๋**: `Overpass API`๋ฅผ ํตํด ๊ฐ๋จ์ญ ์ผ๋์ ์ ๋ฅ์ฅ, ์๋น/ํ, CCTV/๊ฐ๋ก๋ฑ, ์ค์ ์ดํ ์ค์ธ N๋ฒ์ค ๋
ธ์ ๋ง์ ์ค์๊ฐ์ผ๋ก ๊ฐ์ ธ์ต๋๋ค.
|
| 19 |
+
2. **๋ค์ด๋ด๋ฏน ํ์๋ผ์ธ ๋ฃจํ**: ์๊ฐ๋ ์ฌ๋ผ์ด๋๋ฅผ ์กฐ์ํ๋ฉด, ํซ์คํ์ด ๋ฒํ๊ฐ(์์
์ง๊ตฌ)์์ ๊ณจ๋ชฉ๊ธธ(์ฃผ๊ฑฐ์ง๊ตฌ)๋ก ์ด๋ํ๋ฉฐ DRT ๋ฃจํ ํํ๊ฐ ์๋์ผ๋ก ๋ณํ๋ฉ๋๋ค.
|
| 20 |
+
3. **N๋ฒ์ค ํ์น ๊ตฌ์ญ(Transfer Zone) ์๊ฐํ**: Convex Hull ์ธ๊ณฝ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด ํฌ๊ณ ๋งค๋๋ฌ์ด 1๋ฐํด ์ํ ๋
ธ์ ์ ๊ทธ๋ฆฌ๊ณ , ๊ธฐ์กด N๋ฒ์ค์ ๊ฒน์น๋ ๊ฒฝ๋ก๋ฅผ '๊ธ์ ํ์น ๊ตฌ๊ฐ'์ผ๋ก ๊ฐ๋ ฌํ๊ฒ ์๊ฐํํฉ๋๋ค.
|
| 21 |
+
|
| 22 |
+
## ๐ ์คํ ๋ฐฉ๋ฒ (Local)
|
| 23 |
+
์ด ํ๋ก์ ํธ๋ Hugging Face Spaces ํ๊ฒฝ์ ๋ง์ถฐ์ ธ ์์ต๋๋ค. ๋ก์ปฌ์์ ์คํํ๋ ค๋ฉด ์๋ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ธ์.
|
| 24 |
+
|
| 25 |
+
```bash
|
| 26 |
+
pip install -r requirements.txt
|
| 27 |
+
streamlit run app.py
|
| 28 |
+
```
|
app.py
CHANGED
|
@@ -2,7 +2,6 @@ import streamlit as st
|
|
| 2 |
import pandas as pd
|
| 3 |
import numpy as np
|
| 4 |
import folium
|
| 5 |
-
from folium.plugins import AntPath
|
| 6 |
from streamlit_folium import st_folium
|
| 7 |
import math
|
| 8 |
import requests
|
|
@@ -244,29 +243,29 @@ with col1:
|
|
| 244 |
location=[row['lat'], row['lon']], radius=2, color="gray", fill=True, fill_color="gray", tooltip="์ผ๋ฐ ์ ๋ฅ์ฅ (์ฌ์ผ๋ฒ์ค ๋ฏธ์ดํ)"
|
| 245 |
).add_to(m)
|
| 246 |
|
| 247 |
-
# ์ค์ N๋ฒ์ค ๋
ธ์ (
|
| 248 |
colors = ['cyan', 'lime', 'yellow']
|
| 249 |
for i, route in enumerate(real_bus_routes):
|
| 250 |
if route['coords']:
|
| 251 |
-
|
| 252 |
-
locations=route['coords'], dash_array=
|
| 253 |
-
color=
|
| 254 |
tooltip=f"์ค์ ์ฌ์ผ๋ฒ์ค ๋
ธ์ : {route['name']}"
|
| 255 |
).add_to(m)
|
| 256 |
|
| 257 |
-
# DRT ๋ฃจํ ๋
ธ์ (
|
| 258 |
if loop_coords:
|
| 259 |
-
|
| 260 |
-
locations=loop_coords, dash_array=
|
| 261 |
-
color='purple',
|
| 262 |
tooltip="๐ฅ ์ฌ๊ฐ์ง๋ ํ๊ฒ DRT ์ํ ๋
ธ์ "
|
| 263 |
).add_to(m)
|
| 264 |
|
| 265 |
-
# [NEW] ํ์น ๊ณต์ ๊ตฌ๊ฐ (Transfer Zone -
|
| 266 |
if len(transfer_coords) >= 2:
|
| 267 |
-
|
| 268 |
-
locations=transfer_coords, dash_array=
|
| 269 |
-
color='orange',
|
| 270 |
tooltip="๐ N๋ฒ์ค โ DRT ํ์น ๊ตฌ์ญ (Transfer Zone)"
|
| 271 |
).add_to(m)
|
| 272 |
|
|
|
|
| 2 |
import pandas as pd
|
| 3 |
import numpy as np
|
| 4 |
import folium
|
|
|
|
| 5 |
from streamlit_folium import st_folium
|
| 6 |
import math
|
| 7 |
import requests
|
|
|
|
| 243 |
location=[row['lat'], row['lon']], radius=2, color="gray", fill=True, fill_color="gray", tooltip="์ผ๋ฐ ์ ๋ฅ์ฅ (์ฌ์ผ๋ฒ์ค ๋ฏธ์ดํ)"
|
| 244 |
).add_to(m)
|
| 245 |
|
| 246 |
+
# ์ค์ N๋ฒ์ค ๋
ธ์ (PolyLine)
|
| 247 |
colors = ['cyan', 'lime', 'yellow']
|
| 248 |
for i, route in enumerate(real_bus_routes):
|
| 249 |
if route['coords']:
|
| 250 |
+
folium.PolyLine(
|
| 251 |
+
locations=route['coords'], dash_array="15, 20",
|
| 252 |
+
color=colors[i % len(colors)], weight=4, opacity=0.6,
|
| 253 |
tooltip=f"์ค์ ์ฌ์ผ๋ฒ์ค ๋
ธ์ : {route['name']}"
|
| 254 |
).add_to(m)
|
| 255 |
|
| 256 |
+
# DRT ๋ฃจํ ๋
ธ์ (PolyLine - ๋ณด๋ผ์)
|
| 257 |
if loop_coords:
|
| 258 |
+
folium.PolyLine(
|
| 259 |
+
locations=loop_coords, dash_array="10, 15",
|
| 260 |
+
color='purple', weight=5, opacity=0.9,
|
| 261 |
tooltip="๐ฅ ์ฌ๊ฐ์ง๋ ํ๊ฒ DRT ์ํ ๋
ธ์ "
|
| 262 |
).add_to(m)
|
| 263 |
|
| 264 |
+
# [NEW] ํ์น ๊ณต์ ๊ตฌ๊ฐ (Transfer Zone - ์ค๋ ์ง์ ๊ตต์ ์ )
|
| 265 |
if len(transfer_coords) >= 2:
|
| 266 |
+
folium.PolyLine(
|
| 267 |
+
locations=transfer_coords, dash_array="1, 10",
|
| 268 |
+
color='orange', weight=8, opacity=1.0,
|
| 269 |
tooltip="๐ N๋ฒ์ค โ DRT ํ์น ๊ตฌ์ญ (Transfer Zone)"
|
| 270 |
).add_to(m)
|
| 271 |
|