2017-01-02 3 views
1

Я использую функцию фокуса от растровый пакет v2.5-8, чтобы получить максимальное значение в окне 3x3. Я ожидаю, что ребра обоих строк/столбцов будут возвращаться как NA, вместо этого возвращается результат 9,9,9. Это верно ?Растр :: focal возвращает неверные значения

Пример:

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 

ответ

2

Вы получаете эту Ресул t, потому что «левая» и «правая» стороны (долгота = -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 
+1

Я пытался понять, что это неправильно, но никогда не ходил в проверьте территорию (CRS). Спасибо. – user1142937

Смежные вопросы