rgeeExtra
serves as a
wrapper for the Python package named eeExtra
. The creation
of eeExtra
was driven by a need to consolidate various
third-party GEE Javascript and Python packages and projects found on
GitHub in the same programming language and style, avoiding
dependencies. rgeeExtra
ensures a seamless integration of
eeExtra
within the R ecosystem
library(rgeeExtra)
library(rgee)
ee_Initialize() # Initialize the Google Earth Engine API connection
extra_Initialize() # Load the extended functionalities of rgeeExtra
ee$ImageCollection
ee$ImageCollection
objects in Earth Engine represent
collections of satellite images, allowing for comprehensive analysis
over time and space. The rgeeExtra
package enhances these
functionalities within R, providing tools for diverse and complex image
collection processing and analysis.
The ee$ImageCollection$Extra_preprocess
function
streamlines preprocessing of Earth Engine ImageCollections. It
efficiently performs tasks like cloud masking and pixel value
decompression, converting integer pixels to float point numbers,
essential for accurate and clear image analysis.
# Load and preprocess Sentinel-2 SR image collection.
ic <- ee$ImageCollection$Dataset$COPERNICUS_S2_SR %>%
ee$ImageCollection$Extra_preprocess()
# Define visualization parameters for RGB bands.
visParams <- list(
bands = c("B4","B3","B2"),
min = 0,
max = 0.4,
gamma = 1.5
)
# Display 100th image from preprocessed collection on map.
Map$setCenter(lon = 35.19, lat = 46.14, zoom = 10)
Map$addLayer(ic[[100]], visParams = visParams, "Preprocessed image")
The ee$ImageCollection$Extra_getOffsetParams
function is
essential for accessing offset parameters in
ee$ImageCollection
objects, crucial for understanding Earth
Engine’s lossless compression, encapsulated in the equation
IMG_Float_Values = scale * IMG_Integer_Values + offset
.
This aids in precise data conversion and analysis.
# Get offset parameters from NASA IMERG V06 image collection.
offset_params <- ee$ImageCollection("NASA/GPM_L3/IMERG_V06") %>%
ee$ImageCollection$Extra_getOffsetParams()
# Display offset parameters for each band.
offset_params
# Result:
# $HQobservationTime
# [1] 0
# $HQprecipSource
# [1] 0
# $HQprecipitation
# [1] 0
# $IRkalmanFilterWeight
# [1] 0
# $IRprecipitation
# [1] 0
# $precipitationCal
# [1] 0
# $precipitationUncal
# [1] 0
# $probabilityLiquidPrecipitation
# [1] 0
# $randomError
# [1] 0
The ee$Image$Extra_getScaleParams
function in Earth
Engine is essential for data accuracy, extracting scale parameters for
each band of an ee$Image. This supports the conversion of integer pixel
values to floating-point numbers, crucial for data integrity. The core
equation for this process is:
IMG_Float_Values = scale * IMG_Integer_Values + offset
,
ensuring precise data representation.
# Retrieve scale parameters for the NASA IMERG V06 collection.
scale_params <- ee$ImageCollection("NASA/GPM_L3/IMERG_V06") %>%
ee$Image$Extra_getScaleParams()
# Display scale parameters for each band in the image.
scale_params
# Result:
# $HQobservationTime
# [1] 1
# $HQprecipSource
# [1] 1
# $HQprecipitation
# [1] 1
# $IRkalmanFilterWeight
# [1] 1
# $IRprecipitation
# [1] 1
# $precipitationCal
# [1] 1
# $precipitationUncal
# [1] 1
# $probabilityLiquidPrecipitation
# [1] 1
# $randomError
# [1] 1
Earth Engine applies a straightforward lossless compression method:
Floating-point image values IMG_Float_Values
are calculated
from integer image values (IMG_Integer_Values) using the formula
IMG_Float_Values = scale * IMG_Integer_Values + offset
. The
ee$Image$Extra_scaleAndOffset
method is used to convert
integer pixel values back to floating-point numbers.
The ee$ImageCollection$Extra_getSTAC
function is
designed to access STAC (SpatioTemporal Asset Catalog) metadata from
ee$ImageCollection
objects. This capability is crucial for
obtaining comprehensive metadata for each band, enhancing data
understanding and usability in Earth Engine applications.
# Retrieve STAC metadata from NASA's IMERG V06 image collection.
stac_metadata <- ee$ImageCollection("NASA/GPM_L3/IMERG_V06") %>%
ee$ImageCollection$Extra_getSTAC()
# Description of the dataset
stac_metadata$description
# Spatial extent of the dataset
stac_metadata$extent$spatial$bbox
# Temporal interval of the dataset
stac_metadata$extent$temporal$interval
# Data Provider IDs
stac_metadata$`gee:provider_ids`
# Terms of use of the dataset
stac_metadata$`gee:terms_of_use`
# Type of the collection
stac_metadata$`gee:type`
# Dataset ID
stac_metadata$id
# Keywords associated with the dataset
stac_metadata$keywords
# License information
stac_metadata$license
# Links to additional resources and information
stac_metadata$links
# Providers of the dataset
stac_metadata$providers
# Citation information
stac_metadata$`sci:citation`
# Digital Object Identifier (DOI)
stac_metadata$`sci:doi`
# STAC version and extensions
stac_metadata$stac_version
stac_metadata$stac_extensions
# Summaries of band information and visualizations
stac_metadata$summaries$`eo:bands`
stac_metadata$summaries$`gee:visualizations`
# Citation information
stac_metadata$`sci:citation`
# Digital Object Identifier (DOI)
stac_metadata$`sci:doi`
# STAC version and extensions
stac_metadata$stac_version
stac_metadata$stac_extensions
# Summaries of band information and visualizations
stac_metadata$summaries$`eo:bands`
stac_metadata$summaries$`gee:visualizations`
The names
function is designed to extract property names
from an Earth Engine ImageCollection object
ee$ImageCollection
. This functionality is essential for
identifying and accessing specific properties associated with an image
collection, thereby enhancing data management and analysis in Earth
Engine.
# Filter Sentinel-2 Surface Reflectance images for Jan 1-2, 1999
ic <- ee$ImageCollection("COPERNICUS/S2_SR") %>%
ee$ImageCollection$filterDate("2018-01-01", "2019-01-02")
# Output property names of the ImageCollection
names(ic)
# Output:
# [1] "date_range" "period"
# [3] "system:visualization_0_min" "type_name"
# [5] "keywords" "system:visualization_0_bands"
# [7] "thumb" "description"
# [9] "source_tags" "system:id"
# [11] "visualization_0_max" "provider_url"
# [13] "title" "sample"
# [15] "tags" "system:visualization_0_max"
# [17] "product_tags" "provider"
# [19] "visualization_0_min" "system:version"
# [21] "system:visualization_0_name" "visualization_0_name"
# [23] "visualization_0_bands"
The [[
method allows for extraction or replacement of
specific parts within an ee$ImageCollection
. This function
is pivotal for selectively accessing or modifying images based on their
index in Earth Engine.
# Load TerraClimate dataset for 2001
terraclimate <- ee$ImageCollection("IDAHO_EPSCOR/TERRACLIMATE") %>%
ee$ImageCollection$filterDate("2001-01-01", "2002-01-01")
# Define temperature Vis parameters
maximumTemperatureVis <- list(
min = -300.0,
max = 300.0,
palette = c(
'1a3678', '2955bc', '5699ff', '8dbae9', 'acd1ff', 'caebff', 'e5f9ff',
'fdffb4', 'ffe6a2', 'ffc969', 'ffa12d', 'ff7c1f', 'ca531a', 'ff0000',
'ab0000'
)
)
# Configure map, extract property names, and add original temperature layer
Map$setCenter(71.72, 52.48, 2)
tnames <- names(terraclimate[[2]])
m1 <- Map$addLayer(terraclimate[[2]][["tmmx"]], maximumTemperatureVis)
# Modify the second image (scale by 1.4), keep original names, and add to map
terraclimate[[2]] <- terraclimate[[2]]*1.4
names(terraclimate[[2]]) <- tnames
m2 <- Map$addLayer(terraclimate[[2]][["tmmx"]], maximumTemperatureVis)
m1 | m2
The ee_utils_gif_creator
function generates a GIF from
an Earth Engine ImageCollection, ideal for RGB or RGBA images. It’s a
convenient wrapper around
ee$ImageCollection$getVideoThumbURL
, allowing for
customized animations through visualization parameters. This tool is
perfect for visualizing temporal changes or patterns in spatial
data.
The ee_utils_gif_annotate
function enhances GIFs by
adding customizable text. It acts as a wrapper for
image_annotate
, allowing users to specify text properties
like location, rotation, size, font, style, and color. This function is
ideal for labeling or providing context in GIF visualizations,
accommodating various text attributes to suit different presentation
needs.
The ee_utils_gif_save
function, a wrapper for
image_write from the magick
package, efficiently writes a
magick-image
object as a GIF file. It offers options like
format, quality, depth, and more, allowing for detailed customization of
the output GIF, making it ideal for saving and sharing Earth Engine
visualizations.
# Process the JRC/GSW1_1/YearlyHistory image collection: calculate the yearly image, apply despeckling, and set the 'year' property.
col <- ee$ImageCollection("JRC/GSW1_1/YearlyHistory")$map(function(img) {
year <- img$date()$get("year")
yearImg <- img$gte(2)$multiply(year)
despeckle <- yearImg$connectedPixelCount(15, TRUE)$eq(15)
yearImg$updateMask(despeckle)$selfMask()$set("year", year)
})
# Function to reverse the order of image collection based on 'year'.
appendReverse <- function(col) col$merge(col$sort('year', FALSE))
# ------------------------------
# 1. Basic Animation - Ucayali, Peru
# ------------------------------
# Define color codes for the background and river pixels.
bgColor = "FFFFFF" # White for background.
riverColor = "0D0887" # Blue for river.
# Create the dataset for animation.
annualCol = col$map(function(img) {
img$unmask(0)$
visualize(min = 0, max = 1, palette = c(bgColor, riverColor))$
set("year", img$get("year"))
})
basicAnimation <- appendReverse(annualCol)
# Set video parameters like dimensions, region, and frame rate.
aoi <- ee$Geometry$Rectangle(-74.327, -10.087, -73.931, -9.327)
videoArgs = list(
dimensions = 600, # Maximum dimension in pixels.
region = aoi,
framesPerSecond = 10
)
# Generate, annotate, and save the GIF animation.
animation <- ee_utils_gif_creator(basicAnimation, videoArgs, mode = "wb")
get_years <- basicAnimation$aggregate_array("year")$getInfo()
animation %>%
ee_utils_gif_annotate("Ucayali, Peru") %>%
ee_utils_gif_annotate(get_years, size = 15, location = "+90+40",
boxcolor = "#FFFFFF") %>%
ee_utils_gif_annotate("created using {magick} + {rgee}",
size = 15, font = "sans",location = "+70+20") ->
animation_wtxt
gc(reset = TRUE)
ee_utils_gif_save(animation_wtxt, path = paste0(tempfile(), ".gif"))
For academic and research purposes,
ee$ImageCollection$Extra_getCitation
retrieves the citation
information of Earth Engine objects. This function is crucial for
properly crediting the source of Earth Engine data in publications,
providing a formatted citation string for reference.
# Fetching NASA/GPM_L3/IMERG_V06 image collection and retrieving its citation.
citation <- ee$ImageCollection("NASA/GPM_L3/IMERG_V06") %>%
ee$ImageCollection$Extra_getCitation()
# Display the citation
citation
# Huffman, G.J., E.F. Stocker, D.T. Bolvin, E.J. Nelkin, Jackson Tan (2019),
# GPM IMERG Final Precipitation L3 Half Hourly 0.1 degree x 0.1 degree V06,
# Greenbelt, MD, Goddard Earth Sciences Data and Information Services Center
# (GES DISC), Accessed: [Data Access Date],
# [doi:10.5067/GPM/IMERG/3B-HH/06](https://doi.org/10.5067/GPM/IMERG/3B-HH/06)
The ee$ImageCollection$Extra_getDOI
function is designed
to extract the Digital Object Identifier (DOI) from Earth Engine
objects. This feature is essential for accessing permanent, unique
identifiers of Earth Engine datasets, facilitating data traceability and
sharing in research and publications.
The ee$ImageCollection$Extra_closest
function identifies
the closest image to a specified date within an Earth Engine
ee$ImageCollection
. It filters the collection within a
user-defined tolerance range and unit, optimizing the search process,
especially in collections with dense temporal data
# Define ROI with specified longitude and latitude.
roi <- ee$Geometry$Point(c(-77.232, -9.276))
# Retrieve closest Sentinel-2 SR image to 2021-08-15 within 5 days for ROI.
ic <- ee$ImageCollection$Dataset$COPERNICUS_S2_SR %>%
ee$ImageCollection$filterBounds(roi) %>%
ee$ImageCollection$Extra_closest("2021-08-15", 5, "day")
image <- ic[[1]]
# Set visualization parameters for the image.
visParams <- list(
bands = c("B11","B8","B2"),
min = 250,
max = 9090,
gamma = 1.5
)
# Retrieve the unique system identifier (system:id) of the image.
systemId <- image$get("system:id")$getInfo()
# Expected output: "COPERNICUS/S2_SR/20210816T152639_20210816T152842_T18LTQ"
# Display image on map centered at ROI.
Map$centerObject(roi, zoom = 10)
Map$addLayer(image, visParams = visParams)