2016-11-19 4 views
-1

У меня есть изображение raster (.tif) с непрерывными значениями в каждом пикселе между 0 и 1. Я хочу рассчитать площадь (может быть также несколько пикселей) в этом raster, который имеет значения в наборе интервалов значений: 0,1 - 0,2, 0,3 - 0,4, 0,7 - 0,8. Конечная цель - увидеть, какой интервал занимает большую площадь. Любые идеи, которые работают, чтобы попытаться или как подойти к нему в R?Расчет области растра с определенными значениями в R

+0

Что вы имеете в виду растр? Растровый пакет или просто матрица или? – mdsumner

+0

Ок, см. Растровый пакет, вы можете делать прямые сравнения, попробовать таблицу (значения (вырезать (r, интервалы))), но в противном случае изучить связанную функциональность, если вы еще не использовали растр. Используйте r = растр («file.tif») прочитать ваш файл – mdsumner

ответ

1

Если ras ваш растровое изображение, вы можете сделать следующее:

sum(ras[] >= 0.1 & ras[] <= 0.2) 

Возвращает количество пикселей, которые содержат значения в диапазоне 0,1 - 0,2. Если умножить это на квадрат размера ячейки:

sum(ras[] >= 0.1 & ras[] <= 0.2) * res(ras)[1]^2 

Вы получаете площадь в квадратных метрах.

Просто измените значения, чтобы отрегулировать диапазон, или напишите функцию/цикл, которая выполняет итерации по предопределенным диапазонам значений и, возможно, даже создает барьер.

Что-то вроде:

intervals <- list(c(0.1,0.2), 
        c(0.2,0.3), 
        c(0.3,0.4)) 

sapply(intervals, function(x) { 
    sum(ras[] > x[1] & ras[] <= x[2]) 
}) 
+0

Спасибо большое, что точно ответил на мой вопрос! – MIH