Skip to content

Instantly share code, notes, and snippets.

@dwherring
Last active September 22, 2019 01:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dwherring/6b153e749b5bff15af3847ebc5a24d80 to your computer and use it in GitHub Desktop.
Save dwherring/6b153e749b5bff15af3847ebc5a24d80 to your computer and use it in GitHub Desktop.
Visualize a race
# if not installed:
# install.packages("leaflet")
# install.packages("shiny")
library(leaflet)
library(shiny)
library(htmltools)
library(tools)
houghton_to_bayfield_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/lake-superior-yachting-association-offshore/lsya-houghton-to-bayfield-2018.csv.gz"
ati_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/around-the-islands/around-the-islands-2018.csv.gz"
race_week_1_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/race-week/race-week-1/race-week-1-2018.csv.gz"
race_week_3_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/race-week/race-week-3/race-week-3-2018.csv.gz"
race_week_4_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/race-week/race-week-4/race-week-4-2018.csv.gz"
fall_series_1_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/fall-series/fall-series-1/fall-series-1-2018.csv.gz"
fall_series_2_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/fall-series/fall-series-2/fall-series-2-2018.csv.gz"
fall_series_4_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/fall-series/fall-series-4/fall-series-4-2018.csv.gz"
dobson_1_url <- "https://s3.amazonaws.com/boatthing-data/races/2018/dobson-regatta/dobson-1/dobson-regatta-1-2018.csv.gz"
single_double_2019_url <- "https://boatthing-data.s3.amazonaws.com/single-double-2019.csv.gz"
race_week_1_2019_url <- "https://boatthing-data.s3.amazonaws.com/race-week-1-2019.csv.gz"
race_week_3_2019_url <- "https://boatthing-data.s3.amazonaws.com/race-week-3-2019.csv.gz"
race_week_4_2019_url <- "https://boatthing-data.s3.amazonaws.com/race-week-4-2019.csv.gz"
international_2019_url <- "https://boatthing-data.s3.amazonaws.com/international-2019.csv.gz"
trans_superior_2019_url <- "https://boatthing-data.s3.amazonaws.com/trans-superior-2019.csv.gz"
fall_series_1_2019_url <- "https://boatthing-data.s3.amazonaws.com/fall-series-1-2019.csv.gz"
fall_series_2_2019_url <- "https://boatthing-data.s3.amazonaws.com/fall-series-2-2019.csv.gz"
dobson_regatta_1_2018 <- "https://boatthing-data.s3.amazonaws.com/dobson-regatta-1-2019.csv.gz"
## replace with the race you want to view
race_url = dobson_regatta_1_2018
race <- race_url %>%
url() %>%
gzcon() %>%
readLines() %>%
textConnection() %>%
read.csv()
lon <- mean(c(max(race$lon), min(race$lon)))
lat <- mean(c(max(race$lat), min(race$lat)))
zoom <- 8
lmap <- leaflet() %>%
addTiles() %>%
setView(lon, lat, zoom=zoom)
attribution = gsub("-", " ", file_path_sans_ext(race_url) %>% file_path_sans_ext() %>% basename())
map <- addWMSTiles(lmap,"https://seamlessrnc.nauticalcharts.noaa.gov/arcgis/services/RNC/NOAA_RNC/ImageServer/WMSServer",
layers = 'NOAA_RNC',
options = WMSTileOptions(format = "image/png", transparent = TRUE),
attribution = attribution)
map <- addPolylines(map, lng = race$lon, lat = race$lat)
interval <- as.integer(length(race$lon)/1000)
len <- length(race$lat)
lats <- race$lat[seq(1, len, interval)]
lons <- race$lon[seq(1, len, interval)]
sogs <- race$sog[seq(1, len, interval)] * 1.94384
times <- race$time[seq(1, len, interval)]
# wind_speed wind_angle sog
wind_speeds <- race$wind_speed[seq(1, len, interval)] * 1.94384
wind_angles <- race$wind_angle[seq(1, len, interval)]
headings <- race$heading[seq(1, len, interval)]
interval <- as.integer(length(race$lon)/1000)
labels <- paste("time: ", times,
"<br/>lat: ", lats, ", lon: ", lons,
"<br/>wind speed: ", wind_speeds,
"<br/>wind angle: ", wind_angles,
"<br/>heading: ", headings,
"<br/>sog: ", sogs) %>%
lapply(HTML)
map <- addMarkers(map, lng = lons, lat = lats, label = labels, options = layersControlOptions(opacity = 0))
map
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment