2015-01-06 6 views
0

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

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

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

Мы принимаем это в data.frame первый:

imdata <- [email protected] 

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

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

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

+0

Не тестировался 'imData [! Уменьшить ('&', imData == 0)]' и, возможно, также '!! rowSums (imData! = 0)' – akrun

+0

Я думаю, Первый - это 'imData [! Reduce (' & ', as.data.frame (imData == 0))),]' – akrun

ответ

0

Try,

imData <- imData[!(rowSums(imData) == 0),] 
+2

Вы просто берете его из моих комментариев .. – akrun

Смежные вопросы