jimmy60504 commited on
Commit
1e575c1
·
1 Parent(s): 14b5ab9

docs: add intensity map visualization and real-time data handling

Browse files
Files changed (1) hide show
  1. app.py +9 -20
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=8
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("## 實際觀測震度分布")