如何在R中重新缩放栅格图层?

时间:2018-11-24 06:16:43

标签: r raster

我有一张世界地图的堆叠栅格图层,我正尝试将其从-3.131791缩放到3.387701再缩放为0到1。我遵循this solution,第一种方法给我max(x)= 1,但对于某些原因min(x)变为3.127125e-08。第二种方法给我的范围是0到1,但是当我将其绘制出来时,我的栅格图层将变成一个粒状矩形,如下所示:  a grainy rectangle like this

这是我的代码:

auto& p = scoped_ptr<int>(new int(5)); // p is of type const std::unique_ptr<int>& now

以下是与原始栅格相关的参数:

## PCA ##
PCA1 <- rasterPCA(img=layers, nComp=1, spca=TRUE)

## Rescale 1 ##
rescale <- function(x, x.min = -3.131791, x.max = 3.387701, new.min = 1, new.max = 0) {
  if(is.null(x.min)) {x.min = min(x)}
  if(is.null(x.max)) {x.max = max(x)}
  new.min + (x - x.min) * ((new.max - new.min) / (x.max - x.min))
  }

PCAscaled1 <- calc(PCA1$map[[1]], rescale) #rescaled and inverted
plot(PCAscaled1)

## Rescale 2 ##
r <- PCAscaled1
r[] <- runif(ncell(PCAscaled1),-3.127125e-08,1) 
r.min=cellStats(r,"min")
r.max=cellStats(r,"max")
PCAscaled1a <- (r-r.min)/(r.max-r.min)
plot(PCAscaled1a)

我试图查看我使用的任何单个栅格图层是否是问题所在,并发现除一个以外的所有栅格图层都可以缩放为0到1。但是即使排除该栅格图层,我仍然无法将其重新缩放为0到1。我还尝试了先重新缩放所有单个栅格图层,然后将它们堆叠,但是堆叠栅格的范围并没有保持在0到1(我也尝试过重新缩放,但是仍然没有缩放)工作)。

如果有人知道怎么了,我将不胜感激!如果有其他重新缩放的方法,请告诉我,我也会尝试。

0 个答案:

没有答案