我有一个名为 cr1 的对象,它是一个湖的大型 SpatialPixelsDataFrame。这是该文件的链接: https ://www.dropbox.com/s/uuvlmxmri144hp2/macrosmall.rdata?dl=0
我认为每个像素都有一个 1m x 1m 的单元格大小,但是我认为这个属性没有指定。“宏”是湖中沉水植物的测量高度。结构看起来像这样。
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
我想计算某些大型植物高度间隔所覆盖的面积(即“宏观”间隔所覆盖的面积)。
如何指定每个单元格的分辨率或大小(=1m x 1m)?哪个包和函数处理 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, ...) 中:此函数仅对具有经度/纬度坐标的 Raster* 对象有用
请注意,该区域非常小(25 公顷)。
谁能把我推向正确的方向?