rgeedim DemoThis vignette shows how to extract a Google Earth Engine asset by name for an arbitrary extent and visualize it in R.
First, we load {rgeedim} and call gd_initialize(). This
is a wrapper function around geedim.Initialize() that must
be run before using the Python Google Earth Engine API.
library(rgeedim)
gd_initialize()Perhaps the simplest way to specify the target extent is
using the xmin/xmax/ymin/ymax arguments to gd_bbox(). This
function returns a Python object equivalent to GeoJSON, which
is interchangeably represented as a simple list object in
R using {reticulate}.
r <- gd_bbox(
xmin = -121,
xmax = -120.5,
ymin = 38.5,
ymax = 39
)As is standard for GeoJSON, coordinates of the bounding box
are expressed in WGS84 decimal degrees ("OGC:CRS84"). Note
that longitude, latitude (X, Y) coordinate pair order is implied.
We can find IDs of assets of interest using the Google Earth Engine data catalog: https://developers.google.com/earth-engine/datasets/catalog
To obtain an R object reference to the asset we pass the
"id" to gd_image_from_id(). For example here
we use Global
SRTM Topographic Diversity:
x <- gd_image_from_id('CSP/ERGo/1_0/Global/SRTM_topoDiversity')gd_image_from_id() will return
geedim.mask.MaskedImage and
gd_collection_from_name() will return
geedim.collection.MaskedCollection objects.
Now, we pass the image result to gd_download(). We can
specify output filename and target area as
region arguments. See gd_bbox() for examples
of making a region argument from bounding coordinates or a {terra}
SpatExtent object.
Other options that can be passed to the
BaseImage.download() method include scale
which allows warping of the result to a target resolution. Try modifying
this example to use scale=90 (~native SRTM resolution):
img <- gd_download(x, filename = 'image.tif',
region = r, scale = 900,
overwrite = TRUE, silent = FALSE
)gd_download() (invisibly) returns the
filename on successful download, which helps to “pipe” into
functions that might read the result.
So we can use the {terra} rast() function to read the
GeoTIFF gd_download() result.
library(terra)
f <- rast(img)par(mar=c(1,1,1,1))
plot(f[[1]])
# inspect object
f