Package 'gfcanalysis'

Title: Tools for Working with Hansen et al. Global Forest Change Dataset
Description: Supports analyses using the Global Forest Change dataset released by Hansen et al. gfcanalysis was originally written for the Tropical Ecology Assessment and Monitoring (TEAM) Network. For additional details on the Global Forest Change dataset, see: Hansen, M. et al. 2013. "High-Resolution Global Maps of 21st-Century Forest Cover Change." Science 342 (15 November): 850-53. The forest change data and more information on the product is available at <http://earthenginepartners.appspot.com>.
Authors: Alex Zvoleff [aut], Matthew Cooper [cre]
Maintainer: Matthew Cooper <[email protected]>
License: GPL (>= 3)
Version: 1.8.0
Built: 2024-11-02 03:41:54 UTC
Source: https://github.com/azvoleff/gfcanalysis

Help Index


Plot an animation of forest change within a given area of interest (AOI)

Description

Produces an animation of annual forest change in the area bounded by the extent of a given AOI, or AOIs. The AOI polygon(s) is(are) also plotted on the image. The gfc_stack must be pre-calculated using the annual_stack function. The animation can be either an animated GIF (if type is set to 'gif') or a series of '.png' files with a corresponding '.html' webpage showing a simple viewer and the forest change animation (if type is set to 'html'). The HTML option is recommended as it requires no additional software to produce it. The animated GIF option will only work if the imagemagicK software package is installed beforehand (this is done outside of R).

Usage

animate_annual(
  aoi,
  gfc_stack,
  out_dir = getwd(),
  out_basename = "gfc_animation",
  site_name = "",
  type = "html",
  height = 3,
  width = 3,
  dpi = 300,
  dataset = "GFC-2022-v1.10"
)

Arguments

aoi

one or more AOI polygons as a SpatialPolygonsDataFrame or sf object. If there is a 'label' field in the dataframe, it will be used to label the polygons in the plots. If the AOI is not in the WGS84 geographic coordinate system, it will be reprojected to WGS84.

gfc_stack

a GFC product subset as a RasterStack (as output by annual_stack)

out_dir

folder for animation output

out_basename

basename to use when naming animation files

site_name

name of the site (used in making title)

type

type of animation to make. Can be either "gif" or "html"

height

desired height of the animation GIF in inches

width

desired width of the animation GIF in inches

dpi

dots per inch for the output image

dataset

which version of the Hansen data to use annual_stack was run

See Also

annual_stack


Generate an annual stack of forest change from GFC product

Description

Uses thresholded GFC data as output by threshold_gfc to make an annualized layer stack of forest change. See Details for the class codes used in the annual raster stack. The animate_annual function can be used to produce an animation of forest change from the generated layer stack.

Usage

annual_stack(gfc, dataset = "GFC-2022-v1.10")

Arguments

gfc

thresholded extract of GFC product for a given AOI (see threshold_gfc)

dataset

which version of the Hansen data to use

Details

The output raster stack uses the following codes to describe forest change at each pixel:

Nodata 0
Forest 1
Non-forest 2
Forest loss 3
Forest gain 4
Forest loss and gain 5
Water 6

See Also

threshold_gfc, animate_annual


Calculate the GFC product tiles needed for a given AOI

Description

Intersects an AOI with the GFC product grid to determine what tiles are need to cover the AOI.

Usage

calc_gfc_tiles(aoi)

Arguments

aoi

an Area of Interest (AOI) as a SpatialPolygons* or sf object. If the AOI is not in the WGS84 geographic coordinate system, it will be reprojected to WGS84.

Value

a sf of the GFC tiles needed to cover the AOI

Examples

tiles <- calc_gfc_tiles(test_poly)
plot(tiles)
plot(test_poly, lt=2, add=TRUE)

Calculates the pixel area for each line of a raster

Description

Calculates the pixel area for each line of a raster

Usage

calc_pixel_areas(x)

Arguments

x

a Raster* object

Value

a vector with the area in square meters of the pixels in each line of x (vector has length equal to nrow(x))


Check if aoi is an sf or sp type object If sp, convert to sf and return

Description

Check if aoi is an sf or sp type object If sp, convert to sf and return

Usage

check_aoi(aoi)

Arguments

aoi

the area of interest object


Download a set of GFC tiles

Description

This function first checks whether each tile in a set GFC product tiles is present locally, and that local file sizes match the file sizes of the files available on the Google server hosting the GFC product. Next, the function downloads all tiles that either are not present locally, or that are present but have file sizes differing from the file on the Google server.

Usage

download_tiles(
  tiles,
  output_folder,
  images = c("treecover2000", "lossyear", "gain", "datamask"),
  dataset = "GFC-2022-v1.10"
)

Arguments

tiles

sf with GFC product tiles to download, as calculated by the calc_gfc_tiles function.

output_folder

the folder to save output data in

images

which images to download. Can be any of 'treecover2000', 'loss', 'gain', 'lossyear', 'datamask', 'first', and 'last'.

dataset

which version of the Hansen data to use

See Also

extract_gfc

Examples

## Not run: 
output_folder <- 'H:/Data/TEAM/GFC_Product'
tiles <- calc_gfc_tiles(test_poly)
download_tiles(tiles, output_folder)

## End(Not run)

Extracts GFC data for a given AOI

Description

This function extracts a dataset for a given AOI from a series of pre-downloaded GFC tiles. The download_tiles function should be used beforehand in order to download the necessary data to the specified data_folder. Note that the output file format is fixed as GeoTIFF with LZW compression.

Usage

extract_gfc(
  aoi,
  data_folder,
  to_UTM = FALSE,
  stack = "change",
  dataset = "GFC-2022-v1.10",
  ...
)

Arguments

aoi

an Area of Interest (AOI) as a sf object. If the AOI is not in WGS 1984 (EPSG:4326), it will be reprojected to WGS84.

data_folder

folder where downloaded GFC product tiles are located (see download_tiles function.

to_UTM

if TRUE, then reproject the output into the UTM zone of the AOI centroid. If FALSE, retain the original WGS84 projection of the GFC tiles.

stack

the layers to extract from the GFC product. Defaults to "change". See Details.

dataset

which version of the Hansen data to use

...

additional arguments as for writeRaster, such as filename, or overwrite.

Details

The stack option can be "change" (the default), "first", or "last". When set to "change", the forest change layers (treecover2000, loss, gain, lossyear, and datamask) will be extracted for the given aoi. The "first" and "last" options will mosaic the 2000 or last year composite top of atmosphere (TOA) reflectance images (respectively).

Value

RasterStack with GFC layers

See Also

download_tiles, annual_stack, gfc_stats


Produce a table of forest cover change statistics for a given AOI

Description

For a given AOI, this function produces two tables: an annual forest loss table (in hectares, by default), and a table specifying 1) the total area of pixels that experienced forest gain and, 2) the total area of pixels that experienced both loss and gain over the full period (from 2000 through the end date of the specific product you are using, depending on the chosen dataset). Note that forest gain and combined loss and gain are not available in the GFC product on an annualized basis. Use extract_gfc to extract the GFC data for the AOI, and threshold it using threshold_gfc prior to running this function.

Usage

gfc_stats(aoi, gfc, scale_factor = 1e-04, dataset = "GFC-2022-v1.10")

Arguments

aoi

one or more Area of Interest (AOI) polygon(s) as a SpatialPolygons*. See Details.

gfc

extract of GFC product for a given AOI (see extract_gfc), recoded using threshold_gfc.

scale_factor

how to scale the output data (from meters). Defaults to .0001 for output in hectares.

dataset

which version of the Hansen data to use

Details

If theaoi object is not in the coordinate system of gfc, it will be reprojected. If there is a "label" attribute, it will be used to label the output statistics. Otherwise, unique names ("AOI 1", "AOI 2", etc.) will be generated and used to label the output. If multiple AOIs share the same labels, statistics will be provided for the union of these AOIs.

Value

list with two elements "loss_table", a data.frame with statistics on forest loss, and "gain_table", with the area of forest gain, and area that experienced both loss and gain. The units of the output are hectares (when scale_factor is set to .0001).

See Also

extract_gfc, threshold_gfc


Grid of tiles used for the GFC product

Description

Contains a SpatialPolygonsDataFrame with a 10 x 10 degree grid in WGS84 coordinate system, covering the area from 180W-180E and 80N-60S, the tile system used by the GFC Product.


Plot forest change (relative to 2000) for a given year

Description

Plots a single layer of forest change from a layer stack output by annual_stack.

Usage

plot_gfc(fchg, aoi, title_string = "", size_scale = 1, maxpixels = 50000)

Arguments

fchg

a forest change raster layer (a single layer of the layer stack output by annual_stack

aoi

one or more AOI polygons as a SpatialPolygonsDataFrame or sf object. If there is a 'label' field in the dataframe, it will be used to label the polygons in the plots. If the AOI is not in WGS 1984 (EPSG:4326), it will be reprojected to WGS84.

title_string

the plot title

size_scale

a number used to scale the size of the plot text

maxpixels

the maximum number of pixels from fchg to use in plotting

See Also

annual_stack, animate_annual


Scales a raster by the area of each pixel in meters

Description

Calculates the area (in meters) of each pixel in a raster, scales the value of each pixel by the area, applies the desired scale factor, and returns the result as a RasterLayer. Useful for calculating class areas based on a classified raster in a geographic coordinate system. Assumes that raster is not rotated (latitudes of every pixel in a given row are identical). Processes block by block to support handling very large rasters.

Usage

scale_by_pixel_area(
  x,
  filename,
  datatype,
  pixel_areas = NULL,
  scale_factor = 1
)

Arguments

x

a Raster* object

filename

(optional) filename for output raster

datatype

(optional) datatype for output raster see dataType NOT YET SUPPORTED

pixel_areas

a vector giving the area of each cell in a single column of the raster. See calc_pixel_areas. If NULL, this vector will be calculated based on the coordinate system of x.

scale_factor

a value to scale the results by

Value

RasterLayer with pixel areas (in meters)


Scale the first or last top of atmosphere (TOA) reflectance images

Description

This function applies the scale factors provided by Hansen et al. to rescale the first and last TOA reflectance images from integer to floating point. The following scale factors are used: band 3, 508; band 4, 254; band 5, 363; band 7, 423. The output datatype is FLT4S.

Usage

scale_toar(x, ...)

Arguments

x

the "first" or "last" image for a given aoi as a RasterStack (see stack option for extract_gfc).

...

additional arguments as for writeRaster, such as filename, or overwrite.

Value

RasterStack of TOA reflectance values

See Also

extract_gfc


Polygon outlining TEAM site in Caxiuanã, Brazil

Description

Contains a SpatialPolygonsDataFrame with a simplified polygon of the area within the Tropical Ecology Assessment and Monitoring (TEAM) network site in Caxiuanã, Brazil.


Threshold the GFC product

Description

Uses the GFC data output from extract_gfc to make an thresholded layer stack with five layers: treecover2000, loss, gain, lossyear, and datamask layers. See Details for the coding used in each layer. Note that the output file format is fixed as GeoTIFF with LZW compression.

Usage

threshold_gfc(gfc, forest_threshold = 25, ...)

Arguments

gfc

extract of GFC product for a given AOI (see extract_gfc)

forest_threshold

percent woody vegetation to use as a threshold for mapping forest/non-forest

...

additional arguments as for writeRaster, such as filename or overwrite

Details

The output uses the following codes to describe forest change at each pixel:

Band 1 (forest2000)

Non-forest 0
Forest 1

Band 2 (lossyear)

No loss 0
Loss in 2001 1
Loss in 2002 2
Loss in 2003 3
Loss in 2004 4
Loss in 2005 5
Loss in 2006 6
Loss in 2007 7
Loss in 2008 8
Loss in 2009 9
Loss in 2010 10
Loss in 2011 11
Loss in 2012 12
Loss in 2013 13
Loss in 2014 14

Note that lossyear is zero for pixels that were not forested in 2000, and that the 2013 and 2014 loss layers are not available in the original 2013 Hansen dataset (the 2013 loss layer is available in the 2014 and 2015 updates, while the 2014 loss layer is available in the 2015 update only).

Band 3 (gain)

No gain 0
Gain 1

Note that gain is zero for pixels that were forested in 2000

Band 4 (lossgain)

No loss and gain 0
Loss and gain 1

Note that loss and gain is difficult to interpret from the thresholded product, as the original GFC product does not provide information on the sequence (loss then gain, or gain then loss), or the levels of canopy cover reached prior to loss (for gain then loss) or after loss (for loss then gain pixels). The layer is calculated here as: lossgain <- gain & (lossyear != 0), where loss year and gain are the original GFC gain and lossyear layers, respectively.

Band 5 (datamask)

No data 0
Land 1
Water 2

Value

RasterBrick with thresholded GFC product (see details above)

See Also

extract_gfc


Given a spatial object, calculate the UTM zone of the centroid

Description

For a line or polygon, the UTM zone of the centroid is given, after reprojecting the object into WGS-84.

Usage

utm_zone(x, y, proj4string = FALSE)

## S4 method for signature 'numeric,numeric'
utm_zone(x, y, proj4string = FALSE)

## S4 method for signature 'Spatial,missing'
utm_zone(x, proj4string)

Arguments

x

a longitude (with western hemisphere longitudes negative), or a Spatial object

y

a latitude (with southern hemisphere latitudes negative), or missing (if x is a Spatial object)

proj4string

if FALSE (default) return the UTM zone as a string (for example "34S" for UTM Zone 34 South). If TRUE, return a proj4string using the EPSG code as an initialization string.

Details

Based on the code on gis.stackexchange.com at http://bit.ly/17SdcuN.

Examples

utm_zone(45, 10)
utm_zone(45, -10)
utm_zone(45, 10, proj4string=TRUE)