У меня есть объект с именем cr1, который представляет собой большой SpatialPixelsDataFrame озера. Вот ссылка на файл: https://www.dropbox.com/s/uuvlmxmri144hp2/macrosmall.rdata?dl=0
Я думаю, что каждый пиксель имеет размер ячейки 1 м x 1 м, однако я думаю, что этот атрибут нигде не указан. «макро» — измеренная высота подводных макрофитов в озере. Структура выглядит так.
Formal class 'SpatialPixelsDataFrame' [package "sp"] with 7 slots
..@ data :'data.frame': 252234 obs. of 1 variable:
.. ..$ macro: num [1:252234] 0.0468 0.0518 0.0445 0.046 0.0477 ...
..@ coords.nrs : num(0)
..@ grid :Formal class 'GridTopology' [package "sp"] with 3 slots
.. .. ..@ cellcentre.offset: Named num [1:2] 3404494 5872334
.. .. .. ..- attr(*, "names")= chr [1:2] "x" "y"
.. .. ..@ cellsize : Named num [1:2] 1 1
.. .. .. ..- attr(*, "names")= chr [1:2] "x" "y"
.. .. ..@ cells.dim : Named int [1:2] 776 536
.. .. .. ..- attr(*, "names")= chr [1:2] "x" "y"
..@ grid.index : int [1:252234] 415333 415334 415335 415336 415337 415338
415339 414554 414555 414556 ...
..@ coords : num [1:252234, 1:2] 3404666 3404667 3404668 3404669 3404670 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:252234] "949" "950" "951" "952" ...
.. .. ..$ : chr [1:2] "x" "y"
..@ bbox : num [1:2, 1:2] 3404493 5872333 3405269 5872869
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:2] "x" "y"
.. .. ..$ : chr [1:2] "min" "max"
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
.. .. ..@ projargs: chr NA
Я хотел бы рассчитать площадь, покрываемую для определенных интервалов высоты макрофитов (т.е. площадь, покрываемую для интервалов «макро»).
Как я могу указать разрешение или размер каждой ячейки (= 1 м x 1 м)? Какой пакет и функция обрабатывает оценку площади SpatialPixelsDataFrame?
Я пока только карту загрузил
library(sp)
library(raster)
load("macrosmall.rdata")
и попробовал пару вещей:
area(cr1)
Это был бы пример того, что я хочу и как я хочу его рассчитать, однако спецификации фрейма данных не позволяют этого.
intervals <- list(c(0.1,0.2),
c(0.2,0.3),
c(0.3,0.4))
sapply(intervals, function(x) {
sum(cr1[] > x[1] & cr1s[] <= x[2])
})
Но в основном я всегда получаю одни и те же предупреждающие сообщения.
Предупреждающее сообщение: В .local(x, ...): эта функция полезна только для растровых* объектов с координатами долготы/широты.
Обратите внимание, что рассматриваемая территория довольно маленькая (25 га).
Может ли кто-нибудь подтолкнуть меня в правильном направлении?
776
и536
, так что776 * 536 = 415936 m^2
? - person www   schedule 28.04.2018area(r)
, вам нужна вся область. Поскольку вы не предоставили воспроизводимый пример вашего набора данных, нет возможности дать подробный ответ. - person www   schedule 28.04.2018