On Wed, 18 Mar 2009, David Wahlund wrote:

Hi
I got the same error trying to do something similar. For me the
problem was with the polygon data. One of the shapes was corrupted. My
tip is to try and identify what polygon renders the error and confirm
that it is OK.

Yes, the underlying problem is that the "[" method for a SpatialGrid is trying to re-assemble an object from the remaining data, and the heuristic being used to "guess" the step of the grid when many rows and columns are missing is failing. If you manage to find out which it is, you might consider sending me a copy of the objects (save()), so that I can have a look at the heuristic. In general, you can drill down to the failing function by using traceback() afterwards - here it is points2grid() that has failed.

Roger


-David Wahlund

On Wed, Mar 18, 2009 at 16:01, Wesley Roberts <wrobe...@csir.co.za> wrote:
Dear R-sig-Geo'ers

I am currently trying to extract some NDVI values from a group of NDVI images 
for specific shapefile polygons. I have 17 individual polygons and 23 NDVI 
images. I have written the script below to select individual polygons and to 
then extract the average NDVI within each polygon and store this in a list. 
Once all 23 images have been processed the script moves to the next polygon and 
so on and so on, until all polygons have been average for all 23 images. The 
code essentially extracts the NDVI data as a time series for each polygon.

Unfortunately, as everyone knows, Landsat 7 ETM has a broken scan line 
corrector meaning that all post 2003 data have large areas of missing data. In 
my pre-processing I convert these areas to nan using gdal_merge.py (I have to 
stich and subset two scenes). The code below works well until a large portion 
of a polygon lies on the nan area of the image (some polygons that only have a 
small area in the nan process fine). When this happens I get the following 
error message

Error in if (dxsd > tolerance) { : missing value where TRUE/FALSE needed

The error is related to the following command

x.clip <- temp[!is.na(overlay(temp, brede_add)),]

I have no idea how to solve this error, as a backup plan I am using r.fillnulls 
in grass to get rid of the stripes but this takes a very long time and is not 
ideal.

Any additional help or pointers would be greatly appreciated

Many thanks and kind regards

****************************************************************************************************************************************************************************************************************************************************

library(maptools)
library(rgdal)
library(spatstat)

input <- 
"/media/win-drive/wes2006/Projects/Evapotranspiration/Data/Landsat_NDVI"
maps <- data.frame((list.files(input, 
pattern=".img",full.names=FALSE)),(list.files(input, pattern=".img", 
full.names=TRUE)))
names(maps) <- c("File", "Path")
fn=data.frame(maps$File)

rastx<-284055.000
rasty<-6302475.000

Lst <- list()

brede <- readShapePoly("BredeCatchmentSites.shp", IDvar="COUNT", 
proj4string=CRS("+proj=utm +zone=34 +south +ellps=WGS84 +datum=WGS84 +units=m +no_defs"))

x=0
while (x <= 17)
{
       x<-x+1
               nfiles <- length(maps$Path)
               for (n in 1:nfiles)
               {
                  brede_add <- brede[brede$COUNT[x], ]
                  box <- as.list(as.numeric(bbox(brede_add)))
                  xstart <- (as.numeric(box[1])-rastx)/30
                  ystart <- abs((as.numeric(box[4])-rasty)/30)

                  row <- round((as.numeric(box[3])-as.numeric(box[1]))/30)
                  col <- round((as.numeric(box[4])-as.numeric(box[2]))/30)

                  temp <- readGDAL(as.character(maps$Path[n]),silent=TRUE, 
offset=c(ystart,xstart), region.dim=c(col,row))
                  fullgrid(temp)=FALSE

                  x.clip <- temp[!is.na(overlay(temp, brede_add)),]   
<<<<<<<<<<<-------------HERE IS THE PROBLEM-------------

                  a <- mean(as.data.frame(x.clip$band1))

                  Lst[n] <- list(as.numeric(a))
                  print(n)
                  x.clip<-0
                }

       data <- as.numeric(Lst)
       data2 <- cbind(data,fn)
       write.table(data, paste(brede$NBALID[x]))
       print(paste(brede$NBALID[x]))
}



Wesley Roberts MSc.
Researcher: Earth Observation (Ecosystems)
Natural Resources and the Environment
CSIR
Tel: +27 (21) 888-2490
Fax: +27 (21) 888-2693

"To know the road ahead, ask those coming back."
- Chinese proverb


--
This message is subject to the CSIR's copyright terms and conditions, e-mail 
legal notice, and implemented Open Document Format (ODF) standard.
The full disclaimer details can be found at 
http://www.csir.co.za/disclaimer.html.


and is believed to be clean.  MailScanner thanks Transtec Computers for their 
support.

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo


_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo


--
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: roger.biv...@nhh.no
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to