Vegetation Cover data: 'single_cover_value' function

The 'single_cover_value' function in the 'auplotsR' package calculates Vegetation Cover Values for particular Growth Form Types and/or Height Thresholds per Site from Raw AusPlots Vegetation Point Intercept data. The 'growth_form_table' function can also be used to calculate Cover Values for all Vegetation Growth Form Types; however, 'single_cover_value' can perform these computations for:

  • Particular vegetation growth form types (i.e. for individual growth forms or any combination of growth form types)
  • Vegetation higher that a specified height threshold
  • Vegetation with any combination of growth form types and minimum height


Specifically 'single_cover_value' takes the following inputs via its arguments:

  • 'veg.PI': Raw Vegetation Point Intercept data from AusPlots. A veg.PI data frame generated by the 'get_ausplots' function (see above).
  • 'in_canopy_sky': Method used to calculate Cover. A logical value that indicates whether to use in ‘canopy sky hits’ (i.e. calculate ‘opaque canopy cover’) or ‘projected foliage cover’. The default value, ‘FALSE’, calculates ‘projected foliage cover’. To calculate ‘opaque canopy cover’ the argument must be set to ‘TRUE’.
  • 'by.growth_form': Whether to calculate Cover for a Subset by Growth Form type. A logical value that indicates whether to subset by growth form type. The default, ‘TRUE’, calculates cover for the growth form types specified in the argument ‘my.growth_forms’ (see next). If set to ‘FALSE’, cover calculations are conducted only for the vegetation sub-set by a provided Minimum Height Threshold.
  • 'my.growth_forms': Growth Form Types used to Subset Data used for the Cover Calculations. A character vector specifying the growth form types to subset the data used for the cover calculations. Any combination of growth form types can be used. The default, ‘c("Tree/Palm", "Tree Mallee")’, is set to represent trees. It applies only when ‘by.growth_form=TRUE’; otherwise, this argument is ignored and only height sub-setting is applied.
  • 'min.height': Minimum Height Threshold used to Subset Data used for the Cover Calculations. A numeric value indicating the minimum height (in metres) of the vegetation to be included in the subset of the data used for the cover calculations. A height must be always provided. The default, ‘5’, is set up for a cover of trees. It can be set to ‘0’ to ignore height and thus include any plant hit. If set to a ‘negative number’, it will return nonsensical output.


The 'single_cover_value' function returns a data frame with two columns. The data frame rows correspond to unique sites, while the two columns correspond to the unique site and the percentage cover for the requested subset of vegetation (e.g. “Tree/Palm” higher than '5' metres).

When 'by.growth_form = FALSE' and 'min.height = 0', the output is nearly the same as the green cover fraction returned by the 'fractional_cover' function (see above). The values can differ because ‘fractional_cover’ applies a ‘height rule’ in which the highest intercept at a given point is taken, whereas ‘single_cover_value’ finds any green cover. For example, when dead trees overhang green understorey the values returned by both functions can differ. For general cover purposes, using ‘fractional_cover’ is recommended. ‘single_cover_value’ is best suited to calculate cover subset by height and growth form.





EXAMPLES

Examples of the use of the 'single_cover_value' function to compute Cover Values for particular Vegetation Growth Form Types and/or Height Thresholds per Site are presented below. Examples of how to manipulate, display, and use the data generated by the 'single_cover_value' function can be found in TERN’s DSDP ‘ECOSYSTEM SURVEILLANCE (AusPlots) TUTORIAL: UNDERSTANDING AND USING THE ‘ausplotsR’ PACKAGE AND AusPlots DATA’ Tutorial. Cover values (for particular vegetation growth form types and/or height thersholds) are computed for the full set of vegetation point intersect data currently available at AusPlots. The list of data frames containing information for all currently available AusPlots sites (i.e. the 'AP.data' list) was previously created using the `get_ausplots` function (see the 'Obtaining AusPlots data: 'get_ausplots' function' Step-by-Step Guidewe use the list created in Example 4). The resulting 'Vegetation Cover (by Growth Form Type and/or Height)' data frames can be enriched with additional information as seen in the 'Manipulating AusPlots data II: Merging data frames' Step-by-Step GuideThe examples presented below cover different scenarios for sub-setting the input vegetation point intercept data frame prior to the calculation of the required vegetation cover values. Specifically, we explore how compute cover values: (1) sub-setting only by Height, (2) sub-setting only by Taxonomy, and (3) sub-setting by both Height and Taxonomy. We Combine the outputs of a single type (i.e. Height or Growth Form) into a Single Data Frame.

Boxes with grey background contain code snippets, and boxes with white background containt code (text) outputs.




Example 1: Vegetation Cover data, sub-setting only by Height


Vegetation Cover of any Growth Form Type higher than 0 meters

.

# ====================================================
# VEGETATION COVER DATA: 'single_cover_value' function
# ====================================================

# Vegetation Cover data, sub-setting only by Height
# =================================================

# Vegetation Cover of any Growth Form > 0m
# ----------------------------------------
AP.data.VC.gt0 = single_cover_value(AP.data$veg.PI, by.growth_form=FALSE, min.height=0)
class(AP.data.VC.gt0)

.

## [1] "data.frame"

.

.

dim(AP.data.VC.gt0)

.

## [1] 653   2

.

.

head(AP.data.VC.gt0)

.

##        site_unique percentCover
## 1 NSABBS0005-58582        59.50
## 2 NSABBS0006-58557        64.06
## 3 NSABHC0001-53596        26.51
## 4 NSABHC0002-53597        30.10
## 5 NSABHC0003-53598        25.29
## 6 NSABHC0004-53599        36.73

.

.

summary(AP.data.VC.gt0)

.

##            site_unique   percentCover  
##  NSABBS0005-58582:  1   Min.   : 0.10  
##  NSABBS0006-58557:  1   1st Qu.:23.86  
##  NSABHC0001-53596:  1   Median :38.81  
##  NSABHC0002-53597:  1   Mean   :41.52  
##  NSABHC0003-53598:  1   3rd Qu.:56.53  
##  NSABHC0004-53599:  1   Max.   :98.02  
##  (Other)         :647

.

.

Vegetation Cover of any Growth Form Type higher than 2 meters

.

# Vegetation Cover of any Growth Form > 2m
# ----------------------------------------
AP.data.VC.gt2 = single_cover_value(AP.data$veg.PI, by.growth_form=FALSE, min.height=2)
#class(AP.data.VC.gt0)
#dim(AP.data.VC.gt0)
head(AP.data.VC.gt0)

.

##        site_unique percentCover
## 1 NSABBS0005-58582        59.50
## 2 NSABBS0006-58557        64.06
## 3 NSABHC0001-53596        26.51
## 4 NSABHC0002-53597        30.10
## 5 NSABHC0003-53598        25.29
## 6 NSABHC0004-53599        36.73

.

.

summary(AP.data.VC.gt0)

.

##            site_unique   percentCover  
##  NSABBS0005-58582:  1   Min.   : 0.10  
##  NSABBS0006-58557:  1   1st Qu.:23.86  
##  NSABHC0001-53596:  1   Median :38.81  
##  NSABHC0002-53597:  1   Mean   :41.52  
##  NSABHC0003-53598:  1   3rd Qu.:56.53  
##  NSABHC0004-53599:  1   Max.   :98.02  
##  (Other)         :647

.

.

Combine Height Results (> 0m, > 2m, and 0 to 2m) in a Sigle Data Frame

.

# Results (> 0m, > 2m, and 0 to 2m) combined in a single Data Frame
# -----------------------------------------------------------------
AP.data.VC.Height = data.frame(site_unique=AP.data.VC.gt0$site_unique, 
                               VCF.gt0=AP.data.VC.gt0$percentCover, 
                               VCF.gt2=AP.data.VC.gt2$percentCover, 
                               VCG.0to2=(AP.data.VC.gt0$percentCover-AP.data.VC.gt2$percentCover))
head(AP.data.VC.Height)

.

##        site_unique VCF.gt0 VCF.gt2 VCG.0to2
## 1 NSABBS0005-58582   59.50   51.88     7.62
## 2 NSABBS0006-58557   64.06   59.70     4.36
## 3 NSABHC0001-53596   26.51    0.00    26.51
## 4 NSABHC0002-53597   30.10    0.00    30.10
## 5 NSABHC0003-53598   25.29    0.00    25.29
## 6 NSABHC0004-53599   36.73    0.00    36.73

.

.

summary(AP.data.VC.Height)

.

##            site_unique     VCF.gt0         VCF.gt2         VCG.0to2    
##  NSABBS0005-58582:  1   Min.   : 0.10   Min.   : 0.00   Min.   : 0.10  
##  NSABBS0006-58557:  1   1st Qu.:23.86   1st Qu.: 0.20   1st Qu.:13.17  
##  NSABHC0001-53596:  1   Median :38.81   Median : 8.00   Median :22.97  
##  NSABHC0002-53597:  1   Mean   :41.52   Mean   :14.37   Mean   :27.15  
##  NSABHC0003-53598:  1   3rd Qu.:56.53   3rd Qu.:23.07   3rd Qu.:38.20  
##  NSABHC0004-53599:  1   Max.   :98.02   Max.   :91.09   Max.   :98.02  
##  (Other)         :647

.

.

.

Example 2: Vegetation Cover data, sub-setting only by Taxonomy

.

Trees ("Tree/Palm" + "Tree Mallee", which is the default)

.

# Vegetation Cover data, sub-setting only by Taxonomy
# ===================================================

# Trees (my.growth_forms=c("Tree/Palm", "Tree Mallee"), which is the default)
# ---------------------------------------------------------------------------
AP.data.VC.trees = single_cover_value(AP.data$veg.PI, min.height=0)
#class(AP.data.VC.trees)
#dim(AP.data.VC.trees)
head(AP.data.VC.trees)

.

##        site_unique percentCover
## 1 NSABBS0005-58582        49.50
## 2 NSABBS0006-58557        58.81
## 3 NSABHC0001-53596         0.00
## 4 NSABHC0002-53597         0.00
## 5 NSABHC0003-53598         0.00
## 6 NSABHC0004-53599         0.00

.

.

summary(AP.data.VC.trees)

.

##            site_unique   percentCover  
##  NSABBS0005-58582:  1   Min.   : 0.00  
##  NSABBS0006-58557:  1   1st Qu.: 0.00  
##  NSABHC0001-53596:  1   Median : 3.27  
##  NSABHC0002-53597:  1   Mean   :11.60  
##  NSABHC0003-53598:  1   3rd Qu.:17.92  
##  NSABHC0004-53599:  1   Max.   :79.54  
##  (Other)         :647

.

.

Grasses ("Hummock grass" + "Tussock grass")

.

# Grasses (my.growth_forms=c("Hummock.grass", "Tussock.grass"))
# ------------------------------------------------------------------
AP.data.VC.grass = single_cover_value(AP.data$veg.PI, my.growth_forms=c("Hummock grass", "Tussock grass"), min.height=0)
#class(AP.data.VC.grass)
#dim(AP.data.VC.grass)
head(AP.data.VC.grass)

.

##        site_unique percentCover
## 1 NSABBS0005-58582         0.10
## 2 NSABBS0006-58557         0.40
## 3 NSABHC0001-53596         3.36
## 4 NSABHC0002-53597         6.53
## 5 NSABHC0003-53598         0.69
## 6 NSABHC0004-53599        11.88

.

.

summary(AP.data.VC.grass)

.

##            site_unique   percentCover  
##  NSABBS0005-58582:  1   Min.   : 0.00  
##  NSABBS0006-58557:  1   1st Qu.: 0.69  
##  NSABHC0001-53596:  1   Median : 7.52  
##  NSABHC0002-53597:  1   Mean   :15.45  
##  NSABHC0003-53598:  1   3rd Qu.:25.94  
##  NSABHC0004-53599:  1   Max.   :88.71  
##  (Other)         :647

.

.

Combine Growth Form Types Results (Trees & Grasses) in a Sigle Data Frame

.

# Results (trees & grass) combined in a single Data Frame
# -----------------------------------------------------------------
AP.data.VC.TreesGrass = data.frame(site_unique=AP.data.VC.trees$site_unique,
                                   VCF.trees=AP.data.VC.trees$percentCover,
                                   VCF.grass=AP.data.VC.grass$percentCover)
head(AP.data.VC.TreesGrass)

.

##        site_unique VCF.trees VCF.grass
## 1 NSABBS0005-58582     49.50      0.10
## 2 NSABBS0006-58557     58.81      0.40
## 3 NSABHC0001-53596      0.00      3.36
## 4 NSABHC0002-53597      0.00      6.53
## 5 NSABHC0003-53598      0.00      0.69
## 6 NSABHC0004-53599      0.00     11.88

.

.

summary(AP.data.VC.TreesGrass)

.

##            site_unique    VCF.trees       VCF.grass    
##  NSABBS0005-58582:  1   Min.   : 0.00   Min.   : 0.00  
##  NSABBS0006-58557:  1   1st Qu.: 0.00   1st Qu.: 0.69  
##  NSABHC0001-53596:  1   Median : 3.27   Median : 7.52  
##  NSABHC0002-53597:  1   Mean   :11.60   Mean   :15.45  
##  NSABHC0003-53598:  1   3rd Qu.:17.92   3rd Qu.:25.94  
##  NSABHC0004-53599:  1   Max.   :79.54   Max.   :88.71  
##  (Other)         :647

.

.

.

Example 3: Vegetation Cover data, sub-setting by both Height and Taxonomy

.

Trees ("Tree/Palm" + "Tree Mallee", the default) higher than 5 meters

.

# Vegetation Cover data, sub-setting by both Height and Taxonomy
# ==============================================================
# Trees (my.growth_forms=c("Tree/Palm", "Tree Mallee")) > 5 m.
# 'c("Tree/Palm", "Tree Mallee")' is the default values for 'my.growth.forms',
# so it is not really necesary
AP.data.VC.Trees.gt5 = single_cover_value(AP.data$veg.PI, 
                                          my.growth_forms=c("Tree/Palm", "Tree Mallee"), min.height=5)
#class(AP.data.VC.Trees.gt5)
#dim(AP.data.VC.Trees.gt5)
head(AP.data.VC.Trees.gt5)

.

##        site_unique percentCover
## 1 NSABBS0005-58582        46.24
## 2 NSABBS0006-58557        55.45
## 3 NSABHC0001-53596         0.00
## 4 NSABHC0002-53597         0.00
## 5 NSABHC0003-53598         0.00
## 6 NSABHC0004-53599         0.00

.

.

summary(AP.data.VC.Trees.gt5)

.

##            site_unique   percentCover   
##  NSABBS0005-58582:  1   Min.   : 0.000  
##  NSABBS0006-58557:  1   1st Qu.: 0.000  
##  NSABHC0001-53596:  1   Median : 0.590  
##  NSABHC0002-53597:  1   Mean   : 8.461  
##  NSABHC0003-53598:  1   3rd Qu.:10.400  
##  NSABHC0004-53599:  1   Max.   :70.000  
##  (Other)         :647

.

.

.