Нужно посчитать индекс для списка растров в которых есть пиксели = 0 (бывшие облака). Если сам подсчет в целом понятен, то как прописать, то что пиксели с 0 значениями считать не надо и присвоить NA?
Мой код
Код: Выделить всё
library(terra)
library(sf)
rm(list = ls())
# Устанавливаем рабочую директорию
Data <- "/home/taras/GRIDS"
setwd(Data)
# Загружаем векторный слой с границами
dnestr_area <- vect("~/GRIDS/Dnestr_area/Dnestr_area.shp")
# Создаем папку для выходных файлов, если её нет
output_dir <- file.path(Data, "TCI_results")
if (!dir.exists(output_dir)) {
  dir.create(output_dir)
}
# Получаем список растровых файлов
rast_list <- list.files(pattern = "TEMP_\\d{4}_\\d{2}_15\\.tiff$", full.names = TRUE)
# Обрабатываем каждый файл
for (file in rast_list) {
  # Загружаем растр
  TEMP_rast <- rast(file)
  
  # Проверяем, совпадает ли проекция с векторным слоем, если нет - преобразуем
  if (!same.crs(TEMP_rast, dnestr_area)) {
    dnestr_area <- project(dnestr_area, crs(TEMP_rast))
  }
  
  # Обрезаем по границам полигона
  TEMP_crop <- crop(TEMP_rast, dnestr_area)
  TEMP_mask <- mask(TEMP_crop, dnestr_area)
  
  # Вычисляем TEMPmin и TEMPmax в пределах полигона
  TEMP_min <- -53.6567573547363
  TEMP_max <- 85.494255065918
  
  # Проверяем деление на ноль
  if (is.na(TEMP_min) || is.na(TEMP_max) || (TEMP_max - TEMP_min) == 0) {
    warning(paste("Пропущен файл", file, "- некорректные TEMPmin/TEMPmax"))
    next
  }
  
  # Вычисляем TCI
 TCI <- (TEMP_max - TEMP_mask)/ (TEMP_max - TEMP_min)
  # Формируем имя выходного файла
  TCI_filename <- sub("TEMP_", "TCI_", basename(file))
  TCI_path <- file.path(output_dir, TCI_filename)
  
  # Сохраняем результат
  writeRaster(TCI, filename = TCI_path, overwrite = TRUE)
  
  cat("Обработан:", TCI_filename, "\n")
}
cat("Готово! Все файлы сохранены в:", output_dir, "\n")