среднее значение растрового файла в области шейп-файла возвращает несколько выходных данных — интерпретация результатов

Итак, у меня есть растровый файл

r <- raster('ras')

и шейп-файл

abys <- readShapeSpatial('abys')

Я рассчитал средние значения, определенные шейп-файлом, следующим методом:

r.vals<- extract(r,abys)
r.mean <- lapply(r.vals,FUN=mean)

Однако при использовании нескольких шейп-файлов, когда я возвращаю вывод, я получаю несколько результатов, например:

[[1]]
[1] 9321

[[2]]
[1] 6616

[[3]]
[1] 8348

Он должен просто вернуть тот, который я обычно получаю. Это связано с некоторыми особенностями моего шейп-файла или с моей методологией?

Спасибо за ваш вклад


person Nick Crouch    schedule 19.10.2012    source источник
comment
Я ничего не знаю об этом методе, но, может быть, в вашем шейп-файле есть три полигона? Т.е. какова длина (бездна)?   -  person Ari B. Friedman    schedule 20.10.2012
comment
да! поэтому length(abys) показывает, что есть 3 файла (досадно просто), поэтому моим решением было бы вычислить среднее значение из 3 полигонов   -  person Nick Crouch    schedule 20.10.2012


Ответы (1)


Ваша проблема в том, что в abys есть три полигона.

Лучшее решение — не усреднять результаты, а сначала объединить многоугольник:

library(rgeos)
abys.single <- gUnaryUnion(abys)
r.vals<- extract(r,abys.single)
r.mean <- lapply(r.vals,FUN=mean)
person Ari B. Friedman    schedule 19.10.2012
comment
Можно ли расширить это, чтобы удалить данные NA? Это значение равно -3000, поэтому среднее значение искажается. - person Nick Crouch; 23.10.2012
comment
На самом деле я отсортировал это, преобразовав любые значения -3000 в NA, а затем удалив их. - person Nick Crouch; 23.10.2012
comment
Вы можете подмножество SpatialPolygonsDataFrames, используя [,] или taRifx.geo::subset. - person Ari B. Friedman; 23.10.2012