0

湖の大きな SpatialPixelsDataFrame である cr1 というオブジェクトがあります。ファイルへのリンクは次のとおりです: 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])
})

しかし、私は基本的に常に同じ警告メッセージで終わります

警告メッセージ: In .local(x, ...) : この関数は、経度/緯度座標を持つ Raster* オブジェクトにのみ役立ちます

問題の地域は非常に小さい (25 ヘクタール) ことにご注意ください。

誰かが私を正しい方向に押し進めることができますか?

4

2 に答える 2