inst/doc/geeLite.R

## ----global-options, include = FALSE------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----install-packages, include = FALSE----------------------------------------
# Check that required packages are available without installing them
required_pkgs <- c("dplyr", "leaflet", "withr", "sf")
missing_pkgs <- required_pkgs[!vapply(
  required_pkgs, requireNamespace, logical(1), quietly = TRUE)]

if (length(missing_pkgs) > 0) {
  stop(paste0("Missing packages: ", paste(missing_pkgs, collapse = ", "),
              ".\nPlease install them manually before running this vignette."))
}

# Define a temporary path for SQLite database
path_to_db <- withr::local_tempdir()

## ----setup, include = FALSE---------------------------------------------------
# Load the necessary packages
library(geeLite)
library(withr)

# Set chunk evaluation flag based on GEE authentication status
run_chunks <- geeLite:::check_rgee_ready()

# Set the time zone to UTC temporarily during vignette execution
withr::local_timezone("UTC")

## ----eval = FALSE-------------------------------------------------------------
# # Install devtools if not installed
# # install.packages("devtools")
# 
# # Install geeLite from GitHub
# devtools::install_github("mtkurbucz/geeLite")
# 
# # Install Python dependencies and setup rgee
# geeLite::gee_install()

## ----config-setup, warning = FALSE, eval = FALSE------------------------------
# # Define the path for the SQLite database
# path <- path_to_db
# 
# # Create a configuration for Somalia (SO) and Yemen (YE) to collect NDVI data
# set_config(
#   path = path,
#   regions = c("SO", "YE"),
#   source = list(
#     "MODIS/061/MOD13A2" = list(
#       "NDVI" = c("mean", "sd")
#     )
#   ),
#   resol = 3,
#   start = "2020-01-01"
# )

## ----data-collection, eval = FALSE--------------------------------------------
# # Collect the data and store it in the SQLite database
# run_geelite(path = path)

## ----config-modification, eval = FALSE----------------------------------------
# # Add more statistics to the NDVI band and include EVI data
# modify_config(
#   path = path,
#   keys = list(
#     c("source", "MODIS/061/MOD13A2", "NDVI"),
#     c("source", "MODIS/061/MOD13A2", "EVI")
#   ),
#   new_values = list(
#     c("mean", "min", "max"),
#     c("mean", "sd")
#   )
# )

## ----reading-analyzing, eval = FALSE------------------------------------------
# # Read the data from the database, aggregate to monthly frequency by default
# db <- read_db(path = path)
# 
# # Read the data with custom aggregation functions
# db <- read_db(path = path, aggr_funs = list(
#   function(x) mean(x, na.rm = TRUE),
#   function(x) sd(x, na.rm = TRUE))
# )

## ----collecting-data-example, warning = FALSE, eval = run_chunks--------------
# Define the path for the SQLite database
path <- path_to_db

# Set the configuration file for NDVI data collection
set_config(
  path = path,
  regions = c("SO", "YE"),
  source = list(
    "MODIS/061/MOD13A2" = list(
      "NDVI" = c("mean", "sd")
    )
  ),
  resol = 3,
  start = "2020-01-01"
)

# Collect the data
run_geelite(path = path)

# Read the data from the database
db <- read_db(path = path, freq = "month")

## ----visualize-ndvi-leaflet, eval = run_chunks--------------------------------
# Load necessary packages
library(leaflet)
library(dplyr)
library(sf)

# Read database and merge grid with MODIS data
sf <- merge(db$grid, db$`MODIS/061/MOD13A2/NDVI/mean`, by = "id")

# Select the date to visualize
ndvi <- sf$`2020-01-01`

# Create a color palette function based on the values
color_pal <- colorNumeric(palette = "viridis", domain = ndvi)

# Create the leaflet map
leaflet(data = sf) %>%
  addTiles() %>%                            # Add base tiles
  addPolygons(
    fillColor = color_pal(ndvi),            # Fill color
    color = "#BDBDC3",                      # Border color
    weight = 1,                             # Border weight
    opacity = 1,                            # Border opacity
    fillOpacity = 0.9                       # Fill opacity
  ) %>%
  addScaleBar(position = "bottomleft") %>%  # Add scale bar
  addLegend(
    pal = color_pal,                        # Color palette
    values = ndvi,                          # Data values to map
    title = "Mean NDVI",                    # Legend title
    position = "bottomright"                # Legend position
  )

## ----drive-mode, eval = FALSE-------------------------------------------------
# # Collect and store data using drive mode
# run_geelite(path = path, mode = "drive")

Try the geeLite package in your browser

Any scripts or data that you put into this service are public.

geeLite documentation built on Aug. 9, 2025, 1:08 a.m.