raster::focal returns 不正确的值
raster::focal returns incorrect values
我正在使用 光栅包 v2.5-8 中的焦点函数来获取 3x3 window 中的最大值。我希望 rows/columns 到 return 的边都为 NA,而不是输出 returned 是 9,9,9。这是正确的吗?
示例:
library(raster); require(rasterVis)
r <- raster(nrows=3, ncols=3)
r[] <- 1:ncell(r)
plot(r);text(r);
r.class <- focal(r, w=matrix(1,nrow=3,ncol=3), fun=max)
plot(r.class); text(r.class);
输出:
[,1] [,2] [,3]
[1,] NA NA NA
[2,] 9 9 9
[3,] NA NA NA
预期输出:
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA 9 NA
[3,] NA NA NA
你得到这个结果是因为地球的 "left" 和 "right" 边(经度 = -180 或 180)是同一个地方。
library(raster)
r <- raster(nrows=3, ncols=3)
r[] <- 1:ncell(r)
as.matrix(r)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
rf <- focal(r, w=matrix(1,nrow=3,ncol=3), fun=max)
as.matrix(rf)
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] 9 9 9
## [3,] NA NA NA
默认的 CRS 是 lonlat
crs(r)
## CRS arguments:
## +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
使用平面 CRS,您将获得预期的效果:
crs(r) <- "+proj=utm +zone=1 +datum=WGS84"
rf2 <- focal(r, w=matrix(1,nrow=3,ncol=3), fun=max)
as.matrix(rf2)
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA 9 NA
## [3,] NA NA NA
我正在使用 光栅包 v2.5-8 中的焦点函数来获取 3x3 window 中的最大值。我希望 rows/columns 到 return 的边都为 NA,而不是输出 returned 是 9,9,9。这是正确的吗?
示例:
library(raster); require(rasterVis)
r <- raster(nrows=3, ncols=3)
r[] <- 1:ncell(r)
plot(r);text(r);
r.class <- focal(r, w=matrix(1,nrow=3,ncol=3), fun=max)
plot(r.class); text(r.class);
输出:
[,1] [,2] [,3]
[1,] NA NA NA
[2,] 9 9 9
[3,] NA NA NA
预期输出:
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA 9 NA
[3,] NA NA NA
你得到这个结果是因为地球的 "left" 和 "right" 边(经度 = -180 或 180)是同一个地方。
library(raster)
r <- raster(nrows=3, ncols=3)
r[] <- 1:ncell(r)
as.matrix(r)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
rf <- focal(r, w=matrix(1,nrow=3,ncol=3), fun=max)
as.matrix(rf)
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] 9 9 9
## [3,] NA NA NA
默认的 CRS 是 lonlat
crs(r)
## CRS arguments:
## +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
使用平面 CRS,您将获得预期的效果:
crs(r) <- "+proj=utm +zone=1 +datum=WGS84"
rf2 <- focal(r, w=matrix(1,nrow=3,ncol=3), fun=max)
as.matrix(rf2)
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA 9 NA
## [3,] NA NA NA