forked from AdamWilsonLabEDU/SpatialDataScience
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCS_06.Rmd
More file actions
133 lines (104 loc) · 3.94 KB
/
CS_06.Rmd
File metadata and controls
133 lines (104 loc) · 3.94 KB
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
---
title: Raster Data
date: 2018-10-04
subtitle: Working with Raster Data
reading:
- The [Spatial Features Package (sf)](https://r-spatial.github.io/sf/){target='blank'}
tasks:
- Reproject spatial data using `st_transform()`
- Intersect a vector and raster layer
- Save your script as a .R or .Rmd in your course repository
---
```{r setup, include=FALSE, purl=F}
source("functions.R")
source("knitr_header.R")
```
# Reading
```{r reading,results='asis',echo=F,purl=F}
md_bullet(rmarkdown::metadata$reading)
```
# Background
# Objective
> 1) Generate a polygon that includes all land in NY that is within 10km of the Canadian border and 2) calculate it's area in km^2. How much land will you need to defend from the Canadians?
# Tasks
```{r tasks,results='asis',echo=F, purl=F}
md_bullet(rmarkdown::metadata$tasks)
```
[<i class="fa fa-file-code-o fa-1x" aria-hidden="true"></i> Download starter R script (if desired)](`r output_nocomment`){target="_blank"}
<div class="well">
<button data-toggle="collapse" class="btn btn-primary btn-sm round" data-target="#demo1">Show Hints</button>
<div id="demo1" class="collapse">
The details below describe one possible approach.
## Libraries
You will need to load the following packages
```{r warning=FALSE, message=FALSE}
library(raster)
library(spData)
library(tidyverse)
```
Loading the `spData()` package returns a warning: `To access larger datasets in this package, install the spDataLarge package...`. This is not required for this course - you can use the standard lower resolution files.
## Data
```{r message=F}
#load 'world' data from spData package
data(world)
```
## Steps
1. `world` dataset
1. transform to the albers equal area projection:
```{r}
albers="+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"
```
2. use `st_set_geometry()` to specify that the `geom` column contains the `geometry`. This will also rename the column from `geom` to `geometry` to make it easier to use `ggplot()`
3. filter the world dataset to include only `name_long=="Canada"`
4. buffer canada to 10km (10000m)
2. WorldClim object
1. Use `tmax=getData(...)` to download the WorldClim maximum temperature dataset at the lowest resolution (10 degrees). You will have to replace the `...` with the correct parameters to specify the `name="worldclim", var="tmax", res=10`.
2. Inspect the new `tmax` object. How many layers does it have? What do these represent?
3. Calculate the mean annual maximum temperature using `mean()`
4.
</div>
</div>
Your final result should look something like this:
```{r purl=F, echo=F, message=FALSE, warning=FALSE}
world_sp <- as(world,"Spatial")
tmax <- getData(name = "worldclim", var="tmax", res=10)
gain(tmax) <- 0.1
tmax_mean <- mean(tmax)
names(tmax_mean) <- "Tmax"
world_clim <- tmax_mean %>%
raster::extract(y=world_sp, fun=mean, na.rm=T, small=T, sp=T)%>%
st_as_sf()
ggplot(world_clim,aes(fill=Tmax))+
geom_sf()+
scale_fill_viridis_c()
```
```{r}
world_clim%>%
group_by(continent)%>%
arrange(Tmax)%>%
top_n(n=1,wt=Tmax)%>%
select(name_long,continent,Tmax)%>%
knitr::kable()
```
<div class="extraswell">
<button data-toggle="collapse" class="btn btn-link" data-target="#extras">
Extra time? Try these extra activities...
</button>
<div id="extras" class="collapse">
Build a leaflet map of the same dataset.
```{r, purl=F, echo=F}
library(leaflet)
library(htmlwidgets)
l=ny_border%>%
st_transform("+proj=longlat +datum=WGS84")%>%
leaflet() %>%
addTiles() %>%
addPolygons(color = "#444444", weight = 1, fillOpacity = 0.5,
fillColor = "red",
popup = paste("Danger Zone"))
f <-"CS05_leaflet.html"
saveWidget(l,file.path(normalizePath(dirname(f)),basename(f)),libdir="externals",selfcontained = T)
```
<iframe id="test" style=" height:400px; width:100%;" scrolling="no" frameborder="0" src="CS05_leaflet.html"></iframe>
</div>
</div>