Изменения растрового экстента и разрешения изменяют общую сумму значений пикселей - PullRequest
0 голосов
/ 01 декабря 2018

Я хочу изменить разрешение и размер растра.Я пытался по-разному комбинировать расширение, агрегирование, повторную выборку, но безуспешно… ниже приведен код, который я написал, чтобы получить правильное разрешение и экстент, но, как следствие, изменяются общие значения пикселей (и разница может быть довольно большой внекоторые случаи ...).В Интернете много сообщений о растровых экстентах и ​​разрешениях, но мне не удалось решить мою проблему.Есть ли способ, которым я могу изменить разрешение и экстент, минимизируя изменения в общих значениях пикселей (cellStats (r, sum))?Большое спасибо.

library(raster)

#sample rasters
r <- raster(extent(-180,179.9999, -55.91668 , 83.58326))
res(r)<-c(0.5/6, 0.5/6)
r <- setValues(r, runif(ncell(r)))
cellStats(r, sum) #3615229

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) #3615229
r1
# to get extent (-180,180,-90,90)
r2 <- resample(x= r1, y=temp_extent, method="bilinear") # what I am hoping is for NA to fill the added pixels
cellStats(r2, sum) #problem: gives different total value: 3615916
r2

1 Ответ

0 голосов
/ 01 декабря 2018

Использование повторной выборки Nearest Neighbor в последнем отрывке должно помочь:

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

Создано в 2018-12-01 пакетом Представить (v0.2.1)

...