我是 R 的新手,在解决这个问题时遇到困难,因此我们将不胜感激。 我有每日洪水栅格数据,用于计算某些位置周围缓冲区中洪水的加权平均值。我清理了 QGIS 中的栅格,并使用 R 通过以下几行计算加权平均值:
library(sp)
library(raster)
library(ggplot2)
library(sf)
# Load the raster file into R
flooding_raster_data <- raster(raster_file)
# Print information or perform further processing as needed
print(paste("Loaded raster file:", raster_file))
# Extract values from the raster that fall within the buffer polygons
raster_values_in_buffer_weight <- extract(flooding_raster_data, buffer, fun = mean, na.rm = TRUE, weights=TRUE)
# Create a new buffer object with the extracted floodshare values
buffer_with_mean <- st_as_sf(buffer)
buffer_with_mean$floodshare <- raster_values_in_buffer_weight
# Write the sf object to a shapefile
st_write(buffer_with_mean, output_file_path, append = FALSE)
rm(flooding_raster_data, buffer_with_mean, raster_values_in_buffer_weight, raster_file)
我的问题是,对于没有数据的栅格(在 QGIS 中编码为没有数据),缓冲区的加权平均值为 0。我已经根据 QGIS 中的区域平均值检查了这一点,并且这些相同的缓冲区在 QGIS 中的区域平均值为 NULL。我正在努力弄清楚为什么在 R 中会发生这种情况,因为我认为 R 会导致平均 NA 或缺失,所以如果有人知道为什么,请告诉我以及如何解决这个问题。再说一次,我是 R 的初学者,所以我可能错过了一些非常明显的东西。
我尝试使 na.rm = FALSE 因为我认为问题可能出在我在 R 代码中处理 NA 值的方式,但这只是使所有加权平均值为 NULL 所以我认为我不理解 R 如何处理缺失数据。
也许您想确定栅格对象中的 NA 数据是什么。 R 中的 NA 读为 0 吗?
如果是这样,请更换它们:
flooding_raster_data <- raster(raster_file)
plot(flooding_raster_data) ## check 0 and NA values
raster_data[flooding_raster_data[] == 0] <- NA
plot(flooding_raster_data) ## check 0 and NA values
检查使用该(或其他)数据替换是否可以重现预期结果