## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----step1--------------------------------------------------------------------
library(GeoIndexR)
library(terra)

# Load synthetic 6-band multispectral image
img <- get_example_data()
print(img)
names(img)

## ----step2--------------------------------------------------------------------
# Band mapping by explicit role name
bands_map <- c(red = "red", nir = "nir", blue = "blue")

## ----step3--------------------------------------------------------------------
ndvi <- geo_index(img, "NDVI", bands = bands_map)
print(ndvi)

## ----step4--------------------------------------------------------------------
summary_tbl <- index_summary(ndvi)
print(summary_tbl)

## ----step5, fig.width = 6, fig.height = 5-------------------------------------
plot_index(ndvi, "NDVI")

## ----step6, eval = FALSE------------------------------------------------------
# writeRaster(ndvi, "NDVI_output.tif", overwrite = TRUE)

## ----step7--------------------------------------------------------------------
# Compute a custom ratio
custom_ratio <- geo_index_custom(
  img,
  formula = "(nir - red) / (nir + red)",
  bands = c(red = "red", nir = "nir"),
  name = "MyCustomNDVI"
)
print(custom_ratio)

# Compute a custom parameterized index
custom_veg <- geo_index_custom(
  img,
  formula = "G * (nir - red) / (nir + C1 * red - C2 * blue + L)",
  bands = c(blue = "blue", red = "red", nir = "nir"),
  params = list(G = 2.5, C1 = 6.0, C2 = 7.5, L = 1.0),
  name = "CustomEVI"
)
print(custom_veg)

## ----step8--------------------------------------------------------------------
# Mock integer DN raster
img_dn <- img * 10000

# Calculate EVI with proper scale factor conversion
evi_scaled <- geo_index(
  img_dn,
  "EVI",
  bands = c(blue = "blue", red = "red", nir = "nir"),
  scale_factor = 10000
)
index_summary(evi_scaled)

## ----step9--------------------------------------------------------------------
reg <- index_registry(category = "vegetation")
reg[, c("index", "name", "required_bands", "requires_reflectance")]

