栅格范围和分辨率的修改会更改像素值的总和

时间:2018-12-01 07:33:04

标签: r resolution raster r-raster extent

我希望更改栅格的分辨率和范围。我尝试以不同的方式组合扩展,聚合,重采样,但未成功……下面是我编写的代码,以获取正确的分辨率和范围,但结果是总像素值发生了变化(并且相差很大)一些案例...)。在线上关于栅格范围和分辨率的帖子很多,但我还没有解决问题。有什么方法可以改变分辨率和范围,同时将总像素值(cellStats(r,sum))的变化减到最小?非常感谢。

function sortInOrder(arr) {
  var length = arr.length;
  if(length === 0) return [];
  var result = [].concat([ arr.shift() ], [ arr.pop() ], sortInOrder(arr));
  result.length = length;
  return result;
}

var data = [
    [ 1, 2, 3, 4 ],
    [ 5, 6, 7, 8 ],
    [ 9, 10, 11, 12 ],
    [ 13, 14, 15, 16 ],
    [ 17, 18, 19, 20]
];

console.log(sortInOrder(data))

1 个答案:

答案 0 :(得分:2)

在上一段中使用最近邻居重采样应该可以解决问题:

library(raster)
#> Loading required package: sp

#sample rasters
r <- raster(extent(-180,179.9999, -55.91668 , 83.58326))
res(r)<-c(0.5/6, 0.5/6)
set.seed(1234)
r <- setValues(r, runif(ncell(r)))
cellStats(r, sum)
#> [1] 3615109

temp_extent <- raster(extent(-180,180, -90 , 90))
res(temp_extent)<-c(0.5, 0.5)

# to get resolution (0.5, 0.5)
r1 <- aggregate(r, fact=6, fun=sum)
cellStats(r1, sum)
#> [1] 3615109

# to get extent (-180,180,-90,90)
r2 <- resample(x= r1, y=temp_extent, method="ngb") 
cellStats(r2, sum)
#> [1] 3615109

all.equal(cellStats(r, sum), cellStats(r2, sum))
#> [1] TRUE

reprex package(v0.2.1)于2018-12-01创建