terra::extract 是否可以使用不同的函数来提取栅格的不同类型的图层?
Can different functions be used to extract different types of layers of a raster using terra::extract?
我的目标是从 栅格 中提取一组 多边形 位置的数据。栅格有许多数值变量和一些分类变量。我想提取以此为条件的值,e.i,如果变量是数字,则为每个多边形获取 mean
,如果变量是分类的,则获取 mode
.
现在我这样做(看到 'numeric' 图层是数字,'categorical' 有代表类别的数字):
extract_numeric <- terra::extract(x = raster,
y = vect(polygons),
fun = mean,
layer = 'numeric',
rm.na=T)
extract_categorical <- terra::extract(x = raster,
y = vect(polygons),
fun = mode,
layer = 'categorical',
rm.na=T)
extract <- c(extract_numeric, extract_categorical)
是否可以根据图层类型提取所有值?即使我希望不同的数字层在提取时得到不同的 fun
。可以吗?
谢谢!
不,那是做不到的。您还可以做的是使用名称或索引
子集 x
e_num <- extract(x[[c(1:3, 6:8)]], v, fun=mean)
e_cat <- extract(x[[4:5]], v, fun=mean)
但这类似于使用 layer
参数。
你也可以
e_list <- extract(x, v)
然后 lapply
您自己的函数在该列表中。
我的目标是从 栅格 中提取一组 多边形 位置的数据。栅格有许多数值变量和一些分类变量。我想提取以此为条件的值,e.i,如果变量是数字,则为每个多边形获取 mean
,如果变量是分类的,则获取 mode
.
现在我这样做(看到 'numeric' 图层是数字,'categorical' 有代表类别的数字):
extract_numeric <- terra::extract(x = raster,
y = vect(polygons),
fun = mean,
layer = 'numeric',
rm.na=T)
extract_categorical <- terra::extract(x = raster,
y = vect(polygons),
fun = mode,
layer = 'categorical',
rm.na=T)
extract <- c(extract_numeric, extract_categorical)
是否可以根据图层类型提取所有值?即使我希望不同的数字层在提取时得到不同的 fun
。可以吗?
谢谢!
不,那是做不到的。您还可以做的是使用名称或索引
子集x
e_num <- extract(x[[c(1:3, 6:8)]], v, fun=mean)
e_cat <- extract(x[[4:5]], v, fun=mean)
但这类似于使用 layer
参数。
你也可以
e_list <- extract(x, v)
然后 lapply
您自己的函数在该列表中。