Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

The main reason to want to use the ForestForesight package is to create your own datasets and use them to improve the model. Below we give instructions on how to do this.

First, let's set up our environment:

library(terra)

ff_folder <- "/path/to/ff_folder"
template_folder <- list.files(file.path(ff_folder, "preprocessed", "input"), pattern = "^[0-9]{2}[NS]_[0-9]{3}[EW]$", full.names = TRUE)[1]
template_raster <- rast(list.files(template_folder, pattern = "\\.tif$", full.names = TRUE)[1])

Reprojecting a raster dataset:

This is useful when your input raster is in a different coordinate reference system (CRS) than your template or has a different resolution or extent.

Example: Reprojecting a land cover raster

# Load a land cover raster in a different CRS
land_cover <- rast("landcover_wgs84.tif")

# Check CRS
print(crs(land_cover))
print(crs(template_raster))

# Reproject using nearest neighbor (best for categorical data)
land_cover_nearest <- project(land_cover, template_raster, method = "near")

# Reproject using cubic (often better for continuous data)
land_cover_cubic <- project(land_cover, template_raster, method = "cubic")

# Compare results
par(mfrow = c(1, 2))
plot(land_cover_nearest, main = "Nearest Neighbor")
plot(land_cover_cubic, main = "Cubic")

Selecting a single layer from a multi-layer raster:

This is common when working with satellite imagery or time series data.

Example: Selecting a single band from a Landsat image

# Load a multi-band Landsat image
landsat <- rast("landsat_image.tif")

# Check number of layers
nlyr(landsat)

# Select the Near-Infrared band (usually band 5 in Landsat 8)
nir_band <- landsat[[5]]

# Standardize to template
nir_standardized <- project(nir_band, template_raster, method = "cubic")

# Plot
plot(nir_standardized, main = "Near-Infrared Band")

Reclassifying categorical data:

This is useful for simplifying land cover classes or creating binary masks.

Example: Reclassifying a land cover raster

# Load a land cover raster
lulc <- rast("land_use_land_cover.tif")

# Create a reclassification matrix
# Let's say we want to simplify to Forest (1), Agriculture (2), and Other (3)
rcl_matrix <- matrix(c(
  1, 5, 1,   # Classes 1-5 become Forest (1)
  6, 10, 2,  # Classes 6-10 become Agriculture (2)
  11, 20, 3  # Classes 11-20 become Other (3)
), ncol = 3, byrow = TRUE)

# Reclassify
lulc_reclass <- classify(lulc, rcl_matrix)

# Standardize to template
lulc_standardized <- project(lulc_reclass, template_raster, method = "near")

# Plot
plot(lulc_standardized, main = "Reclassified Land Cover")

Rasterizing a vector dataset (presence/absence):

This is useful for creating binary masks from vector data.

Example: Creating a forest/non-forest mask from polygon data

# Load forest cover polygons
forest_polygons <- vect("forest_cover.shp")

# Rasterize (1 for forest, 0 for non-forest)
forest_raster <- rasterize(forest_polygons, template_raster, field = 1, background = 0)

# Plot
plot(forest_raster, main = "Forest Cover Mask")

Rasterizing a vector dataset with a specific attribute:

This is useful when you want to preserve numerical or categorical information from the vector data.

Example: Rasterizing administrative boundaries with population data

# Load administrative boundaries
admin_boundaries <- vect("admin_boundaries.shp")

# Assuming there's a 'population' column in the vector data
population_raster <- rasterize(admin_boundaries, template_raster, field = "population", background = 0)

# Plot
plot(population_raster, main = "Population Density")

Creating a distance raster from vector data:

This is useful for proximity analysis, such as distance to roads or water bodies.

Example: Calculating distance to roads

# Load road network
roads <- vect("road_network.shp")

# Create distance raster (in meters)
distance_to_roads <- distance(template_raster, roads)

# Convert to kilometers
distance_to_roads_km <- distance_to_roads / 1000

# Plot
plot(distance_to_roads_km, main = "Distance to Roads (km)")

Writing the new dataset to disk

The standard format is: {TILE_ID}_{DATE}_{FEATURE}.tif

Where:

  • {TILE_ID} is the geographic identifier (e.g., "00N_010E")

  • {DATE} is the availability or creation date in YYYY-MM-01 format. The day numbers should always be 01

  • {FEATURE} is a descriptive name of the raster's content. This should not contain underscores

Example: "00N_010E_2023-06-01_vegetationdensity.tif"

When creating new rasters, users should:

  1. Use the same tile identifier as the template raster.

  2. Choose an appropriate date that represents when the data becomes available or relevant.

  3. Select a clear, concise name for the feature they've created.

  4. Ensure the file is saved as a GeoTIFF (.tif extension).

The raster should be stored in the input/preprocessed/{TILE_ID} folder

  • No labels