-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.Rmd
338 lines (282 loc) · 14.3 KB
/
index.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
---
title: '`r desc::desc_get_field("Title")`'
description: '`r desc::desc_get_field("Description")`'
site: distill::distill_website
---
```{r setup, include = FALSE}
knitr::opts_chunk$set(
echo = FALSE
)
```
On August 26, 2017, Hurricane Harvey made landfall along the central Texas gulf coast as a category four hurricane. The storm weakened but remained stationary in southeast Texas spawing dozens of tornadoes and dropping over 30 inches of rain in many locations with isolated amounts of over 50 inches.
Harvey was the first major hurricane to strike the Texas coast since Hurricane Rita in 2005; the first category four hurricane to make landfall since Hurricane Bret in 1999.
In early September, National Weather Service (NWS) offices in Brownsville, Corpus Christi, San Antonio, and Houston, Texas, and Lake Charles, Louisiana released preliminary data reports on Hurricane Harvey. The following data has been extracted from those reports.
```{r libraries, message = FALSE}
library(ggrepel)
library(knitr)
library(lubridate)
library(rrricanes)
library(rrricanesdata)
library(tidyverse)
```
```{r source}
source(here::here("./R/functions.R"))
```
```{r settings}
input <- knitr::current_input()
```
```{r load-data}
load(file = here::here("./output/rain_df.rda"))
load(file = here::here("./output/slp_df.rda"))
load(file = here::here("./output/tor_df.rda"))
```
```{r base-plot, message = FALSE}
# Draw a base plot
bp <-
al_tracking_chart(
color = "black",
fill = "white",
size = 0.1,
res = 50
) +
labs(x = "Lon", y = "Lat") +
theme(
legend.position = "bottom",
legend.direction = "horizontal"
)
```
## Hurricane Harvey
```{r data_al092017}
# Group Harvey advisories into two stages
AL092017 <-
adv %>%
filter(Key == "AL092017") %>%
mutate(
Group = if_else(Adv <= 11, 1, 2),
Class = factor(
saffir(Wind),
levels = c("TD", "TS", "HU1", "HU2", "HU3", "HU4", "HU5"),
labels = c(
"Tropical Depression", "Tropical Storm", "Category 1",
"Category 2", "Category 3", "Category 4", "Category 5"
)
)
)
# Harvey advs in Gulf
AL09017_gulf <- filter(AL092017, Adv >= 12)
# Landfall
lf.AL092017 <-
data.frame(
"Date" = c(
ymd_hm("2017-08-26 06:00", tz = "UTC"),
ymd_hm("2017-08-30 09:00", tz = "UTC")
),
"Location" = c("Copano Bay, TX", "Cameron, LA"),
"Lat" = c(28.08, 29.77),
"Lon" = c(-96.88, -93.37),
"Wind" = c(110, 45)
)
```
Advisories were initiated on Potential Tropical Cyclone Nine on the morning of August 17. Shortly thereafter, the cyclone was upgraded to a tropical storm but would not see additional strengthening as it moved into the eastern Caribbean Sea.
By the evening of August 19, Harvey had degenerated from a cyclone to a tropical wave (no closed center of circulation) and the National Hurricane Center discontinued issuing advisories on the system.
The full track of Hurricane Harvey is shown in [Figure 1](#fig:plot-al092017).
```{r plot-al092017, fig.cap = "Hurricane Harvey had two life cycles as a tropical cyclone; the first in the western Atlantic and eastern Caribbean, and the second in the Gulf of Mexico."}
bp +
geom_point(data = AL092017, aes(x = Lon, y = Lat, color = Class)) +
geom_path(
data = AL092017, aes(x = Lon, y = Lat, color = Class, group = Group)
) +
guides(color = guide_legend(title = NULL, nrow = 1)) +
scale_color_brewer(type = "qual", palette = "Set1", direction = -1) +
# scale_color_viridis(discrete = TRUE) +
coord_equal(
xlim = c(min(AL092017$Lon), max(AL092017$Lon)),
ylim = c(min(AL092017$Lat), max(AL092017$Lat))
) +
labs(
title = "Hurricane Harvey - Full Track",
subtitle = "Harvey's track from August 17 to August 31, 2017"
)
```
By midday August 23, the remnants of Harvey had regenerated back into a tropical depression while in the southern Gulf of Mexico. The NHC began reissuing advisories on the system.
[Figure 2](#fig:plot-al092017-gulf) shows the track of Hurricane Harvey after regeneration in the Gulf of Mexico. Once the cyclone redeveloped, it quickly began strengthening as it moved north and north-northwest towards the central Texas coastline. [Figure 3](#fig:plot-al092017-pres) and [Figure 5](#fig:plot-al092017-wind) show how the pressure and wind of Harvey changed rapidly as the storm intensified.
```{r plot-al092017-gulf, fig.cap = "Hurricane Harvey track in the Gulf of Mexico where the system intensified quickly into a category four hurricane."}
bp +
geom_point(data = AL09017_gulf, aes(x = Lon, y = Lat, color = Class)) +
geom_path(
data = AL09017_gulf, aes(x = Lon, y = Lat, color = Class, group = Group)
) +
guides(color = guide_legend(title = NULL, nrow = 1)) +
scale_color_brewer(type = "qual", palette = "Set1", direction = -1) +
coord_equal(
xlim = c(min(AL09017_gulf$Lon) - 3, max(AL09017_gulf$Lon) + 3),
ylim = c(min(AL09017_gulf$Lat), max(AL09017_gulf$Lat))
) +
labs(
title = "Hurricane Harvey - Gulf of Mexico",
subtitle = "Harvey's track from August 23 to August 31, 2017"
)
```
### Barometric Pressure
Barometric pressure is the lowest atmospheric pressure either estimated or recorded in the center of a tropical cyclone. Generally speaking, the lower the barometric pressure, the stronger the cyclone.
[Figure 3](#fig:plot-al092017-pres) shows the barometric pressure observations over 6-hour intervals during the life cycle of the cyclone. The gap from August 21 to August 23 is due to the system temporarily losing cyclone characteristics in the Caribbean Sea.
```{r plot-al092017-pres, fig.cap = "Hurricane Harvey central barometric pressure observations during the life cycle of the tropical cyclone."}
AL092017 %>%
ggplot(aes(x = Date, y = Pressure, group = Group)) +
geom_line() +
geom_point(aes(color = Class), size = 3) +
guides(color = guide_legend(title = NULL, nrow = 1)) +
scale_color_brewer(type = "qual", palette = "Set1", direction = -1) +
theme_bw() +
theme(
legend.position = "bottom",
legend.box = "vertical"
) +
labs(
title = "Hurricane Harvey Pressure Profile",
subtitle = "Central barometric pressure observations over 6-hour intervals",
y = "Pressure (mb)"
)
```
[Figure 4](#fig:plot-pres) shows the lowest pressure observations as reported by the respective local NWS offices. As expected, the lowest values were recorded just north of Corpus Christi, Texas near the Rockport area where some locations reported pressure in the 940's (mb).
[Table 1](#tbl:tbl-pres) shows the five lowest pressure observations recorded.
```{r plot-pres, fig.cap = "Rockport, Texas recorded the lowest pressure observations. Many observations are incomplete due to weather stations losing power or equipment during the storm."}
bp +
geom_point(
data = filter(slp_df, !is.na(Pres)) %>%
arrange(desc(Pres)),
aes(x = Lon, y = Lat, color = Pres), shape = 7) +
scale_color_gradientn(
colors = terrain.colors(10),
breaks = c(940, 975, 1010),
limits = c(940, 1010)
) +
coord_equal(
xlim = c(min(slp_df$Lon, na.rm = TRUE),
max(slp_df$Lon, na.rm = TRUE)),
ylim = c(min(slp_df$Lat, na.rm = TRUE),
max(slp_df$Lat, na.rm = TRUE))
) +
labs(
title = "Sea Level Pressure - Hurricane Harvey",
subtitle = "Lowest observed barometric pressure observations during Hurricane Harvey."
)
```
The minimum pressure observed was 941.8mb at RCPT in Rockport, TX. Official landfall occurred at 06:00 UTC on the morning of August 26, 2017; 2 1/2 hours after the RCPT observation. This is approximately the same reported minimum central pressure listed by the National Hurricane Center (NHC) in [Public Advisory 23A](http://www.nhc.noaa.gov/archive/2017/al09/al092017.public_a.023.shtml?) which suggests pressure values may have been lower as the storm made passed over the station.
```{r tbl-pres, results = "asis"}
slp_df %>%
top_n(-5L, Pres) %>%
select(-c(Wind:GustRmks)) %>%
arrange(Pres) %>%
kable(caption = "Five lowest pressure observations (mb).")
```
The "I" in `PresRmks` denotes the observation is incomplete.
Many stations lost equipment during the height of the storm, leading to many incomplete data observations (at least 70).
### Wind
[Figure 5](#fig:plot-al092017-wind) shows the quick increase in wind during Harvey's track over the Gulf of Mexico. It strengthened from a tropical depression to a category four hurricane in 60 hours; not record-breaking but quite impressive nonetheless.
```{r plot-al092017-wind, fig.cap = "Harvey strengthened from a tropical depression to category four hurricane in just over two days once in the Gulf of Mexico."}
AL092017 %>%
ggplot(aes(x = Date, y = Wind)) +
geom_line(aes(group = Group)) +
geom_point(aes(color = Class), size = 3) +
guides(color = guide_legend(title = NULL, nrow = 1)) +
scale_color_brewer(type = "qual", palette = "Set1", direction = -1) +
theme_bw() +
theme(
legend.position = "bottom",
legend.box = "vertical"
) +
labs(
title = "Hurricane Harvey Wind Profile",
subtitle = "Maximum sustained wind speeds over 6-hour intervals",
y = "Wind (kts)"
)
```
[Figure 6](#fig:plot-slp-df-wind) shows the plot of all maximum wind values during Hurricane Harvey. As with barometric pressure, the highest wind values were recorded where Harvey made landfall but drop significantly at nearby locations.
```{r plot-slp-df-wind, fig.cap = "Maximum sustained wind observations as reported by weather stations during Hurricane Harvey."}
bp +
geom_point(data = filter(slp_df, !is.na(Wind)) %>% arrange(Wind),
aes(x = Lon, y = Lat, color = Wind), shape = 9) +
scale_color_gradientn(colors = rev(terrain.colors(10))) +
coord_equal(xlim = c(min(slp_df$Lon, na.rm = TRUE),
max(slp_df$Lon, na.rm = TRUE)),
ylim = c(min(slp_df$Lat, na.rm = TRUE),
max(slp_df$Lat, na.rm = TRUE))) +
labs(title = "Hurricane Harvey Maximum Wind Observations",
subtitle = "Highest wind observations during Hurricane Harvey.")
```
The highest wind value was recorded at ANPT2 several hours prior to the center of the hurricane moving ashore. NWS CRP (Corpus Christi) reports,
> ANPT2 SENTINEL STOPPED REPORTING AND MAY NOT HAVE RECORDED MAXIMUM EVENT VALUES
```{r tbl-wind, results = "asis"}
slp_df %>%
top_n(5L, Wind) %>%
select(ID, Station, Lat, Lon, Wind, WindDT) %>%
arrange(desc(Wind)) %>%
kable(caption = "Five highest wind observations (kts).")
```
In addition to ANPT2, RCPT2 (Rockport), MAXT2, RTAT2, MIST2 and MIRT2 all failed prior to the peak of the hurricane. XWLD failed when the pier housing the sensor was swept away.
```{r tbl-wind-select, results = "asis"}
slp_df %>%
select(-c(Pres:PresRmks, Gust:GustRmks)) %>%
filter(!is.na(Wind),
ID %in% c("RCPT2", "RTAT2", "ANPT2", "XWLD", "MAXT2", "MIST2",
"MIRT2")) %>%
arrange(desc(Wind)) %>%
kable(caption = "Select Wind observations.")
```
### Rain
The story of Hurricane Harvey will always center around the significant flooding that took place as the hurricane weakened and stalled in southeast Texas. Harvey dropped record rainfall amounts across broad areas of southeast Texas turning highways into rivers and neighborhoods into lakes.
```{r plot-rain, fig.cap = "Several locations across southeast Texas recorded over 30\" of rain with many isolated amounts of 40-50 inches."}
bp +
geom_point(data = filter(rain_df, !is.na(Rain)) %>% arrange(Rain),
aes(x = Lon, y = Lat, color = Rain), shape = 2) +
scale_color_gradientn(colors = rev(terrain.colors(10))) +
coord_equal(xlim = c(min(slp_df$Lon, na.rm = TRUE),
max(slp_df$Lon, na.rm = TRUE)),
ylim = c(min(slp_df$Lat, na.rm = TRUE),
max(slp_df$Lat, na.rm = TRUE))) +
labs(title = "Hurricane Harvey Rainfall Observations",
subtitle = "Maximum recorded rainfall, in inches, during Hurricane Harvey.")
```
Though the news focus of the flooding was centered in the Houston area (Harris County), the largest rainfall amounts were recorded in Chambers, Brazoria, Liberty and Jefferson counties.
```{r tbl-rain, results = "asis"}
rain_df %>%
top_n(5L, Rain) %>%
arrange(desc(Rain)) %>%
select(-RainRmks) %>%
kable(caption = "Top 5 Rainfall Amounts")
```
The text reports contain a Section D for Inland Flooding. Unfortunately at this time only the San Antonion/Austin NWS office have provided more info; generally river flooding and low water crossings.
### Tornadoes
There are 24 tornado observations for Hurricane Harvey. However, some observations may be for the same tornado. For example, there are two observations for a tornado in Fort Bend county with the same `Lat`, `Lat` and `Date` value; only `Details` is different.
```{r plot-tors, fig.cap = "All tornadoes generated from Hurricane Harvey were relatively weak, as is typical of tropical cyclones."}
tor_df$Scale <- factor(tor_df$Scale,
levels = c("EF0", "EF1", "EF2", "EF3", "EF4", "EF5"),
labels = c("EF0", "EF1", "EF2", "EF3", "EF4", "EF5"))
bp +
geom_point(data = filter(tor_df, !is.na(Scale)),
aes(x = Lon, y = Lat, color = Scale, fill = Scale), shape = 25) +
coord_equal(xlim = c(min(tor_df$Lon, na.rm = TRUE),
max(tor_df$Lon, na.rm = TRUE)),
ylim = c(min(tor_df$Lat, na.rm = TRUE),
max(tor_df$Lat, na.rm = TRUE))) +
labs(title = "Hurricane Harvey Tornado Reports",
subtitle = "Confirmed tornado touchdowns generated from Hurricane Harvey.")
```
[Table 5](#tbl:tbl-tors) shows all tornado observations during the event from each of the NWS offices. [Table Six](#tab:efs) identifies wind range values for `Scale`.
```{r tbl-tors, results = "asis"}
tor_df %>%
kable(caption = "Tornado Remarks, Hurricane Harvey")
```
```{r efs, results = "asis"}
efs <- data.frame("Scale" = c("EF0", "EF1", "EF2", "EF3", "EF4", "EF5"),
"WindMPH" = c("65-85", "86-110", "111-135", "136-165",
"166-200", ">200"),
"WindKTS" = c("55-74", "75-96", "97-117", "118-143",
"144-174", ">175"))
kable(efs, caption = "Enhanced Fujita Scale")
```
```{r child = here::here("./children/previous_revisions.Rmd")}
```
```{r child = here::here("./children/session_info.Rmd")}
```