mirror of
https://github.com/dylanbenzi/hurricane_normalization_app.git
synced 2026-07-30 05:08:57 +00:00
modify storm track to show status by color
This commit is contained in:
+98
-36
@@ -241,10 +241,10 @@ Col {data-width=500 .tabset}
|
|||||||
### Track Map {.no-padding}
|
### Track Map {.no-padding}
|
||||||
```{r}
|
```{r}
|
||||||
# Overview - Track Map
|
# Overview - Track Map
|
||||||
|
# TODO: implement hurricane category status
|
||||||
|
|
||||||
storm_track <- reactive({
|
storm_track <- reactive({
|
||||||
req(storm_selection$is_selected)
|
req(storm_selection$is_selected)
|
||||||
|
|
||||||
result <- get_hurdat_track(storm_selection)
|
result <- get_hurdat_track(storm_selection)
|
||||||
|
|
||||||
return(result)
|
return(result)
|
||||||
@@ -278,41 +278,103 @@ observe({
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
leafletProxy("track_map", data = storm_track) %>%
|
# HURDAT storm status
|
||||||
clearShapes() %>%
|
# TD – Tropical cyclone of tropical depression intensity (< 34 knots)
|
||||||
clearMarkers() %>%
|
# TS – Tropical cyclone of tropical storm intensity (34-63 knots)
|
||||||
setView(
|
# HU – Tropical cyclone of hurricane intensity (> 64 knots)
|
||||||
lng = map_center$lon,
|
# EX – Extratropical cyclone (of any intensity)
|
||||||
lat = map_center$lat,
|
# SD – Subtropical cyclone of subtropical depression intensity (< 34 knots)
|
||||||
zoom = 4
|
# SS – Subtropical cyclone of subtropical storm intensity (> 34 knots)
|
||||||
) %>%
|
# LO – A low that is neither a tropical cyclone, a subtropical cyclone, nor an extratropical cyclone (of any intensity)
|
||||||
addPolylines(
|
# WV – Tropical Wave (of any intensity)
|
||||||
data = storm_track,
|
# DB – Disturbance (of any intensity)
|
||||||
lng = ~lon,
|
|
||||||
lat = ~lat,
|
# Line Color Storm Type Status Pressure (mb) Wind (mph) Wind (knots)
|
||||||
weight = 4,
|
# Blue Subtropical Depression SD -- <=38 <=33
|
||||||
color = "blue"
|
# Light Blue Subtropical Storm SS -- 39-73 34-63
|
||||||
) %>%
|
# Green Tropical Depression (TD) TD -- <=38 <=33
|
||||||
addCircleMarkers(
|
# Yellow Tropical Storm (TS) TS 980+ 39-73 34-63
|
||||||
data = storm_track %>% filter(record_identifier == "L"),
|
# Red Hurricane (Cat 1) HU <=980 74-95 64-82
|
||||||
lng = ~lon,
|
# Pink Hurricane (Cat 2) HU 965-980 96-110 83-95
|
||||||
lat = ~lat,
|
# Magenta Major Hurricane (Cat 3) HU 945-965 111-129 96-112
|
||||||
radius = 5,
|
# Purple Major Hurricane (Cat 4) HU 920-945 130-156 113-136
|
||||||
weight = 0,
|
# White Major Hurricane (Cat 5) HU <=920 157+ 137+
|
||||||
color = "red",
|
# Green dashed (- -) Wave/Low/Disturbance WV/LO/DB -- -- --
|
||||||
fillColor = "red",
|
# Black hatched (++) Extratropical Cyclone EX -- -- --
|
||||||
fillOpacity = 0.8
|
|
||||||
) %>%
|
storm_track <- storm_track %>%
|
||||||
addCircles(
|
mutate(
|
||||||
data = storm_track %>% filter(record_identifier == "L"),
|
line_color = case_when(
|
||||||
lng = ~lon,
|
storm_status == "TD" ~ "green",
|
||||||
lat = ~lat,
|
storm_status == "TS" ~ "#FFDF00",
|
||||||
radius = ~rmw_meters,
|
storm_status == "HU" ~ "magenta",
|
||||||
weight = 2,
|
storm_status == "EX" ~ "black",
|
||||||
color = "red",
|
storm_status == "SD" ~ "blue",
|
||||||
fillColor = "red",
|
storm_status == "SS" ~ "lightblue",
|
||||||
fillOpacity = 0.3
|
storm_status == "LO" ~ "green",
|
||||||
)
|
storm_status == "WV" ~ "green",
|
||||||
|
storm_status == "DB" ~ "green",
|
||||||
|
TRUE ~ "gray"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
proxy <- leafletProxy("track_map") %>%
|
||||||
|
clearShapes() %>%
|
||||||
|
clearMarkers() %>%
|
||||||
|
setView(
|
||||||
|
lng = map_center$lon,
|
||||||
|
lat = map_center$lat,
|
||||||
|
zoom = 4
|
||||||
|
)
|
||||||
|
|
||||||
|
if (nrow(storm_track) >= 2) {
|
||||||
|
storm_track <- storm_track %>% arrange(datetime)
|
||||||
|
|
||||||
|
for (i in 1:(nrow(storm_track) - 1)) {
|
||||||
|
segment_data <- storm_track[i:(i+1), ]
|
||||||
|
|
||||||
|
proxy <- proxy %>%
|
||||||
|
addPolylines(
|
||||||
|
data = segment_data,
|
||||||
|
lng = ~lon,
|
||||||
|
lat = ~lat,
|
||||||
|
weight = 2,
|
||||||
|
color = storm_track$line_color[i],
|
||||||
|
opacity = 0.8
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
proxy %>%
|
||||||
|
addCircleMarkers(
|
||||||
|
data = storm_track,
|
||||||
|
lng = ~lon,
|
||||||
|
lat = ~lat,
|
||||||
|
radius = 1,
|
||||||
|
color = ~line_color,
|
||||||
|
fillOpacity = 0.8,
|
||||||
|
popup = ~storm_status
|
||||||
|
) %>%
|
||||||
|
addCircleMarkers(
|
||||||
|
data = storm_track %>% filter(record_identifier == "L"),
|
||||||
|
lng = ~lon,
|
||||||
|
lat = ~lat,
|
||||||
|
radius = 5,
|
||||||
|
weight = 0,
|
||||||
|
color = "red",
|
||||||
|
fillColor = "red",
|
||||||
|
fillOpacity = 0.8
|
||||||
|
) %>%
|
||||||
|
addCircles(
|
||||||
|
data = storm_track %>% filter(record_identifier == "L"),
|
||||||
|
lng = ~lon,
|
||||||
|
lat = ~lat,
|
||||||
|
radius = ~rmw_meters,
|
||||||
|
weight = 2,
|
||||||
|
color = "red",
|
||||||
|
fillColor = "red",
|
||||||
|
fillOpacity = 0.3
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
leafletOutput("track_map", height = "100%")
|
leafletOutput("track_map", height = "100%")
|
||||||
|
|||||||
Reference in New Issue
Block a user