ODP: ODP: spsample and NA
additional to the X = as(X, "SpatialPixelsDataFrame") etc. there's a helper function that toggles between them; try: fullgrid(X) = TRUE class(X) fullgrid(X) = FALSE class(X) -- Edzer
Agustin Lobo wrote:
I understand, but how do I convert between one type and the other?
I've tried:
x <- GDAL.open("C:/ALOBO/dipu2006/STLL_VEG2006/ESTRAT3_OBAC.tif")
ESTRAT3OBAC <- asSGDF_GROD(x, output.dim=c(118,189))
GDAL.close(x)
ESTRAT3OBAC at data[ESTRAT3OBAC at data==55537]<- NA
X <- ESTRAT3OBAC[seq(1,118,by=10),seq(1,189,by=10)] #small example
summary(X)
Object of class SpatialGridDataFrame
Coordinates:
min max
x 410649.7 415399.7
y 4607910.5 4610910.5
Is projected: TRUE
proj4string : [ +proj=utm +zone=31 +ellps=intl +units=m +no_defs]
Number of points: 2
Grid attributes:
cellcentre.offset cellsize cells.dim
x 410774.7 250 19
y 4608035.5 250 12
Data attributes:
band1
Min. : 4.0
1st Qu.: 67.0
Median :156.0
Mean :125.8
3rd Qu.:163.0
Max. :237.0
NA's :119.0
Y <- SpatialPixels(X) summary(Y)
Object of class SpatialPixels
Coordinates:
min max
x 410649.7 415399.7
y 4607910.5 4610910.5
Is projected: TRUE
proj4string : [ +proj=utm +zone=31 +ellps=intl +units=m +no_defs]
Number of points: 2
So X and Y are not the same at all.
Thanks for your help.
Agus
Edzer J. Pebesma escribi?:
Not only to avoid NAs, but also to get approximately right sample size. Stratified sampling does not take place based on strata defined by attributes (map layers), but rather by dividing the area into square blocks (strata) and randomly sample (n=1) from each block. That is why the resulting sample doesn't have exactly the prescribed/requested size (although one could iterate). See also Ripley 1981 Spatial Statistics for explanation. Best wishes, -- Edzer Roger Bivand wrote:
There are two forms of sp objects for grids, SpatialPixelsDataFrame and SpatialGridDataFrame, and you need the former to avoid NAs. I am not sure how to proceed without access to a copz of zour data to see whz spsample is including the NA cells. Roger --- Roger Bivand, NHH, Helleveien 30, N-5045 Bergen, Roger.Bivand at nhh.no
________________________________
Od: Agustin Lobo w imieniu Agustin Lobo
Wys?ano: Cz 21.06.2007 09:41
Do: Roger Bivand
DW: R-sig-Geo at stat.math.ethz.ch
Temat: Re: ODP: [R-sig-Geo] spsample and NA
The test with meuse.grid works:
#copied from file:SpatialGridDataFrame-class.html
coordinates(meuse.grid) = c("x", "y") # promote
toSpatialPointsDataFrame
gridded(meuse.grid) <- TRUE # promote to SpatialPixelsDataFrame
x = as(meuse.grid, "SpatialGridDataFrame") # creates the full grid
#Now me:
> unique(x at data$soil)
[1] NA 1 2 3
> table(x at data$soil)
1 2 3
1665 1084 354
test.stsamp <- spsample(x, n = 10, "stratified")
o <- overlay(x, test.stsamp)
> o
coordinates part.a part.b dist soil ffreq
5556 (179156, 330917) 0 1 0.1030270 1 1
6670 (180039, 330336) 0 1 0.0703333 1 2
2240 (180677, 332606) 1 0 0.0975136 1 1
But don't know how to make that my raster behave in the same way. What
does it mean "cast to SpatialPixels first"? I thought that as
X comes from an imported raster it was an sp object already.
Also, there are several components in the x coming from meuse.grid:
str(x)
Formal class 'SpatialGridDataFrame' [package "sp"] with 6 slots
..@ data :'data.frame': 8112 obs. of 5 variables:
.. ..$ part.a: num [1:8112] NA NA NA NA NA NA NA NA NA NA ...
.. ..$ part.b: num [1:8112] NA NA NA NA NA NA NA NA NA NA ...
.. ..$ dist : num [1:8112] NA NA NA NA NA NA NA NA NA NA ...
.. ..$ soil : num [1:8112] NA NA NA NA NA NA NA NA NA NA ...
.. ..$ ffreq : Factor w/ 3 levels "1","2","3": NA NA NA NA NA NA NA
NA NA NA ...
how does spsample know which layer has to be used for the
stratification?
Thanks!
Agus
Roger Bivand escribi?:
I think that if you cast to SpatialPixels first, the problem will
go away, because the all-NA cases are dropped with their
coordinates. Could you try the same example with meuse.grid and see
how it goes?
Roger
---
Roger Bivand, NHH, Helleveien 30, N-5045 Bergen, Roger.Bivand at nhh.no
________________________________
Od: r-sig-geo-bounces at stat.math.ethz.ch w imieniu Agustin Lobo
Wys?ano: ?r 20.06.2007 10:11
Do: R-sig-Geo at stat.math.ethz.ch
Temat: [R-sig-Geo] spsample and NA
It is often the case, at least with raster (grid) objects,
that you are not interested on a part of the raster.
For example because it's outside a non.rectangular region of study
and/or because some types of terrain (some classes) are outside
the scope of the study. In any case, those parts can be
represented by NA.
Unfortunately, while some functions like table() would not
include the NA in the statistics, spsample includes
the NA as just another class, which implies that a fraction
of the resulting coordinates will lay on the NA
part of the raster. This makes it difficult, to get N valid (i.e., not
on NA parts) points using spsample. Is there any way around this?
For example, if I want 10 points on non-NA cells of
raster X, I would like
spsample(X, 10, "stratified")
to provide 10 positions on non-NA cells.
At the moment, I get:
x <- GDAL.open("C:/ALOBO/dipu2006/STLL_VEG2006/ESTRAT3_OBAC.tif")
ESTRAT3OBAC <- asSGDF_GROD(x, output.dim=c(100,100))
GDAL.close(x)
ESTRAT3OBAC at data[ESTRAT3OBAC at data==55537]<- NA
X <- ESTRAT3OBAC
X$cut <- as.ordered(cut(X$band1, c(0,10,100),include.lowest=TRUE))
table(X$cut)
[0,10] (10,100]
83 1961
summary(X$cut)
[0,10] (10,100] NA's
83 1961 7956
table(X$cut)
[0,10] (10,100]
83 1961
Xspsample <- spsample(X,10,"stratified")
Xo <- overlay(X,Xspsample)
summary(Xo)
Object of class SpatialPointsDataFrame
Coordinates:
min max
x1 410995.6 414954.4
x2 4608002.1 4610566.0
Is projected: TRUE
proj4string : [ +proj=utm +zone=31 +ellps=intl +units=m +no_defs]
Number of points: 9
Data attributes:
band1 cut
Min. : 67 [0,10] :0
1st Qu.: 97 (10,100]:3
Median : 159 NA's :6
Mean :24745
3rd Qu.:55537
Max. :55537
That is, I get 6 positions on NA values of X
Thanks!
Agus
--
Dr. Agustin Lobo
Institut de Ciencies de la Terra "Jaume Almera" (CSIC)
LLuis Sole Sabaris s/n
08028 Barcelona
Spain
Tel. 34 934095410
Fax. 34 934110012
email: Agustin.Lobo at ija.csic.es
http://www.ija.csic.es/gt/obster
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo at stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo
--
Dr. Agustin Lobo
Institut de Ciencies de la Terra "Jaume Almera" (CSIC)
LLuis Sole Sabaris s/n
08028 Barcelona
Spain
Tel. 34 934095410
Fax. 34 934110012
email: Agustin.Lobo at ija.csic.es
http://www.ija.csic.es/gt/obster
[[alternative HTML version deleted]]
------------------------------------------------------------------------
_______________________________________________
R-sig-Geo mailing list
R-sig-Geo at stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo