Нужно посчитать индекс для списка растров в которых есть пиксели = 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")