You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _04-ex.Rmd
+25-10
Original file line number
Diff line number
Diff line change
@@ -73,6 +73,7 @@ The starting point of this exercise is to create an object representing Colorado
73
73
74
74
- Create a new object representing all the states that geographically intersect with Colorado and plot the result (hint: the most concise way to do this is with the subsetting method `[`).
75
75
- Create another object representing all the objects that touch (have a shared boundary with) Colorado and plot the result (hint: remember you can use the argument `op = st_intersects` and other spatial relations during spatial subsetting operations in base R).
76
+
- Bonus: create a straight line from the centroid of the District of Columbia near the East coast to the centroid of California near the West coast of the USA (hint: functions `st_centroid()`, `st_union()` and `st_cast()` described in Chapter 5 may help) and identify which states this long East-West line crosses.
E4. Use `dem = rast(system.file("raster/dem.tif", package = "spDataLarge"))`, and reclassify the elevation in three classes: low (<300), medium and high (>500).
114
+
```{r 04-ex-4-5}
115
+
washington_to_cali = us_states %>%
116
+
filter(grepl(pattern = "Columbia|Cali", x = NAME)) %>%
117
+
st_centroid() %>%
118
+
st_union() %>%
119
+
st_cast("LINESTRING")
120
+
states_crossed = us_states[washington_to_cali, , op = st_crosses]
121
+
states_crossed$NAME
122
+
plot(us_states$geometry, main = "States crossed by a straight line\n from the District of Columbia to central California")
123
+
plot(states_crossed$geometry, col = "grey", add = TRUE)
124
+
plot(washington_to_cali, add = TRUE)
125
+
```
126
+
127
+
128
+
E5. Use `dem = rast(system.file("raster/dem.tif", package = "spDataLarge"))`, and reclassify the elevation in three classes: low (<300), medium and high (>500).
114
129
Secondly, read the NDVI raster (`ndvi = rast(system.file("raster/ndvi.tif", package = "spDataLarge"))`) and compute the mean NDVI and the mean elevation for each altitudinal class.
115
130
116
-
```{r 04-ex-e4}
131
+
```{r 04-ex-e5}
117
132
library(terra)
118
133
dem = rast(system.file("raster/dem.tif", package = "spDataLarge"))
E7. A StackOverflow [post](https://stackoverflow.com/questions/35555709/global-raster-of-geographic-distances) shows how to compute distances to the nearest coastline using `raster::distance()`.
196
+
E8. A StackOverflow [post](https://stackoverflow.com/questions/35555709/global-raster-of-geographic-distances) shows how to compute distances to the nearest coastline using `raster::distance()`.
182
197
Try to do something similar but with `terra::distance()`: retrieve a digital elevation model of Spain, and compute a raster which represents distances to the coast across the country (hint: use `geodata::elevation_30s()`).
183
198
Convert the resulting distances from meters to kilometers.
184
199
Note: it may be wise to increase the cell size of the input raster to reduce compute time during this operation.
plot(distance_to_coast_km, main = "Distance to the coast (km)")
207
222
```
208
223
209
-
E8. Try to modify the approach used in the above exercise by weighting the distance raster with the elevation raster; every 100 altitudinal meters should increase the distance to the coast by 10 km.
224
+
E9. Try to modify the approach used in the above exercise by weighting the distance raster with the elevation raster; every 100 altitudinal meters should increase the distance to the coast by 10 km.
210
225
Next, compute and visualize the difference between the raster created using the Euclidean distance (E7) and the raster weighted by elevation.
211
226
212
-
```{r 04-ex-e8}
227
+
```{r 04-ex-e9}
213
228
# now let's weight each 100 altitudinal meters by an additional distance of 10 km
0 commit comments