---
title: "Spatial Data"
output:
html_notebook: default
pdf_document: default
word_document: default
---
The new version of the book is now available [mdsr2e](https://beanumber.github.io/mdsr2e/). The new chapter [Chapter 17 Working with geospatial data](https://beanumber.github.io/mdsr2e/ch-spatial.html) used the new R package [sf](https://r-spatial.github.io/sf/) and could be further updated to the the new R package [cholera](https://github.com/lindbrook/cholera).
```{r}
library(tidyverse)
library(mdsr)
library(sf)
plot(CholeraDeaths["Count"])
```
It is probably best to do this in an R Project.
```{r}
download.file("http://rtwilson.com/downloads/SnowGIS_SHP.zip",
dest="SnowGIS.zip", mode="wb")
unzip("SnowGIS.zip")
dsn <- fs::path("SnowGIS_SHP")
list.files(dsn)
```
```{r}
st_layers(dsn)
```
```{r}
CholeraDeaths <- st_read(dsn, layer = "Cholera_Deaths")
```
```{r}
class(CholeraDeaths)
```
```{r}
CholeraDeaths
```
```{r}
summary(CholeraDeaths)
```
```{r}
ggplot(CholeraDeaths) +
geom_sf()
```
In the new edition of the book the authors use Open Street Maps instead of Google Maps API.
```{r}
library(ggspatial)
ggplot(CholeraDeaths) +
annotation_map_tile(type = "osm", zoomin = 0) +
geom_sf(aes(size = Count), alpha = 0.7)
```
```{r}
st_bbox(CholeraDeaths)
```
# Projections
```{r}
library(mapproj)
library(maps)
map("world", projection = "mercator", wrap = TRUE)
map("world", projection = "cylequalarea", param = 45, wrap = TRUE)
```
```{r}
map(
"state", projection = "lambert",
parameters = c(lat0 = 20, lat1 = 50), wrap = TRUE
)
map(
"state", projection = "albers",
parameters = c(lat0 = 20, lat1 = 50), wrap = TRUE
)
```
```{r}
st_crs(CholeraDeaths)
```
```{r}
st_crs(4326)$epsg
```
```{r}
st_crs(3857)
```
```{r}
st_crs(27700)$proj4string
```
```{r}
cholera_4326 <- CholeraDeaths %>%
st_transform(4326)
```
```{r}
st_bbox(cholera_4326)
```
```{r}
ggplot(cholera_4326) +
annotation_map_tile(type = "osm", zoomin = 0) +
geom_sf(aes(size = Count), alpha = 0.7)
```
```{r}
help("spTransform-methods", package = "rgdal")
```
```{r}
st_crs(CholeraDeaths)$proj4string
```
```{r}
cholera_latlong <- CholeraDeaths %>%
st_set_crs(27700) %>%
st_transform(4326)
snow <- ggplot(cholera_latlong) +
annotation_map_tile(type = "osm", zoomin = 0) +
geom_sf(aes(size = Count))
```
```{r}
pumps <- st_read(dsn, layer = "Pumps")
```
```{r}
pumps_latlong <- pumps %>%
st_set_crs(27700) %>%
st_transform(4326)
snow +
geom_sf(data = pumps_latlong, size = 3, color = "red")
```
# Leaflet
```{r}
library(tidygeocoder)
white_house <- tibble(
address = "The White House, Washington, DC"
) %>%
tidygeocoder::geocode(address, method = "osm")
library(leaflet)
white_house_map <- leaflet() %>%
addTiles() %>%
addMarkers(data = white_house)
white_house_map
```
```{r}
white_house <- white_house %>%
mutate(
title = "The White House",
street_address = "1600 Pennsylvania Ave"
)
white_house_map %>%
addPopups(
data = white_house,
popup = ~paste0("", title, "", street_address)
)
```