From 9da3a2e335c11390c6c2dde020a9029f3d70cf6f Mon Sep 17 00:00:00 2001 From: bhass-neon Date: Sun, 24 Mar 2024 20:48:16 -0600 Subject: [PATCH] minor text updates, finish incomplete sentence --- .../Field-Spectra/explore_field_spectra.R | 4 ---- .../Field-Spectra/explore_field_spectra.Rmd | 13 ++++--------- .../Field-Spectra/explore_field_spectra.html | 11 ++++------- .../Field-Spectra/explore_field_spectra.md | 12 ++++-------- 4 files changed, 12 insertions(+), 28 deletions(-) diff --git a/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.R b/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.R index 53904d68..2b1bed92 100644 --- a/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.R +++ b/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.R @@ -29,9 +29,6 @@ names(field_spectra) ## ----list2env, results="hide"----------------------------------------------------------------------------------------------------------------------- list2env(field_spectra, .GlobalEnv) - - -## ----merge-data-metadata---------------------------------------------------------------------------------------------------------------------------- spectra_data_metadata <- joinTableNEON(fsp_spectralData,fsp_sampleMetadata) spectra_data <- merge(spectra_data_metadata,per_sample,by="spectralSampleID") @@ -285,7 +282,6 @@ print(spectra_plot + ggtitle("Spectra of PICOL Leaf Clip Sample & Corresponding ## tabl='cfc_shapefile', ## include.provisional=T, ## check.size=F) -## ## zipsByURI(crown_polys, savepath=paste0(wd,'crown_polygons'),check.size=FALSE) diff --git a/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.Rmd b/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.Rmd index f277d31e..5b44c2dc 100644 --- a/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.Rmd +++ b/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.Rmd @@ -93,9 +93,6 @@ We encourage looking at all of these tables to learn more about the data product ``` {r list2env, results="hide"} list2env(field_spectra, .GlobalEnv) -``` - -```{r merge-data-metadata} spectra_data_metadata <- joinTableNEON(fsp_spectralData,fsp_sampleMetadata) spectra_data <- merge(spectra_data_metadata,per_sample,by="spectralSampleID") ``` @@ -224,8 +221,7 @@ We can get the `availableDataUrls` of the RMNP site as follows. This step is not # view the RMNP foliar trait available data urls foliar_trait_info$siteCodes[which(foliar_trait_info$siteCodes$siteCode == 'RMNP'),c("availableDataUrls")] ``` - -Let's download the foliar trait data from 2020-07 at RMNP to obtain the precise location information of the foliar spectra samples. +Let's download the foliar trait data from 2020-07 at RMNP to obtain the precise locations of the foliar spectra samples. ```{r load-foliar-trait, results="hide"} foliar_traits <- loadByProduct(dpID='DP1.10026.001', @@ -430,18 +426,17 @@ Each reflectance pixel represents a 1m x 1m area, so it contains an average spec Also, it is important to understand that there are uncertainties in the ASD measurements as well as the airborne spectra. There may be some geographic uncertainty associated with both the airborne data (which has 0.5 m horizontal resolution), as well as with the field sample geolocations. There is also some uncertainty in the spectral data itself. For example, there is uncertainty resulting from the atmospheric correction applied when generating the reflectance data from the at-sensor-radiance. Weather conditions during the flight are important to consider as well. The Airborne Observation Platform attempts to collect the coincident overflights in clear weather, but this may not always be the case. For more on hyperspectral uncertainties and variation, please refer to the Spectrometer Mosaic ATBD (Algorithm Theoretical Basis Document). -### Incorporating the Tree Crown Polygon Shapefiles +### Incorporating Tree Crown Polygon Shapefiles -Starting in 2020 (including RMNP 2020), the foliar traits data products include shape files of the polygons of the tree crowns where the samples are taken from. The crown data are not available for all of the . The last part of the lesson demonstrates how to download the tree crown shape files, and plots the spectra of the airborne reflectance data of all the pixels inside the tree crown area. +Starting in 2020 (including RMNP 2020), the foliar traits data products include shape files of the polygons of the tree crowns where the samples are taken from. The crown shapefil data are not available for all of the canopy foliar data, but if they are available, it is recommended to use them. The last part of the lesson demonstrates how to download the tree crown shape files, and plots the spectra of the airborne reflectance data of all the pixels inside the tree crown area. -First, we can use the neonUtilities::loadByProduct and zipsByURI function to download all the tree crown polygon shapefile data, as follows. If you are not sure what crown polygon data are available, this would be the way to determine that as well. +First, we can use the `neonUtilities::loadByProduct` and `zipsByURI` functions to download all the tree crown polygon shapefile data, as follows. If you are not sure what crown polygon data are available, this would be the recommended way to determine that as well. ``` {r crown-poly, eval=FALSE, results="hide"} crown_polys <- loadByProduct(dpID='DP1.10026.001', tabl='cfc_shapefile', include.provisional=T, check.size=F) - zipsByURI(crown_polys, savepath=paste0(wd,'crown_polygons'),check.size=FALSE) ``` diff --git a/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.html b/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.html index e641d317..3471431a 100644 --- a/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.html +++ b/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.html @@ -152,7 +152,6 @@

Install R Packages

We encourage looking at all of these tables to learn more about the data product, but you can find the actual data stored in the variables: fsp_boutMetadata (contains metadata information about this sampling bout), fsp_sampleMetadata (contains relevant metadata about the individual samples), fsp_spectralData (contains information about the individual sample data), and per_sample (contains the wavelength and reflectance data). Next, we can merge the fsp_spectralData, fsp_sampleMetadata and per_sample into a single data frame as follows. For more info on joining OS tables, please refer to https://www.neonscience.org/resources/learning-hub/tutorials/neonos-duplicates-joins.

list2env(field_spectra, .GlobalEnv)
 
-
 spectra_data_metadata <- joinTableNEON(fsp_spectralData,fsp_sampleMetadata)
 
 spectra_data <- merge(spectra_data_metadata,per_sample,by="spectralSampleID")
@@ -321,7 +320,7 @@ 

Foliar Trait Data

## [[1]] ## [1] "https://data.neonscience.org/api/v0/data/DP1.10026.001/RMNP/2020-07"
-

Let’s download the foliar trait data from 2020-07 at RMNP to obtain the precise location information of the foliar spectra samples.

+

Let’s download the foliar trait data from 2020-07 at RMNP to obtain the precise locations of the foliar spectra samples.

foliar_traits <- loadByProduct(dpID='DP1.10026.001',
                                site='RMNP',
                                startdate='2020-07',
@@ -553,9 +552,9 @@ 

Plotting Leaf-Clip and Ai Why is there a difference between the leaf-clip spectra and the remotely-sensed spectra of the corresponding pixel?

Each reflectance pixel represents a 1m x 1m area, so it contains an average spectra of all the vegetation and non-vegetation that are contained in that area. For example, a single pixel could contain the reflectance of a mix of leaves as well as branches, and any gaps in the tree canopy (eg. the ground under the tree). This averaging is called “spectral mixing” and you can perform “spectral un-mixing” to decompose an average spectra into it’s component parts. These leaf clip spectra can be used as “end-members”, in classification applications, for example.

Also, it is important to understand that there are uncertainties in the ASD measurements as well as the airborne spectra. There may be some geographic uncertainty associated with both the airborne data (which has 0.5 m horizontal resolution), as well as with the field sample geolocations. There is also some uncertainty in the spectral data itself. For example, there is uncertainty resulting from the atmospheric correction applied when generating the reflectance data from the at-sensor-radiance. Weather conditions during the flight are important to consider as well. The Airborne Observation Platform attempts to collect the coincident overflights in clear weather, but this may not always be the case. For more on hyperspectral uncertainties and variation, please refer to the Spectrometer Mosaic ATBD (Algorithm Theoretical Basis Document).

-

Incorporating the Tree Crown Polygon Shapefiles

-

Starting in 2020 (including RMNP 2020), the foliar traits data products include shape files of the polygons of the tree crowns where the samples are taken from. The crown data are not available for all of the . The last part of the lesson demonstrates how to download the tree crown shape files, and plots the spectra of the airborne reflectance data of all the pixels inside the tree crown area.

-

First, we can use the neonUtilities::loadByProduct and zipsByURI function to download all the tree crown polygon shapefile data, as follows. If you are not sure what crown polygon data are available, this would be the way to determine that as well.

+

Incorporating Tree Crown Polygon Shapefiles

+

Starting in 2020 (including RMNP 2020), the foliar traits data products include shape files of the polygons of the tree crowns where the samples are taken from. The crown shapefil data are not available for all of the canopy foliar data, but if they are available, it is recommended to use them. The last part of the lesson demonstrates how to download the tree crown shape files, and plots the spectra of the airborne reflectance data of all the pixels inside the tree crown area.

+

First, we can use the neonUtilities::loadByProduct and zipsByURI functions to download all the tree crown polygon shapefile data, as follows. If you are not sure what crown polygon data are available, this would be the recommended way to determine that as well.

crown_polys <- loadByProduct(dpID='DP1.10026.001', 
 
                           tabl='cfc_shapefile', 
@@ -564,8 +563,6 @@ 

Incorporating the Tree check.size=F) - - zipsByURI(crown_polys, savepath=paste0(wd,'crown_polygons'),check.size=FALSE)

Next we can read in the polygon data as a terra SpatialVec object as follows. Display the coordinate reference system (CRS) information. You can un-comment the last line to display more detailed info about the CRS.

diff --git a/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.md b/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.md index c436cf3b..f580399d 100644 --- a/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.md +++ b/tutorials/R/AOP/Hyperspectral/Field-Spectra/explore_field_spectra.md @@ -106,7 +106,6 @@ We encourage looking at all of these tables to learn more about the data product list2env(field_spectra, .GlobalEnv) - spectra_data_metadata <- joinTableNEON(fsp_spectralData,fsp_sampleMetadata) spectra_data <- merge(spectra_data_metadata,per_sample,by="spectralSampleID") @@ -310,8 +309,7 @@ We can get the `availableDataUrls` of the RMNP site as follows. This step is not ## [[1]] ## [1] "https://data.neonscience.org/api/v0/data/DP1.10026.001/RMNP/2020-07" - -Let's download the foliar trait data from 2020-07 at RMNP to obtain the precise location information of the foliar spectra samples. +Let's download the foliar trait data from 2020-07 at RMNP to obtain the precise locations of the foliar spectra samples. foliar_traits <- loadByProduct(dpID='DP1.10026.001', @@ -584,11 +582,11 @@ Each reflectance pixel represents a 1m x 1m area, so it contains an average spec Also, it is important to understand that there are uncertainties in the ASD measurements as well as the airborne spectra. There may be some geographic uncertainty associated with both the airborne data (which has 0.5 m horizontal resolution), as well as with the field sample geolocations. There is also some uncertainty in the spectral data itself. For example, there is uncertainty resulting from the atmospheric correction applied when generating the reflectance data from the at-sensor-radiance. Weather conditions during the flight are important to consider as well. The Airborne Observation Platform attempts to collect the coincident overflights in clear weather, but this may not always be the case. For more on hyperspectral uncertainties and variation, please refer to the Spectrometer Mosaic ATBD (Algorithm Theoretical Basis Document). -### Incorporating the Tree Crown Polygon Shapefiles +### Incorporating Tree Crown Polygon Shapefiles -Starting in 2020 (including RMNP 2020), the foliar traits data products include shape files of the polygons of the tree crowns where the samples are taken from. The crown data are not available for all of the . The last part of the lesson demonstrates how to download the tree crown shape files, and plots the spectra of the airborne reflectance data of all the pixels inside the tree crown area. +Starting in 2020 (including RMNP 2020), the foliar traits data products include shape files of the polygons of the tree crowns where the samples are taken from. The crown shapefil data are not available for all of the canopy foliar data, but if they are available, it is recommended to use them. The last part of the lesson demonstrates how to download the tree crown shape files, and plots the spectra of the airborne reflectance data of all the pixels inside the tree crown area. -First, we can use the neonUtilities::loadByProduct and zipsByURI function to download all the tree crown polygon shapefile data, as follows. If you are not sure what crown polygon data are available, this would be the way to determine that as well. +First, we can use the `neonUtilities::loadByProduct` and `zipsByURI` functions to download all the tree crown polygon shapefile data, as follows. If you are not sure what crown polygon data are available, this would be the recommended way to determine that as well. crown_polys <- loadByProduct(dpID='DP1.10026.001', @@ -599,8 +597,6 @@ First, we can use the neonUtilities::loadByProduct and zipsByURI function to dow check.size=F) - - zipsByURI(crown_polys, savepath=paste0(wd,'crown_polygons'),check.size=FALSE) Next we can read in the polygon data as a terra SpatialVec object as follows. Display the coordinate reference system (CRS) information. You can un-comment the last line to display more detailed info about the CRS.