- We’ve talked about how different spatial data have different projections which have different units
- But you may have noticed that something a little funny happens with these units when we plot data using ggplot
- Let’s start where we did at the beginning of the last lesson
- Having already loaded the packages we need and imported the Harvard Forest soils data and digital terrain model
library(sf)
library(stars)
library(ggplot2)
harv_soils <- st_read("data/HARV/harv_soils.shp")
harv_dtm <- read_stars("data/HARV/HARV_dtmFull.tif")
- Let’s look at the coordinate reference systems for these two data sets
st_crs(harv_soils)
st_crs(harv_dtm)
-
So both data sets in are UTM Zone 18 North
-
If we plot the raster data on it’s own it is in UTM units
ggplot() +
geom_stars(data = harv_dtm)
- It has the large numbers we’ve seen before on the axes
- Now let’s add the soils data
ggplot() +
geom_stars(data = harv_dtm) +
geom_sf(data = harv_soils, alpha = 0)
- Now all of a sudden we have latitudes and longitudes instead of our UTM coordinates
- This happens because by default
geom_sf
changes the units to latitude and longitude values - To change the units to another projection, like the projection of the data, we use
coord_sf
- Which takes a CRS and shows the axes in those units
- So if we want this graph in the units of the projection of our data we can look up the CRS and use that
ggplot() +
geom_stars(data = harv_dtm) +
geom_sf(data = harv_soils, alpha = 0) +
coord_sf(datum = st_crs(harv_dtm))
- We could also use the numeric code for the CRS instead if we want to