diff --git a/01-raster-structure.md b/01-raster-structure.md index decd26525..2c660eb1a 100644 --- a/01-raster-structure.md +++ b/01-raster-structure.md @@ -11,7 +11,7 @@ source: Rmd - Describe the fundamental attributes of a raster dataset. - Explore raster attributes and metadata using R. -- Import rasters into R using the `raster` package. +- Import rasters into R using the `terra` package. - Plot a raster file in R using the `ggplot2` package. - Describe the difference between single- and multi-band rasters. @@ -44,13 +44,14 @@ rasters in R, including CRS and resolution. We will also explore missing and bad data values as stored in a raster and how R handles these elements. We will continue to work with the `dplyr` and `ggplot2` packages that were introduced -in the [Introduction to R for Geospatial Data](https://datacarpentry.org/r-intro-geospatial/) lesson. We will use two additional packages in this episode to work with raster data - the -`raster` and `rgdal` packages. Make sure that you have these packages loaded. +in the [Introduction to R for Geospatial Data](https://datacarpentry.org/r-intro-geospatial/) +lesson. We will use two additional packages in this episode to work with raster +data - the `terra` and `sf` packages. Make sure that you have these packages +loaded. ```r -library(raster) -library(rgdal) +library(terra) library(ggplot2) library(dplyr) ``` @@ -74,49 +75,81 @@ page](https://datacarpentry.org/geospatial-workshop/data/). We will be working with a series of GeoTIFF files in this lesson. The GeoTIFF format contains a set of embedded tags with metadata about the raster -data. We can use the function `GDALinfo()` to get information about our raster +data. We can use the function `describe()` to get information about our raster data before we read that data into R. It is ideal to do this before importing your data. ```r -GDALinfo("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif") -``` - -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others -``` - -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others -``` - -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others +describe("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif") ``` ```{.output} -rows 1367 -columns 1697 -bands 1 -lower left origin.x 731453 -lower left origin.y 4712471 -res.x 1 -res.y 1 -ysign -1 -oblique.x 0 -oblique.y 0 -driver GTiff -projection +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs -file data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif -apparent band summary: - GDType hasNoDataValue NoDataValue blockSize1 blockSize2 -1 Float64 TRUE -9999 1 1697 -apparent band statistics: - Bmin Bmax Bmean Bsd -1 305.07 416.07 359.8531 17.83169 -Metadata: -AREA_OR_POINT=Area + [1] "Driver: GTiff/GeoTIFF" + [2] "Files: /home/runner/work/r-raster-vector-geospatial/r-raster-vector-geospatial/site/built/data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif" + [3] "Size is 1697, 1367" + [4] "Coordinate System is:" + [5] "PROJCRS[\"WGS 84 / UTM zone 18N\"," + [6] " BASEGEOGCRS[\"WGS 84\"," + [7] " DATUM[\"World Geodetic System 1984\"," + [8] " ELLIPSOID[\"WGS 84\",6378137,298.257223563," + [9] " LENGTHUNIT[\"metre\",1]]]," +[10] " PRIMEM[\"Greenwich\",0," +[11] " ANGLEUNIT[\"degree\",0.0174532925199433]]," +[12] " ID[\"EPSG\",4326]]," +[13] " CONVERSION[\"UTM zone 18N\"," +[14] " METHOD[\"Transverse Mercator\"," +[15] " ID[\"EPSG\",9807]]," +[16] " PARAMETER[\"Latitude of natural origin\",0," +[17] " ANGLEUNIT[\"degree\",0.0174532925199433]," +[18] " ID[\"EPSG\",8801]]," +[19] " PARAMETER[\"Longitude of natural origin\",-75," +[20] " ANGLEUNIT[\"degree\",0.0174532925199433]," +[21] " ID[\"EPSG\",8802]]," +[22] " PARAMETER[\"Scale factor at natural origin\",0.9996," +[23] " SCALEUNIT[\"unity\",1]," +[24] " ID[\"EPSG\",8805]]," +[25] " PARAMETER[\"False easting\",500000," +[26] " LENGTHUNIT[\"metre\",1]," +[27] " ID[\"EPSG\",8806]]," +[28] " PARAMETER[\"False northing\",0," +[29] " LENGTHUNIT[\"metre\",1]," +[30] " ID[\"EPSG\",8807]]]," +[31] " CS[Cartesian,2]," +[32] " AXIS[\"(E)\",east," +[33] " ORDER[1]," +[34] " LENGTHUNIT[\"metre\",1]]," +[35] " AXIS[\"(N)\",north," +[36] " ORDER[2]," +[37] " LENGTHUNIT[\"metre\",1]]," +[38] " USAGE[" +[39] " SCOPE[\"Engineering survey, topographic mapping.\"]," +[40] " AREA[\"Between 78°W and 72°W, northern hemisphere between equator and 84°N, onshore and offshore. Bahamas. Canada - Nunavut; Ontario; Quebec. Colombia. Cuba. Ecuador. Greenland. Haiti. Jamica. Panama. Turks and Caicos Islands. United States (USA). Venezuela.\"]," +[41] " BBOX[0,-78,84,-72]]," +[42] " ID[\"EPSG\",32618]]" +[43] "Data axis to CRS axis mapping: 1,2" +[44] "Origin = (731453.000000000000000,4713838.000000000000000)" +[45] "Pixel Size = (1.000000000000000,-1.000000000000000)" +[46] "Metadata:" +[47] " AREA_OR_POINT=Area" +[48] "Image Structure Metadata:" +[49] " COMPRESSION=LZW" +[50] " INTERLEAVE=BAND" +[51] "Corner Coordinates:" +[52] "Upper Left ( 731453.000, 4713838.000) ( 72d10'52.71\"W, 42d32'32.18\"N)" +[53] "Lower Left ( 731453.000, 4712471.000) ( 72d10'54.71\"W, 42d31'47.92\"N)" +[54] "Upper Right ( 733150.000, 4713838.000) ( 72d 9'38.40\"W, 42d32'30.35\"N)" +[55] "Lower Right ( 733150.000, 4712471.000) ( 72d 9'40.41\"W, 42d31'46.08\"N)" +[56] "Center ( 732301.500, 4713154.500) ( 72d10'16.56\"W, 42d32' 9.13\"N)" +[57] "Band 1 Block=1697x1 Type=Float64, ColorInterp=Gray" +[58] " Min=305.070 Max=416.070 " +[59] " Minimum=305.070, Maximum=416.070, Mean=359.853, StdDev=17.832" +[60] " NoData Value=-9999" +[61] " Metadata:" +[62] " STATISTICS_MAXIMUM=416.06997680664" +[63] " STATISTICS_MEAN=359.85311802914" +[64] " STATISTICS_MINIMUM=305.07000732422" +[65] " STATISTICS_STDDEV=17.83169335933" ``` If you wish to store this information in R, you can do the following: @@ -124,22 +157,10 @@ If you wish to store this information in R, you can do the following: ```r HARV_dsmCrop_info <- capture.output( - GDALinfo("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif") + describe("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif") ) ``` -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others -``` - -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others -``` - -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others -``` - Each line of text that was printed to the console is now stored as an element of the character vector `HARV_dsmCrop_info`. We will be exploring this data throughout this episode. By the end of this episode, you will be able to explain and understand the output above. @@ -147,7 +168,7 @@ episode. By the end of this episode, you will be able to explain and understand ## Open a Raster in R Now that we've previewed the metadata for our GeoTIFF, let's import this -raster dataset into R and explore its metadata more closely. We can use the `raster()` +raster dataset into R and explore its metadata more closely. We can use the `rast()` function to open a raster in R. ::::::::::::::::::::::::::::::::::::::::: callout @@ -167,20 +188,21 @@ First we will load our raster file into R and view the data structure. ```r DSM_HARV <- - raster("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif") + rast("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif") DSM_HARV ``` ```{.output} -class : RasterLayer -dimensions : 1367, 1697, 2319799 (nrow, ncol, ncell) -resolution : 1, 1 (x, y) -extent : 731453, 733150, 4712471, 4713838 (xmin, xmax, ymin, ymax) -crs : +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs -source : HARV_dsmCrop.tif -names : HARV_dsmCrop -values : 305.07, 416.07 (min, max) +class : SpatRaster +dimensions : 1367, 1697, 1 (nrow, ncol, nlyr) +resolution : 1, 1 (x, y) +extent : 731453, 733150, 4712471, 4713838 (xmin, xmax, ymin, ymax) +coord. ref. : WGS 84 / UTM zone 18N (EPSG:32618) +source : HARV_dsmCrop.tif +name : HARV_dsmCrop +min value : 305.07 +max value : 416.07 ``` The information above includes a report of min and max values, but no other data @@ -193,46 +215,43 @@ summary(DSM_HARV) ``` ```{.warning} -Warning in .local(object, ...): summary is an estimate based on a sample of 1e+05 cells (4.31% of all cells) +Warning: [summary] used a sample ``` ```{.output} - HARV_dsmCrop -Min. 305.5500 -1st Qu. 345.6500 -Median 359.6450 -3rd Qu. 374.2825 -Max. 413.9000 -NA's 0.0000 + HARV_dsmCrop + Min. :305.6 + 1st Qu.:345.6 + Median :359.6 + Mean :359.8 + 3rd Qu.:374.3 + Max. :414.7 ``` but note the warning - unless you force R to calculate these statistics using every cell in the raster, it will take a random sample of 100,000 cells and -calculate from that instead. To force calculation on more, or even all values, -you can use the parameter `maxsamp`: +calculate from that instead. To force calculation all the values, you can use +the function `values`: ```r -summary(DSM_HARV, maxsamp = ncell(DSM_HARV)) +summary(values(DSM_HARV)) ``` ```{.output} - HARV_dsmCrop -Min. 305.07 -1st Qu. 345.59 -Median 359.67 -3rd Qu. 374.28 -Max. 416.07 -NA's 0.00 + HARV_dsmCrop + Min. :305.1 + 1st Qu.:345.6 + Median :359.7 + Mean :359.9 + 3rd Qu.:374.3 + Max. :416.1 ``` -You may not see major differences in summary stats as `maxsamp` increases, -except with very large rasters. - To visualise this data in R using `ggplot2`, we need to convert it to a dataframe. We learned about dataframes in [an earlier lesson](https://datacarpentry.org/r-intro-geospatial/04-data-structures-part2/index.html). -The `raster` package has an built-in function for conversion to a plotable dataframe. +The `terra` package has an built-in function for conversion to a plotable dataframe. ```r @@ -254,8 +273,12 @@ str(DSM_HARV_df) $ HARV_dsmCrop: num 409 408 407 407 409 ... ``` -We can use `ggplot()` to plot this data. We will set the color scale to `scale_fill_viridis_c` -which is a color-blindness friendly color scale. We will also use the `coord_quickmap()` function to use an approximate Mercator projection for our plots. This approximation is suitable for small areas that are not too close to the poles. Other coordinate systems are available in ggplot2 if needed, you can learn about them at their help page `?coord_map`. +We can use `ggplot()` to plot this data. We will set the color scale to +`scale_fill_viridis_c` which is a color-blindness friendly color scale. We will +also use the `coord_quickmap()` function to use an approximate Mercator +projection for our plots. This approximation is suitable for small areas that +are not too close to the poles. Other coordinate systems are available in +ggplot2 if needed, you can learn about them at their help page `?coord_map`. ```r @@ -284,7 +307,7 @@ More information about the Viridis palette used above at ## Plotting Tip -For faster, simpler plots, you can use the `plot` function from the `raster` package. +For faster, simpler plots, you can use the `plot` function from the `terra` package. ::::::::::::::: solution @@ -321,51 +344,11 @@ function. ```r -crs(DSM_HARV) +crs(DSM_HARV, proj = TRUE) ``` ```{.output} -Coordinate Reference System: -Deprecated Proj.4 representation: - +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs -WKT2 2019 representation: -PROJCRS["unknown", - BASEGEOGCRS["unknown", - DATUM["World Geodetic System 1984", - ELLIPSOID["WGS 84",6378137,298.257223563, - LENGTHUNIT["metre",1]], - ID["EPSG",6326]], - PRIMEM["Greenwich",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8901]]], - CONVERSION["UTM zone 18N", - METHOD["Transverse Mercator", - ID["EPSG",9807]], - PARAMETER["Latitude of natural origin",0, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8801]], - PARAMETER["Longitude of natural origin",-75, - ANGLEUNIT["degree",0.0174532925199433], - ID["EPSG",8802]], - PARAMETER["Scale factor at natural origin",0.9996, - SCALEUNIT["unity",1], - ID["EPSG",8805]], - PARAMETER["False easting",500000, - LENGTHUNIT["metre",1], - ID["EPSG",8806]], - PARAMETER["False northing",0, - LENGTHUNIT["metre",1], - ID["EPSG",8807]], - ID["EPSG",16018]], - CS[Cartesian,2], - AXIS["(E)",east, - ORDER[1], - LENGTHUNIT["metre",1, - ID["EPSG",9001]]], - AXIS["(N)",north, - ORDER[2], - LENGTHUNIT["metre",1, - ID["EPSG",9001]]]] +[1] "+proj=utm +zone=18 +datum=WGS84 +units=m +no_defs" ``` ::::::::::::::::::::::::::::::::::::::: challenge @@ -397,7 +380,8 @@ and datum (`datum=`). ### UTM Proj4 String -Our projection string for `DSM_HARV` specifies the UTM projection as follows: +A projection string (like the one of `DSM_HARV`) specifies the UTM projection +as follows: `+proj=utm +zone=18 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0` @@ -412,7 +396,8 @@ Our projection string for `DSM_HARV` specifies the UTM projection as follows: Note that the zone is unique to the UTM projection. Not all CRSs will have a zone. Image source: Chrismurf at English Wikipedia, via [Wikimedia Commons](https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system#/media/File:Utm-zones-USA.svg) (CC-BY). -![The UTM zones across the continental United States. From: https://upload.wikimedia.org/wikipedia/commons/8/8d/Utm-zones-USA.svg](fig/Utm-zones-USA.svg) + +![The UTM zones across the continental United States. From: https://upload.wikimedia.org/wikipedia/commons/8/8d/Utm-zones-USA.svg](fig/Utm-zones-USA.svg){alt='UTM zones in the USA.'} ## Calculate Raster Min and Max Values @@ -425,7 +410,17 @@ can view these values: ```r -minValue(DSM_HARV) +minmax(DSM_HARV) +``` + +```{.output} + HARV_dsmCrop +min 305.07 +max 416.07 +``` + +```r +min(values(DSM_HARV)) ``` ```{.output} @@ -433,7 +428,7 @@ minValue(DSM_HARV) ``` ```r -maxValue(DSM_HARV) +max(values(DSM_HARV)) ``` ```{.output} @@ -466,13 +461,13 @@ raster: surface elevation in meters for one time period. ![](fig/dc-spatial-raster/single_multi_raster.png){alt='Multi-band raster image'} -A raster dataset can contain one or more bands. We can use the `raster()` +A raster dataset can contain one or more bands. We can use the `rast()` function to import one single band from a single or multi-band raster. We can -view the number of bands in a raster using the `nlayers()` function. +view the number of bands in a raster using the `nly()` function. ```r -nlayers(DSM_HARV) +nlyr(DSM_HARV) ``` ```{.output} @@ -510,9 +505,14 @@ spaces where there is no data. -If your raster already has `NA` values set correctly but you aren't sure where they are, you can deliberately plot them in a particular colour. This can be useful when checking a dataset's coverage. For instance, sometimes data can be missing where a sensor could not 'see' its target data, and you may wish to locate that missing data and fill it in. +If your raster already has `NA` values set correctly but you aren't sure where +they are, you can deliberately plot them in a particular colour. This can be +useful when checking a dataset's coverage. For instance, sometimes data can be +missing where a sensor could not 'see' its target data, and you may wish to +locate that missing data and fill it in. -To highlight `NA` values in ggplot, alter the `scale_fill_*()` layer to contain a colour instruction for `NA` values, like `scale_fill_viridis_c(na.value = 'deeppink')` +To highlight `NA` values in ggplot, alter the `scale_fill_*()` layer to contain +a colour instruction for `NA` values, like `scale_fill_viridis_c(na.value = 'deeppink')` @@ -539,7 +539,8 @@ of `NA` will be ignored by R as demonstrated above. ## Challenge -Use the output from the `GDALinfo()` function to find out what `NoDataValue` is used for our `DSM_HARV` dataset. +Use the output from the `describe()` and `sources()` functions to find out what +`NoDataValue` is used for our `DSM_HARV` dataset. ::::::::::::::: solution @@ -547,43 +548,75 @@ Use the output from the `GDALinfo()` function to find out what `NoDataValue` is ```r -GDALinfo("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif") -``` - -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others -``` - -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others -``` - -```{.warning} -Warning: GDAL support is provided by the sf and terra packages among others +describe(sources(DSM_HARV)) ``` ```{.output} -rows 1367 -columns 1697 -bands 1 -lower left origin.x 731453 -lower left origin.y 4712471 -res.x 1 -res.y 1 -ysign -1 -oblique.x 0 -oblique.y 0 -driver GTiff -projection +proj=utm +zone=18 +datum=WGS84 +units=m +no_defs -file data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif -apparent band summary: - GDType hasNoDataValue NoDataValue blockSize1 blockSize2 -1 Float64 TRUE -9999 1 1697 -apparent band statistics: - Bmin Bmax Bmean Bsd -1 305.07 416.07 359.8531 17.83169 -Metadata: -AREA_OR_POINT=Area + [1] "Driver: GTiff/GeoTIFF" + [2] "Files: /home/runner/work/r-raster-vector-geospatial/r-raster-vector-geospatial/site/built/data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_dsmCrop.tif" + [3] "Size is 1697, 1367" + [4] "Coordinate System is:" + [5] "PROJCRS[\"WGS 84 / UTM zone 18N\"," + [6] " BASEGEOGCRS[\"WGS 84\"," + [7] " DATUM[\"World Geodetic System 1984\"," + [8] " ELLIPSOID[\"WGS 84\",6378137,298.257223563," + [9] " LENGTHUNIT[\"metre\",1]]]," +[10] " PRIMEM[\"Greenwich\",0," +[11] " ANGLEUNIT[\"degree\",0.0174532925199433]]," +[12] " ID[\"EPSG\",4326]]," +[13] " CONVERSION[\"UTM zone 18N\"," +[14] " METHOD[\"Transverse Mercator\"," +[15] " ID[\"EPSG\",9807]]," +[16] " PARAMETER[\"Latitude of natural origin\",0," +[17] " ANGLEUNIT[\"degree\",0.0174532925199433]," +[18] " ID[\"EPSG\",8801]]," +[19] " PARAMETER[\"Longitude of natural origin\",-75," +[20] " ANGLEUNIT[\"degree\",0.0174532925199433]," +[21] " ID[\"EPSG\",8802]]," +[22] " PARAMETER[\"Scale factor at natural origin\",0.9996," +[23] " SCALEUNIT[\"unity\",1]," +[24] " ID[\"EPSG\",8805]]," +[25] " PARAMETER[\"False easting\",500000," +[26] " LENGTHUNIT[\"metre\",1]," +[27] " ID[\"EPSG\",8806]]," +[28] " PARAMETER[\"False northing\",0," +[29] " LENGTHUNIT[\"metre\",1]," +[30] " ID[\"EPSG\",8807]]]," +[31] " CS[Cartesian,2]," +[32] " AXIS[\"(E)\",east," +[33] " ORDER[1]," +[34] " LENGTHUNIT[\"metre\",1]]," +[35] " AXIS[\"(N)\",north," +[36] " ORDER[2]," +[37] " LENGTHUNIT[\"metre\",1]]," +[38] " USAGE[" +[39] " SCOPE[\"Engineering survey, topographic mapping.\"]," +[40] " AREA[\"Between 78°W and 72°W, northern hemisphere between equator and 84°N, onshore and offshore. Bahamas. Canada - Nunavut; Ontario; Quebec. Colombia. Cuba. Ecuador. Greenland. Haiti. Jamica. Panama. Turks and Caicos Islands. United States (USA). Venezuela.\"]," +[41] " BBOX[0,-78,84,-72]]," +[42] " ID[\"EPSG\",32618]]" +[43] "Data axis to CRS axis mapping: 1,2" +[44] "Origin = (731453.000000000000000,4713838.000000000000000)" +[45] "Pixel Size = (1.000000000000000,-1.000000000000000)" +[46] "Metadata:" +[47] " AREA_OR_POINT=Area" +[48] "Image Structure Metadata:" +[49] " COMPRESSION=LZW" +[50] " INTERLEAVE=BAND" +[51] "Corner Coordinates:" +[52] "Upper Left ( 731453.000, 4713838.000) ( 72d10'52.71\"W, 42d32'32.18\"N)" +[53] "Lower Left ( 731453.000, 4712471.000) ( 72d10'54.71\"W, 42d31'47.92\"N)" +[54] "Upper Right ( 733150.000, 4713838.000) ( 72d 9'38.40\"W, 42d32'30.35\"N)" +[55] "Lower Right ( 733150.000, 4712471.000) ( 72d 9'40.41\"W, 42d31'46.08\"N)" +[56] "Center ( 732301.500, 4713154.500) ( 72d10'16.56\"W, 42d32' 9.13\"N)" +[57] "Band 1 Block=1697x1 Type=Float64, ColorInterp=Gray" +[58] " Min=305.070 Max=416.070 " +[59] " Minimum=305.070, Maximum=416.070, Mean=359.853, StdDev=17.832" +[60] " NoData Value=-9999" +[61] " Metadata:" +[62] " STATISTICS_MAXIMUM=416.06997680664" +[63] " STATISTICS_MEAN=359.85311802914" +[64] " STATISTICS_MINIMUM=305.07000732422" +[65] " STATISTICS_STDDEV=17.83169335933" ``` `NoDataValue` are encoded as -9999. @@ -663,7 +696,7 @@ no bad data values in this particular raster. > ## Challenge: Explore Raster Metadata > -> Use `GDALinfo()` to determine the following about the `NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_DSMhill.tif` file: +> Use `describe()` to determine the following about the `NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV_DSMhill.tif` file: > > 1. Does this file have the same CRS as `DSM_HARV`? > 2. What is the `NoDataValue`? @@ -677,7 +710,7 @@ no bad data values in this particular raster. > > > > -GDALinfo("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV\_DSMhill.tif") +describe("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV\_DSMhill.tif") ::::::::::::::::::::::::::::::::::::::: challenge @@ -699,7 +732,7 @@ GDALinfo("data/NEON-DS-Airborne-Remote-Sensing/HARV/DSM/HARV\_DSMhill.tif") ## More Resources -- [Read more about the `raster` package in R.](https://cran.r-project.org/package=raster) +- [Read more about the `terra` package in R.](https://cran.r-project.org/package=terra) :::::::::::::::::::::::::::::::::::::::::::::::::: diff --git a/config.yaml b/config.yaml deleted file mode 100644 index 81b4281e2..000000000 --- a/config.yaml +++ /dev/null @@ -1,95 +0,0 @@ -#------------------------------------------------------------ -# Values for this lesson. -#------------------------------------------------------------ - -# Which carpentry is this (swc, dc, lc, or cp)? -# swc: Software Carpentry -# dc: Data Carpentry -# lc: Library Carpentry -# cp: Carpentries (to use for instructor training for instance) -# incubator: The Carpentries Incubator -carpentry: 'dc' - -# Overall title for pages. -title: 'Introduction to Geospatial Raster and Vector Data with R' - -# Date the lesson was created (YYYY-MM-DD, this is empty by default) -created: ~ - -# Comma-separated list of keywords for the lesson -keywords: 'software, data, lesson, The Carpentries' - -# Life cycle stage of the lesson -# possible values: pre-alpha, alpha, beta, stable -life_cycle: 'transition-step-2' - -# License of the lesson -license: 'CC-BY 4.0' - -# Link to the source repository for this lesson -source: 'https://github.com/datacarpentry/r-raster-vector-geospatial/' - -# Default branch of your lesson -branch: 'main' - -# Who to contact if there are any issues -contact: 'team@carpentries.org' - -# Navigation ------------------------------------------------ -# -# Use the following menu items to specify the order of -# individual pages in each dropdown section. Leave blank to -# include all pages in the folder. -# -# Example ------------- -# -# episodes: -# - introduction.md -# - first-steps.md -# -# learners: -# - setup.md -# -# instructors: -# - instructor-notes.md -# -# profiles: -# - one-learner.md -# - another-learner.md - -# Order of episodes in your lesson -episodes: -- 01-raster-structure.Rmd -- 02-raster-plot.Rmd -- 03-raster-reproject-in-r.Rmd -- 04-raster-calculations-in-r.Rmd -- 05-raster-multi-band-in-r.Rmd -- 06-vector-open-shapefile-in-r.Rmd -- 07-vector-shapefile-attributes-in-r.Rmd -- 08-vector-plot-shapefiles-custom-legend.Rmd -- 09-vector-when-data-dont-line-up-crs.Rmd -- 10-vector-csv-to-shapefile-in-r.Rmd -- 11-vector-raster-integration.Rmd -- 12-time-series-raster.Rmd -- 13-plot-time-series-rasters-in-r.Rmd -- 14-extract-ndvi-from-rasters-in-r.Rmd - -# Information for Learners -learners: - -# Information for Instructors -instructors: - -# Learner Profiles -profiles: - -# Customisation --------------------------------------------- -# -# This space below is where custom yaml items (e.g. pinning -# sandpaper and varnish versions) should live - - -url: https://preview.carpentries.org/r-raster-vector-geospatial -workbench-beta: 'true' -beta-date: '2023-02-06' -old-url: 'https://datacarpentry.github.io/r-raster-vector-geospatial' diff --git a/fig/01-raster-structure-rendered-demonstrate-no-data-black-ggplot-1.png b/fig/01-raster-structure-rendered-demonstrate-no-data-black-ggplot-1.png index d57cb7578..b8a265650 100644 Binary files a/fig/01-raster-structure-rendered-demonstrate-no-data-black-ggplot-1.png and b/fig/01-raster-structure-rendered-demonstrate-no-data-black-ggplot-1.png differ diff --git a/fig/01-raster-structure-rendered-demonstrate-no-data-ggplot-1.png b/fig/01-raster-structure-rendered-demonstrate-no-data-ggplot-1.png index ae4f6ca5a..6bca43a38 100644 Binary files a/fig/01-raster-structure-rendered-demonstrate-no-data-ggplot-1.png and b/fig/01-raster-structure-rendered-demonstrate-no-data-ggplot-1.png differ diff --git a/fig/01-raster-structure-rendered-unnamed-chunk-7-1.png b/fig/01-raster-structure-rendered-unnamed-chunk-7-1.png index 594866e1c..02e7da348 100644 Binary files a/fig/01-raster-structure-rendered-unnamed-chunk-7-1.png and b/fig/01-raster-structure-rendered-unnamed-chunk-7-1.png differ diff --git a/fig/01-raster-structure-rendered-unnamed-chunk-9-1.png b/fig/01-raster-structure-rendered-unnamed-chunk-9-1.png index 29a28d478..538907f3b 100644 Binary files a/fig/01-raster-structure-rendered-unnamed-chunk-9-1.png and b/fig/01-raster-structure-rendered-unnamed-chunk-9-1.png differ diff --git a/fig/11-vector-raster-integration-rendered-compare-data-extents-1.png b/fig/11-vector-raster-integration-rendered-compare-data-extents-1.png index b2f67ecfc..24176a9b0 100644 Binary files a/fig/11-vector-raster-integration-rendered-compare-data-extents-1.png and b/fig/11-vector-raster-integration-rendered-compare-data-extents-1.png differ diff --git a/fig/11-vector-raster-integration-rendered-repeat-compare-data-extents-1.png b/fig/11-vector-raster-integration-rendered-repeat-compare-data-extents-1.png index b2f67ecfc..24176a9b0 100644 Binary files a/fig/11-vector-raster-integration-rendered-repeat-compare-data-extents-1.png and b/fig/11-vector-raster-integration-rendered-repeat-compare-data-extents-1.png differ diff --git a/fig/dc-spatial-raster/GreennessOverTime.jpg b/fig/dc-spatial-raster/GreennessOverTime.jpg old mode 100755 new mode 100644 diff --git a/fig/dc-spatial-raster/RGBSTack_1.jpg b/fig/dc-spatial-raster/RGBSTack_1.jpg old mode 100755 new mode 100644 diff --git a/fig/dc-spatial-raster/UTM_zones_18-19.jpg b/fig/dc-spatial-raster/UTM_zones_18-19.jpg old mode 100755 new mode 100644 diff --git a/fig/dc-spatial-raster/spatial_extent.png b/fig/dc-spatial-raster/spatial_extent.png old mode 100755 new mode 100644 diff --git a/md5sum.txt b/md5sum.txt index 975524714..4991324d1 100644 --- a/md5sum.txt +++ b/md5sum.txt @@ -1,26 +1,26 @@ "file" "checksum" "built" "date" -"CODE_OF_CONDUCT.md" "c93c83c630db2fe2462240bf72552548" "site/built/CODE_OF_CONDUCT.md" "2023-02-21" -"LICENSE.md" "afaf427b4223952624dcb6d8ded53ec0" "site/built/LICENSE.md" "2023-02-21" -"about.md" "2ae9402fd9f37560bd85430a98bf4847" "site/built/about.md" "2023-02-21" -"config.yaml" "f0dcd1572840ebf581f25c7ffdcc64d0" "site/built/config.yaml" "2023-02-21" -"index.md" "9906c09342f273189e212812417598f3" "site/built/index.md" "2023-02-21" -"episodes/01-raster-structure.Rmd" "c370e0ad9efd2c00f4d8bef78f80de32" "site/built/01-raster-structure.md" "2023-02-21" -"episodes/02-raster-plot.Rmd" "03796a4164add62d24ccedde469d9b14" "site/built/02-raster-plot.md" "2023-02-21" -"episodes/03-raster-reproject-in-r.Rmd" "4d9c2a4e3f9d4db6685bd4ac55bf9d28" "site/built/03-raster-reproject-in-r.md" "2023-02-21" -"episodes/04-raster-calculations-in-r.Rmd" "9cd7052c0eb42d448248863ad32c3a70" "site/built/04-raster-calculations-in-r.md" "2023-02-21" -"episodes/05-raster-multi-band-in-r.Rmd" "b8ce6c4ea2b376222f4d34171e9f9c28" "site/built/05-raster-multi-band-in-r.md" "2023-02-21" -"episodes/06-vector-open-shapefile-in-r.Rmd" "97dc525d8128e62d8d64ad731a67c28c" "site/built/06-vector-open-shapefile-in-r.md" "2023-02-21" -"episodes/07-vector-shapefile-attributes-in-r.Rmd" "fd6706b5f58308b1426993e672ea5cba" "site/built/07-vector-shapefile-attributes-in-r.md" "2023-02-21" -"episodes/08-vector-plot-shapefiles-custom-legend.Rmd" "86da76a98f58fa6d74d064fbfe4a554e" "site/built/08-vector-plot-shapefiles-custom-legend.md" "2023-02-21" -"episodes/09-vector-when-data-dont-line-up-crs.Rmd" "63642fe99ff9b37868140c75daacecf3" "site/built/09-vector-when-data-dont-line-up-crs.md" "2023-02-21" -"episodes/10-vector-csv-to-shapefile-in-r.Rmd" "ca63f43a907517ee786cec6c76150452" "site/built/10-vector-csv-to-shapefile-in-r.md" "2023-02-21" -"episodes/11-vector-raster-integration.Rmd" "271815a10c81fb075dc6c84f43d7590f" "site/built/11-vector-raster-integration.md" "2023-02-21" -"episodes/12-time-series-raster.Rmd" "426b8c0cc92621999c78edd78ec94c04" "site/built/12-time-series-raster.md" "2023-02-21" -"episodes/13-plot-time-series-rasters-in-r.Rmd" "b03ca21b7cab90e0079c79d5bc1e1b1c" "site/built/13-plot-time-series-rasters-in-r.md" "2023-02-21" -"episodes/14-extract-ndvi-from-rasters-in-r.Rmd" "66a6255a04821114c06152bdc0bb007c" "site/built/14-extract-ndvi-from-rasters-in-r.md" "2023-02-21" -"instructors/instructor-notes.md" "ee08a61434133d404ac4ac692c0f64f1" "site/built/instructor-notes.md" "2023-02-21" -"learners/discuss.md" "2758e2e5abd231d82d25c6453d8abbc6" "site/built/discuss.md" "2023-02-21" -"learners/reference.md" "4c14f896eebe1782c8c8476670475436" "site/built/reference.md" "2023-02-21" -"learners/setup.md" "fc2da78ac62877df7a54a69de2b833e8" "site/built/setup.md" "2023-02-21" -"profiles/learner-profiles.md" "60b93493cf1da06dfd63255d73854461" "site/built/learner-profiles.md" "2023-02-21" -"renv/profiles/lesson-requirements/renv.lock" "eac9c1a10d6fc15ff4267335ab0eb754" "site/built/renv.lock" "2023-02-21" +"CODE_OF_CONDUCT.md" "c93c83c630db2fe2462240bf72552548" "site/built/CODE_OF_CONDUCT.md" "2023-03-06" +"LICENSE.md" "afaf427b4223952624dcb6d8ded53ec0" "site/built/LICENSE.md" "2023-03-06" +"about.md" "2ae9402fd9f37560bd85430a98bf4847" "site/built/about.md" "2023-03-06" +"config.yaml" "f0dcd1572840ebf581f25c7ffdcc64d0" "site/built/config.yaml" "2023-03-06" +"index.md" "9906c09342f273189e212812417598f3" "site/built/index.md" "2023-03-06" +"episodes/01-raster-structure.Rmd" "28f964e013567b3d721f4ef8e252f3e0" "site/built/01-raster-structure.md" "2023-03-06" +"episodes/02-raster-plot.Rmd" "03796a4164add62d24ccedde469d9b14" "site/built/02-raster-plot.md" "2023-03-06" +"episodes/03-raster-reproject-in-r.Rmd" "4d9c2a4e3f9d4db6685bd4ac55bf9d28" "site/built/03-raster-reproject-in-r.md" "2023-03-06" +"episodes/04-raster-calculations-in-r.Rmd" "9cd7052c0eb42d448248863ad32c3a70" "site/built/04-raster-calculations-in-r.md" "2023-03-06" +"episodes/05-raster-multi-band-in-r.Rmd" "b8ce6c4ea2b376222f4d34171e9f9c28" "site/built/05-raster-multi-band-in-r.md" "2023-03-06" +"episodes/06-vector-open-shapefile-in-r.Rmd" "97dc525d8128e62d8d64ad731a67c28c" "site/built/06-vector-open-shapefile-in-r.md" "2023-03-06" +"episodes/07-vector-shapefile-attributes-in-r.Rmd" "fd6706b5f58308b1426993e672ea5cba" "site/built/07-vector-shapefile-attributes-in-r.md" "2023-03-06" +"episodes/08-vector-plot-shapefiles-custom-legend.Rmd" "86da76a98f58fa6d74d064fbfe4a554e" "site/built/08-vector-plot-shapefiles-custom-legend.md" "2023-03-06" +"episodes/09-vector-when-data-dont-line-up-crs.Rmd" "63642fe99ff9b37868140c75daacecf3" "site/built/09-vector-when-data-dont-line-up-crs.md" "2023-03-06" +"episodes/10-vector-csv-to-shapefile-in-r.Rmd" "ca63f43a907517ee786cec6c76150452" "site/built/10-vector-csv-to-shapefile-in-r.md" "2023-03-06" +"episodes/11-vector-raster-integration.Rmd" "271815a10c81fb075dc6c84f43d7590f" "site/built/11-vector-raster-integration.md" "2023-03-06" +"episodes/12-time-series-raster.Rmd" "426b8c0cc92621999c78edd78ec94c04" "site/built/12-time-series-raster.md" "2023-03-06" +"episodes/13-plot-time-series-rasters-in-r.Rmd" "b03ca21b7cab90e0079c79d5bc1e1b1c" "site/built/13-plot-time-series-rasters-in-r.md" "2023-03-06" +"episodes/14-extract-ndvi-from-rasters-in-r.Rmd" "66a6255a04821114c06152bdc0bb007c" "site/built/14-extract-ndvi-from-rasters-in-r.md" "2023-03-06" +"instructors/instructor-notes.md" "ee08a61434133d404ac4ac692c0f64f1" "site/built/instructor-notes.md" "2023-03-06" +"learners/discuss.md" "2758e2e5abd231d82d25c6453d8abbc6" "site/built/discuss.md" "2023-03-06" +"learners/reference.md" "4c14f896eebe1782c8c8476670475436" "site/built/reference.md" "2023-03-06" +"learners/setup.md" "fc2da78ac62877df7a54a69de2b833e8" "site/built/setup.md" "2023-03-06" +"profiles/learner-profiles.md" "60b93493cf1da06dfd63255d73854461" "site/built/learner-profiles.md" "2023-03-06" +"renv/profiles/lesson-requirements/renv.lock" "44cb6ee84bdb92ea19dfc8857f772920" "site/built/renv.lock" "2023-03-06" diff --git a/renv.lock b/renv.lock deleted file mode 100644 index 92352b288..000000000 --- a/renv.lock +++ /dev/null @@ -1,810 +0,0 @@ -{ - "R": { - "Version": "4.2.2", - "Repositories": [ - { - "Name": "carpentries", - "URL": "https://carpentries.r-universe.dev" - }, - { - "Name": "carpentries_archive", - "URL": "https://carpentries.github.io/drat" - }, - { - "Name": "CRAN", - "URL": "https://cran.rstudio.com" - } - ] - }, - "Packages": { - "DBI": { - "Package": "DBI", - "Version": "1.1.3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "b2866e62bab9378c3cc9476a1954226b", - "Requirements": [] - }, - "KernSmooth": { - "Package": "KernSmooth", - "Version": "2.23-20", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7", - "Requirements": [] - }, - "MASS": { - "Package": "MASS", - "Version": "7.3-58.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "e02d1a0f6122fd3e634b25b433704344", - "Requirements": [] - }, - "Matrix": { - "Package": "Matrix", - "Version": "1.5-3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "4006dffe49958d2dd591c17e61e60591", - "Requirements": [ - "lattice" - ] - }, - "R6": { - "Package": "R6", - "Version": "2.5.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "470851b6d5d0ac559e9d01bb352b4021", - "Requirements": [] - }, - "RColorBrewer": { - "Package": "RColorBrewer", - "Version": "1.1-3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "45f0398006e83a5b10b72a90663d8d8c", - "Requirements": [] - }, - "Rcpp": { - "Package": "Rcpp", - "Version": "1.0.10", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "e749cae40fa9ef469b6050959517453c", - "Requirements": [] - }, - "base64enc": { - "Package": "base64enc", - "Version": "0.1-3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "543776ae6848fde2f48ff3816d0628bc", - "Requirements": [] - }, - "bslib": { - "Package": "bslib", - "Version": "0.4.2", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "a7fbf03946ad741129dc81098722fca1", - "Requirements": [ - "base64enc", - "cachem", - "htmltools", - "jquerylib", - "jsonlite", - "memoise", - "mime", - "rlang", - "sass" - ] - }, - "cachem": { - "Package": "cachem", - "Version": "1.0.6", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "648c5b3d71e6a37e3043617489a0a0e9", - "Requirements": [ - "fastmap", - "rlang" - ] - }, - "class": { - "Package": "class", - "Version": "7.3-21", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "8ae0d4328e2eb3a582dfd5391a3663b7", - "Requirements": [ - "MASS" - ] - }, - "classInt": { - "Package": "classInt", - "Version": "0.4-8", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "298fa500d773db0845935cd73bfd9c2e", - "Requirements": [ - "KernSmooth", - "class", - "e1071" - ] - }, - "cli": { - "Package": "cli", - "Version": "3.6.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "3177a5a16c243adc199ba33117bd9657", - "Requirements": [] - }, - "colorspace": { - "Package": "colorspace", - "Version": "2.1-0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "f20c47fd52fae58b4e377c37bb8c335b", - "Requirements": [] - }, - "cpp11": { - "Package": "cpp11", - "Version": "0.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "ed588261931ee3be2c700d22e94a29ab", - "Requirements": [] - }, - "digest": { - "Package": "digest", - "Version": "0.6.31", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "8b708f296afd9ae69f450f9640be8990", - "Requirements": [] - }, - "dplyr": { - "Package": "dplyr", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "d3c34618017e7ae252d46d79a1b9ec32", - "Requirements": [ - "R6", - "cli", - "generics", - "glue", - "lifecycle", - "magrittr", - "pillar", - "rlang", - "tibble", - "tidyselect", - "vctrs" - ] - }, - "e1071": { - "Package": "e1071", - "Version": "1.7-13", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "1046cb48d06cb40c2900d8878f03a0fe", - "Requirements": [ - "class", - "proxy" - ] - }, - "ellipsis": { - "Package": "ellipsis", - "Version": "0.3.2", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077", - "Requirements": [ - "rlang" - ] - }, - "evaluate": { - "Package": "evaluate", - "Version": "0.20", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "4b68aa51edd89a0e044a66e75ae3cc6c", - "Requirements": [] - }, - "fansi": { - "Package": "fansi", - "Version": "1.0.4", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "1d9e7ad3c8312a192dea7d3db0274fde", - "Requirements": [] - }, - "farver": { - "Package": "farver", - "Version": "2.1.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "8106d78941f34855c440ddb946b8f7a5", - "Requirements": [] - }, - "fastmap": { - "Package": "fastmap", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "77bd60a6157420d4ffa93b27cf6a58b8", - "Requirements": [] - }, - "fs": { - "Package": "fs", - "Version": "1.6.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "0120e8c933bace1141e0b0d376b0c010", - "Requirements": [] - }, - "generics": { - "Package": "generics", - "Version": "0.1.3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "15e9634c0fcd294799e9b2e929ed1b86", - "Requirements": [] - }, - "ggplot2": { - "Package": "ggplot2", - "Version": "3.4.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "fd2aab12f54400c6bca43687231e246b", - "Requirements": [ - "MASS", - "cli", - "glue", - "gtable", - "isoband", - "lifecycle", - "mgcv", - "rlang", - "scales", - "tibble", - "vctrs", - "withr" - ] - }, - "glue": { - "Package": "glue", - "Version": "1.6.2", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e", - "Requirements": [] - }, - "gtable": { - "Package": "gtable", - "Version": "0.3.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "36b4265fb818f6a342bed217549cd896", - "Requirements": [] - }, - "highr": { - "Package": "highr", - "Version": "0.10", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "06230136b2d2b9ba5805e1963fa6e890", - "Requirements": [ - "xfun" - ] - }, - "htmltools": { - "Package": "htmltools", - "Version": "0.5.4", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "9d27e99cc90bd701c0a7a63e5923f9b7", - "Requirements": [ - "base64enc", - "digest", - "ellipsis", - "fastmap", - "rlang" - ] - }, - "isoband": { - "Package": "isoband", - "Version": "0.2.7", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "0080607b4a1a7b28979aecef976d8bc2", - "Requirements": [] - }, - "jquerylib": { - "Package": "jquerylib", - "Version": "0.1.4", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "5aab57a3bd297eee1c1d862735972182", - "Requirements": [ - "htmltools" - ] - }, - "jsonlite": { - "Package": "jsonlite", - "Version": "1.8.4", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "a4269a09a9b865579b2635c77e572374", - "Requirements": [] - }, - "knitr": { - "Package": "knitr", - "Version": "1.42", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "8329a9bcc82943c8069104d4be3ee22d", - "Requirements": [ - "evaluate", - "highr", - "xfun", - "yaml" - ] - }, - "labeling": { - "Package": "labeling", - "Version": "0.4.2", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "3d5108641f47470611a32d0bdf357a72", - "Requirements": [] - }, - "lattice": { - "Package": "lattice", - "Version": "0.20-45", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "b64cdbb2b340437c4ee047a1f4c4377b", - "Requirements": [] - }, - "lifecycle": { - "Package": "lifecycle", - "Version": "1.0.3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "001cecbeac1cff9301bdc3775ee46a86", - "Requirements": [ - "cli", - "glue", - "rlang" - ] - }, - "magrittr": { - "Package": "magrittr", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "7ce2733a9826b3aeb1775d56fd305472", - "Requirements": [] - }, - "memoise": { - "Package": "memoise", - "Version": "2.0.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c", - "Requirements": [ - "cachem", - "rlang" - ] - }, - "mgcv": { - "Package": "mgcv", - "Version": "1.8-41", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "6b3904f13346742caa3e82dd0303d4ad", - "Requirements": [ - "Matrix", - "nlme" - ] - }, - "mime": { - "Package": "mime", - "Version": "0.12", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "18e9c28c1d3ca1560ce30658b22ce104", - "Requirements": [] - }, - "munsell": { - "Package": "munsell", - "Version": "0.5.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "6dfe8bf774944bd5595785e3229d8771", - "Requirements": [ - "colorspace" - ] - }, - "nlme": { - "Package": "nlme", - "Version": "3.1-161", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "b49e163093c0ef46fbbfc40bcb87916c", - "Requirements": [ - "lattice" - ] - }, - "pillar": { - "Package": "pillar", - "Version": "1.8.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "f2316df30902c81729ae9de95ad5a608", - "Requirements": [ - "cli", - "fansi", - "glue", - "lifecycle", - "rlang", - "utf8", - "vctrs" - ] - }, - "pkgconfig": { - "Package": "pkgconfig", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "01f28d4278f15c76cddbea05899c5d6f", - "Requirements": [] - }, - "plyr": { - "Package": "plyr", - "Version": "1.8.8", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "d744387aef9047b0b48be2933d78e862", - "Requirements": [ - "Rcpp" - ] - }, - "proxy": { - "Package": "proxy", - "Version": "0.4-27", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "e0ef355c12942cf7a6b91a6cfaea8b3e", - "Requirements": [] - }, - "purrr": { - "Package": "purrr", - "Version": "1.0.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "d71c815267c640f17ddbf7f16144b4bb", - "Requirements": [ - "cli", - "lifecycle", - "magrittr", - "rlang", - "vctrs" - ] - }, - "rappdirs": { - "Package": "rappdirs", - "Version": "0.3.3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "5e3c5dc0b071b21fa128676560dbe94d", - "Requirements": [] - }, - "raster": { - "Package": "raster", - "Version": "3.6-14", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "2406e2380237f4dcf84e83260419895a", - "Requirements": [ - "Rcpp", - "sp", - "terra" - ] - }, - "renv": { - "Package": "renv", - "Version": "0.16.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "c9e8442ab69bc21c9697ecf856c1e6c7", - "Requirements": [] - }, - "reshape": { - "Package": "reshape", - "Version": "0.8.9", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "603d56041d7d4fa3ceb1864b3f6ee6b1", - "Requirements": [ - "plyr" - ] - }, - "rgdal": { - "Package": "rgdal", - "Version": "1.6-4", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "92183bff0bac3a711fde35a22c1bf45b", - "Requirements": [ - "sp" - ] - }, - "rlang": { - "Package": "rlang", - "Version": "1.0.6", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "4ed1f8336c8d52c3e750adcdc57228a7", - "Requirements": [] - }, - "rmarkdown": { - "Package": "rmarkdown", - "Version": "2.20", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "716fde5382293cc94a71f68c85b78d19", - "Requirements": [ - "bslib", - "evaluate", - "htmltools", - "jquerylib", - "jsonlite", - "knitr", - "stringr", - "tinytex", - "xfun", - "yaml" - ] - }, - "s2": { - "Package": "s2", - "Version": "1.1.2", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "5cca323babe990f99d5bc3402f64b905", - "Requirements": [ - "Rcpp", - "wk" - ] - }, - "sass": { - "Package": "sass", - "Version": "0.4.5", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "2bb4371a4c80115518261866eab6ab11", - "Requirements": [ - "R6", - "fs", - "htmltools", - "rappdirs", - "rlang" - ] - }, - "scales": { - "Package": "scales", - "Version": "1.2.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "906cb23d2f1c5680b8ce439b44c6fa63", - "Requirements": [ - "R6", - "RColorBrewer", - "farver", - "labeling", - "lifecycle", - "munsell", - "rlang", - "viridisLite" - ] - }, - "sf": { - "Package": "sf", - "Version": "1.0-9", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "8a348490fefb623e7935f405230900a7", - "Requirements": [ - "DBI", - "Rcpp", - "classInt", - "magrittr", - "s2", - "units" - ] - }, - "sp": { - "Package": "sp", - "Version": "1.6-0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "6674e075a078d9c3bde8ba800367347c", - "Requirements": [ - "lattice" - ] - }, - "stringi": { - "Package": "stringi", - "Version": "1.7.12", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "ca8bd84263c77310739d2cf64d84d7c9", - "Requirements": [] - }, - "stringr": { - "Package": "stringr", - "Version": "1.5.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8", - "Requirements": [ - "cli", - "glue", - "lifecycle", - "magrittr", - "rlang", - "stringi", - "vctrs" - ] - }, - "terra": { - "Package": "terra", - "Version": "1.7-3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "230c4bfbb6aae92d92ef9762b683541e", - "Requirements": [ - "Rcpp" - ] - }, - "tibble": { - "Package": "tibble", - "Version": "3.1.8", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "56b6934ef0f8c68225949a8672fe1a8f", - "Requirements": [ - "fansi", - "lifecycle", - "magrittr", - "pillar", - "pkgconfig", - "rlang", - "vctrs" - ] - }, - "tidyr": { - "Package": "tidyr", - "Version": "1.3.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "e47debdc7ce599b070c8e78e8ac0cfcf", - "Requirements": [ - "cli", - "cpp11", - "dplyr", - "glue", - "lifecycle", - "magrittr", - "purrr", - "rlang", - "stringr", - "tibble", - "tidyselect", - "vctrs" - ] - }, - "tidyselect": { - "Package": "tidyselect", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "79540e5fcd9e0435af547d885f184fd5", - "Requirements": [ - "cli", - "glue", - "lifecycle", - "rlang", - "vctrs", - "withr" - ] - }, - "tinytex": { - "Package": "tinytex", - "Version": "0.44", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "c0f007e2eeed7722ce13d42b84a22e07", - "Requirements": [ - "xfun" - ] - }, - "units": { - "Package": "units", - "Version": "0.8-1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "81433967f9b34a120a4f5a5a016cd5ed", - "Requirements": [ - "Rcpp" - ] - }, - "utf8": { - "Package": "utf8", - "Version": "1.2.3", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "1fe17157424bb09c48a8b3b550c753bc", - "Requirements": [] - }, - "vctrs": { - "Package": "vctrs", - "Version": "0.5.2", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "e4ffa94ceed5f124d429a5a5f0f5b378", - "Requirements": [ - "cli", - "glue", - "lifecycle", - "rlang" - ] - }, - "viridisLite": { - "Package": "viridisLite", - "Version": "0.4.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "62f4b5da3e08d8e5bcba6cac15603f70", - "Requirements": [] - }, - "withr": { - "Package": "withr", - "Version": "2.5.0", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "c0e49a9760983e81e55cdd9be92e7182", - "Requirements": [] - }, - "wk": { - "Package": "wk", - "Version": "0.7.1", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "141385279f2cd7faa6a3eccd8d1279dd", - "Requirements": [] - }, - "xfun": { - "Package": "xfun", - "Version": "0.37", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "a6860e1400a8fd1ddb6d9b4230cc34ab", - "Requirements": [] - }, - "yaml": { - "Package": "yaml", - "Version": "2.3.7", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "0d0056cc5383fbc240ccd0cb584bf436", - "Requirements": [] - } - } -}