计算每种土地覆盖类型的多边形面积(使用 spatraster 对象)

问题描述 投票:0回答:1

我正在尝试计算 straster (land.sub) 内 6 个带的面积(最好是百分比)。我通过将原始土地覆盖栅格裁剪为多边形数据(代表海草的存在)来制作这个 spatraster。我正在尝试计算出我的 Spat 栅格 (land.sub) 上存在 6 种土地覆盖类型中的多少,并尝试使用 extract_extractr 并使用 terra 的 extract 函数,但似乎无法弄清楚如何进行它。 这是我的代码:

library(terra)
library(sf)
library(dplyr)
library(rgdal)
library(ggplot2)
library(exactextractr)
##READ IN RASTER###
rcp19<-rast("7landtypes/SSP1_RCP19/global_SSP1_RCP19_2050.tif")
crs(rcp19, proj = T)

###READ IN POLYGON DATA AND TRANSFORM TO SAME CRS AS RASTER(CEA) BY TYPING >CMU AND COPY PASTING CRS DETAILS IN OUTPUT#### 
cmu <- st_read("units-attributes-wgs84L2.gpkg") %>% 
  st_transform("+proj=cea +lat_ts=30 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs") %>% 
  
  ###FILTER FOR JUST AUSTRALIA FROM TERRITORY1 VARIABLE#####
filter(TERRITORY1 == 'Australia')

###FILTER TO JUST SEAGRASS###
sg<-cmu[, names(cmu)%in% c ("seagrass", "unit_ID")] %>% filter(seagrass==1)
plot(sg)

rcp19
######################EXACT EXTRACTR############################################

###CREAT OBJECT CALLED LAND.SUB WHICH COMBINES RCP19 ONLY WITH WHERE SEAGRASS PRESENT###
land.sub <- terra::crop(rcp19, vect(sg), mask = T)
plot(land.sub)

####RENAME NUMERIC VARIABLES TO LANDCOVER TYPES####
levels(land.sub)<-data.frame(id=1:6, cover = c("water", "forest", "grassland", "barren", "cropland", "urban"))
plot(land.sub)

我还应该提到,当尝试使用精确的提取器进行计算时,我不断收到错误:列未定义。附上我的地图图片。

将土地覆盖栅格和海草多边形裁剪在一起的 landsub 栅格

r extract raster terra
1个回答
1
投票

我无法遵循您的示例,但如果您想计算不同类别的面积,您可以像下面所示那样进行操作。

示例数据

library(terra)
r <- rast(system.file("ex/elev.tif", package="terra"))
r <- round(r/100)
v <- vect(system.file("ex/lux.shp", package="terra"))

如果你想使用多边形对一个区域进行子集化,你可以这样做

r <- crop(r, v[1:2, ], mask=TRUE)

您可以使用

freq

来计算每个类别中的细胞数量
freq(r)
#  layer value count
#1     1     2    47
#2     1     3   219
#3     1     4   314
#4     1     5   475

计算每个类别的面积:

a <- cellSize(r)
zonal(a, r)
zonal(a, r)
#  elevation     area
#1         2 555404.2
#2         3 555412.9
#3         4 554315.4
#4         5 553053.0
© www.soinside.com 2019 - 2024. All rights reserved.