Due Friday, May 6th 2026 at noon. Submit as a PDF on HuskyCT. (20 pts)
hawk_gbif<- occ_download_get(key = "0014302-260226173443078", overwrite = TRUE) %>%
occ_download_import(hawk_gbif_download, na.strings = c("", NA))
## Download file size: 29.22 MB
## On disk at C:\Users\Abiey\EEB4100\0014302-260226173443078.zip
coopers_hawk<- hawk_gbif %>%
filter(species == "Accipiter cooperii") %>%
select(species, decimalLatitude, decimalLongitude, eventDate) %>%
na.omit()
#install.packages("elevatr")
#install.packages("climate")
#install.packages("geodata")
#install.packages("leaflet.extras2")
library(elevatr)
## elevatr v0.99.0 NOTE: Version 0.99.0 of 'elevatr' uses 'sf' and 'terra'. Use
## of the 'sp', 'raster', and underlying 'rgdal' packages by 'elevatr' is being
## deprecated; however, get_elev_raster continues to return a RasterLayer. This
## will be dropped in future versions, so please plan accordingly.
library(lubridate)
library(climate)
library(terra)
## terra 1.8.93
##
## Attaching package: 'terra'
## The following object is masked from 'package:tidyr':
##
## extract
library(raster)
## Loading required package: sp
##
## Attaching package: 'raster'
## The following object is masked from 'package:dplyr':
##
## select
library(geodata)
library(leaflet.extras2)
coopers_hawk<- coopers_hawk %>%
mutate(eventDate = ymd(eventDate),
month = month(eventDate),
migration = ifelse(month %in% c(9,10,11),
"Coopers_Hawk_Migrated", "Coopers_Hawk_Observations"))
migrated_data<- coopers_hawk %>%
filter(migration == "Coopers_Hawk_Migrated")
other_data<- coopers_hawk %>%
filter(migration == "Coopers_Hawk_Observations")
coordinates_sf <- st_as_sf(coopers_hawk,
coords = c("decimalLongitude", "decimalLatitude"),
crs = 4326)
elevation<- get_elev_raster(locations = coordinates_sf, z = 5)
## Mosaicing & Projecting
## Note: Elevation units are in meters.
elevation<- rast(elevation)
elevation<- aggregate(elevation, fact = 4)
temperature_raster<- raster("temperature.tif")
downsampled_temp<- aggregate(temperature_raster, fact = 4)
leaflet() %>%
setView(lng = -79, lat = 37.8, zoom = 5) %>%
addTiles() %>%
addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
addProviderTiles(providers$OpenTopoMap) %>%
addCircleMarkers(data = migrated_data,
~decimalLongitude, ~decimalLatitude,
color = "paleturquoise",fillOpacity = 1, radius = 3,
group = "Coopers Hawk Migrated Observations") %>%
addCircleMarkers(data = other_data,
~decimalLongitude, ~decimalLatitude,
color = "orchid",fillOpacity = 1, radius = 3,
group = "Coopers Hawk Observations") %>%
addRasterImage(elevation,
group = "Elevation") %>%
addRasterImage(downsampled_temp, group = "Temperature") %>%
addLayersControl(
overlayGroups = c("Coopers Hawk Migrated Observations", "Coopers Hawk Observations", "Temperature"),
options = layersControlOptions(collapsed=FALSE))
nyc_coords<- c(40.7128, -74.0060)
philly_coords<- c(39.9526, -75.1652)
dc_coords<- c(38.9073, -77.0369)
leaflet() %>%
setView(lng = -79, lat = 37.8, zoom = 5) %>%
addTiles() %>%
addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
addProviderTiles(providers$OpenTopoMap) %>%
addCircleMarkers(data = migrated_data,
~decimalLongitude, ~decimalLatitude,
color = "paleturquoise",fillOpacity = 1, radius = 3,
group = "Coopers Hawk Migrated Observations") %>%
addCircleMarkers(data = other_data,
~decimalLongitude, ~decimalLatitude,
color = "orchid",fillOpacity = 1, radius = 3,
group = "Coopers Hawk Observations") %>%
addRasterImage(elevation,
group = "Elevation") %>%
addRasterImage(downsampled_temp, group = "Temperature") %>%
addLayersControl(
overlayGroups = c("Coopers Hawk Migrated Observations", "Coopers Hawk Observations", "Temperature"),
options = layersControlOptions(collapsed=FALSE)) %>%
addMarkers(lng = nyc_coords[2], lat = nyc_coords[1], label = "New York City", labelOptions = labelOptions(noHide = TRUE)) %>%
addMarkers(lng = philly_coords[2], lat = philly_coords[1], label = "Philidelphia", labelOptions = labelOptions(noHide = TRUE)) %>%
addMarkers(lng = dc_coords[2], lat = dc_coords[1], label = "Washington DC", labelOptions = labelOptions(noHide = TRUE))
Describe the choices you made on the map design and representation.
leaflet() %>%
setView(lng = -79, lat = 37.8, zoom = 5) %>%
addTiles() %>%
addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
addProviderTiles(providers$OpenTopoMap) %>%
addCircleMarkers(data = migrated_data,
~decimalLongitude, ~decimalLatitude,
color = "paleturquoise",fillOpacity = 1, radius = 3,
group = "Coopers Hawk Migrated Observations") %>%
addCircleMarkers(data = other_data,
~decimalLongitude, ~decimalLatitude,
color = "orchid",fillOpacity = 1, radius = 3,
group = "Coopers Hawk Observations") %>%
addRasterImage(elevation,
group = "Elevation") %>%
addRasterImage(downsampled_temp,
color = "palevioletred1", opacity = 1,
group = "Temperature") %>%
addMarkers(lng = nyc_coords[2], lat = nyc_coords[1], label = "New York City", labelOptions = labelOptions(noHide = TRUE)) %>%
addMarkers(lng = philly_coords[2], lat = philly_coords[1], label = "Philidelphia", labelOptions = labelOptions(noHide = TRUE)) %>%
addMarkers(lng = dc_coords[2], lat = dc_coords[1], label = "Washington DC", labelOptions = labelOptions(noHide = TRUE)) %>%
addLayersControl(
overlayGroups = c("Coopers Hawk Migrated Observations", "Coopers Hawk Observations", "Temperature"),
options = layersControlOptions(collapsed = FALSE)) %>%
addLegend(position = "bottomright",
colors = c("paleturquoise", "orchid", "palevioletred1"),
labels = c("Coopers Hawk Migrated Observations", "Coopers Hawk Observations", "Temperature"),
opacity = 1) %>%
addLegend("bottomleft", title = "Elevation",
pal = colorNumeric(palette = c("lightgreen", "green", "darkgreen", "yellow", "orange", "red"), domain = c(0, 2000)),
values = c(0, 2000),
labels = c("0-200m", "201-400m", "401-600m", "601-800m", "801-1000m", "1001-2000m"),opacity = 1)
# For the different observations, I separated them based on the months in which they were recorded. Coopers Hawks typically migrate from August to November so those were the months I pulled for migrated observations. I gave migrated and non migrated observations different colors to make them easier to see. I added a temperature layer that can be turned on and off and set that to a color that was easily contrasted between the data points. An elevation layer was also added with corresponding colors based on value. A majority of the sightings were recorded in a small area in the eastern US, so I labeled three populous cities somewhat near to the cluster of data points.