首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从另一个栅格计算土地覆盖值?

如何从另一个栅格计算土地覆盖值?
EN

Stack Overflow用户
提问于 2020-01-20 20:13:37
回答 1查看 99关注 0票数 0

我有两个光栅:

代码语言:javascript
复制
raster1
class      : RasterLayer 
dimensions : 2803, 5303, 14864309  (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333  (x, y)
extent     : 60.85, 105.0417, 15.95833, 39.31667  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
source     : memory
names      : npp 
values     : -0.345, 1.723  (min, max)

raster2
class      : RasterLayer 
dimensions : 2803, 5303, 14864309  (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333  (x, y)
extent     : 60.85, 105.0417, 15.95833, 39.31667  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
source     : C:/a/b/Documents/c/landuse.tif 
names      : landuse
values     : 1, 12  (min, max)
attributes :
       ID                          zn
 from:  1 evergreen needleleaf forest
  to : 12                   croplands

raster2是特定区域的土地覆被类型,raster1是净第一性生产力的值。我想计算一下raster 2中每个土地覆盖类的净初级生产力是多少。我如何在R中实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-20 21:07:21

查找r2中每个土地覆盖代码的r1中单元值的总和,输出以列表形式返回。可以改为使用lapply。

代码语言:javascript
复制
library(raster)

#Generate example data
raster1 <-  raster(matrix(c(1,1,1,2,3,4,5,6,7),ncol =3))

raster2 <- raster(matrix(c(1,1,1,2,2,2,3,3,3),ncol =3))
raster2 <- as.factor(raster2)

rat <- levels(raster2 )[[1]]
rat[["landcover"]] <- c("land","ocean/lake", "rivers")
levels(raster2 ) <- rat

#Extract sum of values of raster 1 for each level of raster 2
Val <- list()
for(lc in levels(raster2)[[1]]$ID){
  Values <- raster1[raster2[]==lc]

  Val[[lc]] <- sum(Values)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59823058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档