1# Authors: Robert J. Hijmans 2# Date : January 2009 3# Version 0.9 4# Licence GPL v3 5 6 7setMethod("is.na", signature(x='Raster'), 8 function(x) { 9 if (nlayers(x) > 1) { 10 r <- brick(x, values=FALSE) 11 } else { 12 r <- raster(x) 13 } 14 15 if (canProcessInMemory(r, 3)) { 16 dataType(r) <- 'LOG1S' 17 return( setValues(r, is.na(getValues(x))) ) 18 } else { 19 tr <- blockSize(x) 20 21 pb <- pbCreate(tr$n, label='is.na') 22 r <- writeStart(r, filename=rasterTmpFile(), datatype='LOG1S', format=.filetype(), overwrite=TRUE ) 23 for (i in 1:tr$n) { 24 v <- is.na( getValuesBlock(x, row=tr$row[i], nrows=tr$nrows[i]) ) 25 r <- writeValues(r, v, tr$row[i]) 26 pbStep(pb, i) 27 } 28 r <- writeStop(r) 29 pbClose(pb) 30 31 return(r) 32 } 33 } 34) 35 36 37 38setMethod("is.nan", signature(x='Raster'), 39 function(x) { 40 if (nlayers(x) > 1) { 41 r <- brick(x, values=FALSE) 42 } else { 43 r <- raster(x) 44 } 45 46 if (canProcessInMemory(r, 3)) { 47 dataType(r) <- 'LOG1S' 48 return( setValues(r, is.nan(getValues(x))) ) 49 } else { 50 tr <- blockSize(x) 51 52 pb <- pbCreate(tr$n, label='is.na') 53 r <- writeStart(r, filename=rasterTmpFile(), datatype='LOG1S', format=.filetype(), overwrite=TRUE ) 54 for (i in 1:tr$n) { 55 v <- is.nan( getValuesBlock(x, row=tr$row[i], nrows=tr$nrows[i]) ) 56 r <- writeValues(r, v, tr$row[i]) 57 pbStep(pb, i) 58 } 59 r <- writeStop(r) 60 pbClose(pb) 61 62 return(r) 63 } 64 } 65) 66 67 68 69 70setMethod("is.finite", signature(x='Raster'), 71 function(x) { 72 if (nlayers(x) > 1) { 73 r <- brick(x, values=FALSE) 74 } else { 75 r <- raster(x) 76 } 77 if (canProcessInMemory(r, 3)) { 78 dataType(r) <- 'LOG1S' 79 return( setValues(r, is.finite(getValues(x))) ) 80 } else { 81 tr <- blockSize(x) 82 83 pb <- pbCreate(tr$n, label='is.na') 84 r <- writeStart(r, filename=rasterTmpFile(), datatype='LOG1S', format=.filetype(), overwrite=TRUE ) 85 for (i in 1:tr$n) { 86 v <- is.finite( getValuesBlock(x, row=tr$row[i], nrows=tr$nrows[i]) ) 87 r <- writeValues(r, v, tr$row[i]) 88 pbStep(pb, i) 89 } 90 r <- writeStop(r) 91 pbClose(pb) 92 93 return(r) 94 } 95 } 96) 97 98 99 100 101setMethod("is.infinite", signature(x='Raster'), 102 function(x) { 103 if (nlayers(x) > 1) { 104 r <- brick(x, values=FALSE) 105 } else { 106 r <- raster(x) 107 } 108 109 if (canProcessInMemory(r, 3)) { 110 dataType(r) <- 'LOG1S' 111 return( setValues(r, is.infinite(getValues(x))) ) 112 } else { 113 tr <- blockSize(x) 114 115 pb <- pbCreate(tr$n, label='is.na') 116 r <- writeStart(r, filename=rasterTmpFile(), datatype='LOG1S', format=.filetype(), overwrite=TRUE ) 117 for (i in 1:tr$n) { 118 v <- is.infinite( getValuesBlock(x, row=tr$row[i], nrows=tr$nrows[i]) ) 119 r <- writeValues(r, v, tr$row[i]) 120 pbStep(pb, i) 121 } 122 r <- writeStop(r) 123 pbClose(pb) 124 125 return(r) 126 } 127 } 128) 129 130