Удаление строк для объекта SpatialGridDataFrame при выполнении определенных условий

Я работаю с определенными изображениями, которые могут иметь несколько полос/каналов (см. мультиспектральные и гиперспектральные изображения дистанционного зондирования).

Предположим, что мы заранее не знаем, сколько полос существует в данном изображении. Все каналы именуются как "band1", "band2"... и так далее. Для чтения изображения мы используем

library(sp)
library(rgdal)
image <- readGDAL("image.tif')

Сначала мы принимаем это в data.frame:

imdata <- image@data

Могут быть определенные ситуации, когда содержимое всех полос для конкретного «пикселя» равно нулю. Следовательно, если это четырехканальное изображение, мы можем удалить эти строки из data.frame, используя:

imData <- imData[!((imData$band1==0) & (imData$band2==0) & (imData$band3 == 0) & (imData$band4 == 0)),]

Но предположим, что в моем изображении 256 каналов. Как удалить такие строки из набора данных?


person Indian    schedule 06.01.2015    source источник
comment
Не проверено imData[!Reduce('&' , imData==0),] и, возможно, также !!rowSums(imData!=0)   -  person akrun    schedule 06.01.2015
comment
Я думаю, что первый imData[!Reduce(&,as.data.frame(imData==0))),]   -  person akrun    schedule 06.01.2015


Ответы (1)


Пытаться,

imData <- imData[!(rowSums(imData) == 0),]
person Indian    schedule 06.01.2015