Spaces:
Running
Running
Commit
·
1e575c1
1
Parent(s):
14b5ab9
docs: add intensity map visualization and real-time data handling
Browse files
app.py
CHANGED
|
@@ -826,7 +826,7 @@ def create_input_station_map(selected_stations, epicenter_lat, epicenter_lon):
|
|
| 826 |
map=dict(
|
| 827 |
style="open-street-map",
|
| 828 |
center=dict(lat=epicenter_lat, lon=epicenter_lon),
|
| 829 |
-
zoom=
|
| 830 |
),
|
| 831 |
height=500, # 設置固定高度以適應 Gradio 容器
|
| 832 |
margin=dict(l=0, r=0, t=0, b=0),
|
|
@@ -1275,37 +1275,21 @@ with gr.Blocks(title="TTSAM 震度預測系統", fill_height=True) as demo:
|
|
| 1275 |
|
| 1276 |
系統會自動選擇距離震央最近的 25 個測站
|
| 1277 |
""")
|
| 1278 |
-
|
| 1279 |
-
|
| 1280 |
-
|
| 1281 |
-
# 右上:輸入參數
|
| 1282 |
with gr.Column(scale=1):
|
| 1283 |
-
gr.Markdown("## 輸入參數")
|
| 1284 |
-
|
| 1285 |
event_dropdown = gr.Dropdown(
|
| 1286 |
choices=list(EARTHQUAKE_EVENTS.keys()),
|
| 1287 |
value=list(EARTHQUAKE_EVENTS.keys())[0],
|
| 1288 |
label="選擇地震事件"
|
| 1289 |
)
|
| 1290 |
-
|
| 1291 |
-
with gr.Row():
|
| 1292 |
-
start_slider = gr.Slider(0, 300, value=0, step=1, label="開始時間 (秒)")
|
| 1293 |
-
# 將時間長度滑桿限制為 0–30 秒,與模型固定窗口對齊;小於 30 秒會自動以 0 填充
|
| 1294 |
-
duration_slider = gr.Slider(0, 30, value=30, step=1, label="時間長度 (秒)")
|
| 1295 |
-
# 說明:模型最多 30 秒;小於 30 秒會自動以 0 填充至 30 秒(3000 samples @ 100 Hz)
|
| 1296 |
-
gr.Markdown("> 模型最多 30 秒;小於 30 秒會自動以 0 填充至 30 秒(3000 samples @ 100 Hz)。")
|
| 1297 |
-
|
| 1298 |
-
with gr.Row():
|
| 1299 |
-
load_waveform_btn = gr.Button("📊 載入波形", variant="secondary", scale=1)
|
| 1300 |
-
predict_btn = gr.Button("🔮 執行預測", variant="primary", scale=1, interactive=False)
|
| 1301 |
-
|
| 1302 |
# ========== 中層:輸入測站地圖與波形圖 ==========
|
| 1303 |
with gr.Row():
|
| 1304 |
-
|
| 1305 |
# 中左:輸入測站地圖
|
| 1306 |
with gr.Column(scale=1):
|
| 1307 |
gr.Markdown("## 輸入測站分布")
|
| 1308 |
input_station_map = gr.Plot(label="輸入測站地圖")
|
|
|
|
|
|
|
|
|
|
| 1309 |
|
| 1310 |
# 中右:輸入波形
|
| 1311 |
with gr.Column(scale=1):
|
|
@@ -1313,6 +1297,10 @@ with gr.Blocks(title="TTSAM 震度預測系統", fill_height=True) as demo:
|
|
| 1313 |
waveform_plot = gr.Plot(
|
| 1314 |
label="地震波形(選定的 25 個測站)",
|
| 1315 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1316 |
|
| 1317 |
# ========== 下層:實際觀測 vs 預測結果 ==========
|
| 1318 |
with gr.Row():
|
|
@@ -1321,6 +1309,7 @@ with gr.Blocks(title="TTSAM 震度預測系統", fill_height=True) as demo:
|
|
| 1321 |
gr.Markdown("## 預測震度分布")
|
| 1322 |
predicted_intensity_map = gr.Plot(label="互動式震度地圖")
|
| 1323 |
|
|
|
|
| 1324 |
# 右下:實際觀測震度圖
|
| 1325 |
with gr.Column(scale=1):
|
| 1326 |
gr.Markdown("## 實際觀測震度分布")
|
|
|
|
| 826 |
map=dict(
|
| 827 |
style="open-street-map",
|
| 828 |
center=dict(lat=epicenter_lat, lon=epicenter_lon),
|
| 829 |
+
zoom=7
|
| 830 |
),
|
| 831 |
height=500, # 設置固定高度以適應 Gradio 容器
|
| 832 |
margin=dict(l=0, r=0, t=0, b=0),
|
|
|
|
| 1275 |
|
| 1276 |
系統會自動選擇距離震央最近的 25 個測站
|
| 1277 |
""")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1278 |
with gr.Column(scale=1):
|
|
|
|
|
|
|
| 1279 |
event_dropdown = gr.Dropdown(
|
| 1280 |
choices=list(EARTHQUAKE_EVENTS.keys()),
|
| 1281 |
value=list(EARTHQUAKE_EVENTS.keys())[0],
|
| 1282 |
label="選擇地震事件"
|
| 1283 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1284 |
# ========== 中層:輸入測站地圖與波形圖 ==========
|
| 1285 |
with gr.Row():
|
|
|
|
| 1286 |
# 中左:輸入測站地圖
|
| 1287 |
with gr.Column(scale=1):
|
| 1288 |
gr.Markdown("## 輸入測站分布")
|
| 1289 |
input_station_map = gr.Plot(label="輸入測站地圖")
|
| 1290 |
+
load_waveform_btn = gr.Button("📊 載入波形", variant="secondary", scale=1)
|
| 1291 |
+
predict_btn = gr.Button("🔮 執行預測", variant="primary", scale=1,
|
| 1292 |
+
interactive=False)
|
| 1293 |
|
| 1294 |
# 中右:輸入波形
|
| 1295 |
with gr.Column(scale=1):
|
|
|
|
| 1297 |
waveform_plot = gr.Plot(
|
| 1298 |
label="地震波形(選定的 25 個測站)",
|
| 1299 |
)
|
| 1300 |
+
with gr.Row():
|
| 1301 |
+
start_slider = gr.Slider(0, 300, value=0, step=1, label="開始時間 (秒)")
|
| 1302 |
+
duration_slider = gr.Slider(0, 30, value=30, step=1, label="時間長度 (秒)")
|
| 1303 |
+
|
| 1304 |
|
| 1305 |
# ========== 下層:實際觀測 vs 預測結果 ==========
|
| 1306 |
with gr.Row():
|
|
|
|
| 1309 |
gr.Markdown("## 預測震度分布")
|
| 1310 |
predicted_intensity_map = gr.Plot(label="互動式震度地圖")
|
| 1311 |
|
| 1312 |
+
|
| 1313 |
# 右下:實際觀測震度圖
|
| 1314 |
with gr.Column(scale=1):
|
| 1315 |
gr.Markdown("## 實際觀測震度分布")
|