[英]terra extract() giving NA values in R
我试图通过使用 terra::extract() 来获取地块中的平均 NDVI 值。 我注意到来自 terra::extract() 的 dataframe 给了我 NA 值(实际上,我在 4519 次观察中有 2494 个 NA 值)。 我的 NDVI 栅格的空间分辨率约为 0.5 英尺(0.15 米)。 下面是我的代码。 我也尝试过exactextractr::exact_extract(),但它没有给我与raster::extract() 相同的值。 根据我的阅读,exactextractr::exact_extract() 说明了位于多边形内的单元格部分。 我想知道哪个更好用,exactextractr::exact_extract() 或 terra::extract()。 任何帮助/指导都会很棒!
epa_fatparcels_sidewalk_adjacent <-
epa_parcels_sidewalk_adjacent %>%
st_transform(projection) %>%
st_buffer(330) %>%
st_transform(st_crs(epa_ndvi))
tictoc::tic()
epa_ndvi_sr<- terra::rast(epa_ndvi)
epa_fatparcels_sidewalk_adjacent_sv <- epa_yards_sidewalk_adjacent %>%
st_transform(st_crs(epa_ndvi)) %>%
#--- convert to a SpatVector object ---#
as(., "Spatial") %>% terra::vect()
epa_fatparcels_ndvi_v2 <- terra::extract(
epa_ndvi_sr,
epa_fatparcels_sidewalk_adjacent_sv,
fun="mean"
)
tictoc::toc() #took 17.92 sec elapsed
在询问 R 问题时,请提供一个独立的最小可重现示例。
您可以添加na.rm=TRUE
以忽略NA
值
epa_fatparcels_ndvi_v2 <- terra::extract(
epa_ndvi_sr,
epa_fatparcels_sidewalk_adjacent_sv,
fun="mean", na.rm=TRUE
)
另外,这条线
as(., "Spatial") %>% terra::vect()
大概可以简化为
terra::vect()
至于exactrextactr
如果细胞相对较少,这最重要。 使用terra::extract
您可以使用参数exact=TRUE
来获得相同的结果。
@MireilleVargas 这可能与栅格terra::extract()
正在使用的列有关。 同样的事情发生在我身上,所以我通过在 ArcMap 中的交叉引用进一步调查并发现它正在拉动“计数”列——它计算每个特定值有多少像素——而不是“值”列。 我注意到在通过rast
导入所述栅格以及将 RasterLayer 转换为 SpatRast object 时都会发生这种情况。 似乎光栅 package 可能会自动检测值列,但在 terra 中,要切换从光栅中提取的活动类别,请使用activeCat()
function。 例如, activeCat(ndviRast) <- 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.