SpatRaster 对象类别内的子集元素

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

我有一个从 USDA 获取的作物覆盖率 SpatRaster 对象。该栅格有五个类别:RED、GREEN、BLUE、CLASS_NAME 和 OPACITY。我正在尝试在 CLASS_NAME 中对特定作物(例如“玉米”)进行子集化。但是,我却没能做到。

我在下面包含了原始 SpatRaster 的输出。

> usda
class       : SpatRaster 
dimensions  : 15133, 24345, 1  (nrow, ncol, nlyr)
resolution  : 30, 30  (x, y)
extent      : 1204695, 1935045, 1829055, 2283045  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=aea +lat_0=23 +lon_0=-96 +lat_1=29.5 +lat_2=45.5 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs 
source      : CDL_2023_clip_20240401121659_1498934739.tif 
color table : 1 
categories  : RED, GREEN, BLUE, CLASS_NAME, OPACITY 
name        : RED 
min value   :  NA 
max value   :  NA 

我尝试使用 terra:subset 函数对数据进行子集化,该函数我过去曾与其他 SpatRaster 和 SpatVector 对象一起使用过。但我认为我正在努力解决这个结构。

我尝试过:

usda_sub <- subset(usda, "RED")
但这会产生与上面相同的输出。我只是复制原始的 usda SpatRaster 对象。

我也尝试过:

> usda_sub <- subset(usda, "CLASS_NAME")
Error: [subset] invalid name(s)

> usda_sub <- subset(usda, "Corn")
Error: [subset] invalid name(s)

我了解如何对 SpatRaster 对象的“名称”元素进行子集化,但显然我不知道如何在类别内进行子集化。例如,在 CLASS_NAME 类别中设置“CORN”或“CRANBERRIES”的子集。这个问题可能有一个非常简单的解决方案,但我只是看不到。

r subset raster terra
1个回答
0
投票
terra::subset(usda, usda$CLASS_NAME  %in% c("Corn", "CRANBERRIES")
© www.soinside.com 2019 - 2024. All rights reserved.