File: gridded.R

package info (click to toggle)
r-cran-sp 1%3A0.9-66-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,696 kB
  • ctags: 123
  • sloc: ansic: 1,475; sh: 6; makefile: 5
file content (72 lines) | stat: -rw-r--r-- 2,092 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
"gridded<-" = function(obj, value) {
	if (is(obj, "Spatial"))
		p4s = proj4string(obj)
	else
		p4s = as.character(NA)
	if (is.logical(value)) {
		if (is(obj, "SpatialPixelsDataFrame") || is(obj, "SpatialGridDataFrame")) {
			if (!value)
				obj = as(obj, "SpatialPointsDataFrame")
		} else if (is(obj, "SpatialPixels")) {
			if (!value)
				obj = as(obj, "SpatialPoints")
		} else if (is(obj, "SpatialPointsDataFrame")) {
			if (value)
				obj = SpatialPixelsDataFrame(obj, obj@data)
		} else if (is(obj, "SpatialPoints")) {
			if (value)
				#obj = as(obj, "SpatialGrid")
				obj = SpatialPixels(obj)
		} else
			stop("gridded<- only works for SpatialPoints[DataFrame] or SpatialGrid[DataFrame]")
	} else {
		if (is(value, "formula") || is(value, "character")) {
			if (!is(obj, "data.frame"))
				stop("data.frame expected as object")
			coordinates(obj) = value
			gridded(obj) = TRUE
		} else if (is(value, "GridTopology"))
			return(SpatialGridDataFrame(grid = SpatialGrid(grid = value), data.frame(obj)))
		else
			stop(paste("cannot deal with value of class"), class(value))
		# further deal with more complex forms of value
	}
	proj4string(obj) = CRS(p4s)
	obj
}

setAs("SpatialPoints", "SpatialPixels", function(from) {
    gridded(from) <- TRUE
    from
})

setAs("SpatialPointsDataFrame", "SpatialPixelsDataFrame", function(from) {
    gridded(from) <- TRUE
    from
})


setMethod("gridded", "Spatial", function(obj) is(obj, "SpatialPixels"))

fullgrid = function(obj) return(is(obj, "SpatialGrid"))

"fullgrid<-" = function(obj, value) {
	p4s = proj4string(obj)
	if (!is(obj, "SpatialPixels"))
		stop("fullgrid<- only works on objects of class or extending SpatialPixels")
	if (fullgrid(obj) != value) { # convert:
		if (value) { # convert to full grid
			if (is(obj, "SpatialPixelsDataFrame"))
				obj = as(obj, "SpatialGridDataFrame")
			else
				obj = as(obj, "SpatialGrid")
		} else { # convert to Pixels
			if (is(obj, "SpatialGridDataFrame"))
				obj = as(obj, "SpatialPixelsDataFrame")
			else
				obj = as(obj, "SpatialPixels")
		}
	}
	proj4string(obj) = CRS(p4s)
	obj
}