Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -366,9 +366,28 @@ def generate_track_video(year, basin, typhoon, standard):
|
|
| 366 |
|
| 367 |
# Set up the figure (900x700 pixels at 100 DPI)
|
| 368 |
fig = plt.figure(figsize=(9, 7), dpi=100)
|
| 369 |
-
ax = plt.axes([0.05, 0.05, 0.65, 0.90], projection=ccrs.PlateCarree())
|
| 370 |
ax.set_extent([min_lon - lon_padding, max_lon + lon_padding, min_lat - lat_padding, max_lat + lat_padding], crs=ccrs.PlateCarree())
|
| 371 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 372 |
# Add world map features
|
| 373 |
ax.add_feature(cfeature.LAND, facecolor='lightgray')
|
| 374 |
ax.add_feature(cfeature.OCEAN, facecolor='lightblue')
|
|
@@ -376,7 +395,7 @@ def generate_track_video(year, basin, typhoon, standard):
|
|
| 376 |
ax.add_feature(cfeature.BORDERS, linestyle=':', edgecolor='gray')
|
| 377 |
ax.gridlines(draw_labels=True, linestyle='--', color='gray', alpha=0.5)
|
| 378 |
|
| 379 |
-
ax.set_title(f"{year} {storm.name}
|
| 380 |
|
| 381 |
# Initialize the line and point
|
| 382 |
line, = ax.plot([], [], 'b-', linewidth=2, transform=ccrs.PlateCarree())
|
|
@@ -1149,16 +1168,17 @@ with gr.Blocks(title="Typhoon Analysis Dashboard") as demo:
|
|
| 1149 |
def simplified_track_video(year, basin, typhoon, standard):
|
| 1150 |
if not typhoon:
|
| 1151 |
return None
|
| 1152 |
-
|
| 1153 |
-
# Extract storm ID
|
| 1154 |
typhoon_id = typhoon.split('(')[-1].strip(')')
|
| 1155 |
-
|
| 1156 |
-
|
| 1157 |
-
|
| 1158 |
-
|
| 1159 |
-
|
| 1160 |
-
|
| 1161 |
-
|
|
|
|
| 1162 |
|
| 1163 |
with gr.Tab("TSNE Cluster"):
|
| 1164 |
with gr.Row():
|
|
|
|
| 366 |
|
| 367 |
# Set up the figure (900x700 pixels at 100 DPI)
|
| 368 |
fig = plt.figure(figsize=(9, 7), dpi=100)
|
| 369 |
+
ax = plt.axes([0.05, 0.05, 0.65, 0.90], projection=ccrs.PlateCarree())
|
| 370 |
ax.set_extent([min_lon - lon_padding, max_lon + lon_padding, min_lat - lat_padding, max_lat + lat_padding], crs=ccrs.PlateCarree())
|
| 371 |
|
| 372 |
+
# Add basin name to the title
|
| 373 |
+
basin_name = basin
|
| 374 |
+
if basin == "WP":
|
| 375 |
+
basin_name = "Western North Pacific"
|
| 376 |
+
elif basin == "EP":
|
| 377 |
+
basin_name = "Eastern North Pacific"
|
| 378 |
+
elif basin == "NA" or basin == "AL":
|
| 379 |
+
basin_name = "North Atlantic"
|
| 380 |
+
elif basin == "NI" or basin == "IO":
|
| 381 |
+
basin_name = "North Indian Ocean"
|
| 382 |
+
elif basin == "SI":
|
| 383 |
+
basin_name = "South Indian Ocean"
|
| 384 |
+
elif basin == "SP":
|
| 385 |
+
basin_name = "South Pacific"
|
| 386 |
+
elif basin == "SA" or basin == "SL":
|
| 387 |
+
basin_name = "South Atlantic"
|
| 388 |
+
elif basin == "All":
|
| 389 |
+
basin_name = "Global Oceans"
|
| 390 |
+
|
| 391 |
# Add world map features
|
| 392 |
ax.add_feature(cfeature.LAND, facecolor='lightgray')
|
| 393 |
ax.add_feature(cfeature.OCEAN, facecolor='lightblue')
|
|
|
|
| 395 |
ax.add_feature(cfeature.BORDERS, linestyle=':', edgecolor='gray')
|
| 396 |
ax.gridlines(draw_labels=True, linestyle='--', color='gray', alpha=0.5)
|
| 397 |
|
| 398 |
+
ax.set_title(f"{year} {storm.name} - {basin_name}")
|
| 399 |
|
| 400 |
# Initialize the line and point
|
| 401 |
line, = ax.plot([], [], 'b-', linewidth=2, transform=ccrs.PlateCarree())
|
|
|
|
| 1168 |
def simplified_track_video(year, basin, typhoon, standard):
|
| 1169 |
if not typhoon:
|
| 1170 |
return None
|
| 1171 |
+
|
| 1172 |
+
# Extract storm ID from the dropdown selection
|
| 1173 |
typhoon_id = typhoon.split('(')[-1].strip(')')
|
| 1174 |
+
|
| 1175 |
+
# Extract basin code from the basin selection
|
| 1176 |
+
basin_code = "All"
|
| 1177 |
+
if basin != "All Basins":
|
| 1178 |
+
basin_code = basin.split(' - ')[0]
|
| 1179 |
+
|
| 1180 |
+
# Generate the animation
|
| 1181 |
+
return generate_track_video(year, basin_code, typhoon, standard)
|
| 1182 |
|
| 1183 |
with gr.Tab("TSNE Cluster"):
|
| 1184 |
with gr.Row():
|