当我尝试从tif文件中提取值时,为什么会得到NA?

时间:2019-02-10 18:33:30

标签: r raster tiff na

我有一个来自WORLDCLIM的tif文件,我需要提取与温度有关的值。

示例代码:

t_min_jan2 <-raster::brick("wc2.0_30s_tmin_01.tif")
t_min_fev <-raster::brick("wc2.0_30s_tmin_02.tif")
t_min_mar <-raster::brick("wc2.0_30s_tmin_03.tif")
t_min_abr <- raster::brick("wc2.0_30s_tmin_04.tif")
t_min_maio <- raster::brick("wc2.0_30s_tmin_05.tif")
t_min_jun <- raster::brick("wc2.0_30s_tmin_06.tif")
t_min_jul <-raster::brick("wc2.0_30s_tmin_07.tif")
t_min_ago <-raster::brick("wc2.0_30s_tmin_08.tif")
t_min_set <-raster::brick("wc2.0_30s_tmin_09.tif")
t_min_out <- raster::brick("wc2.0_30s_tmin_10.tif")
t_min_nov <-raster::brick("wc2.0_30s_tmin_11.tif")
t_min_dez <-raster::brick("wc2.0_30s_tmin_12.tif")
t <-stack(t_min_jan2,t_min_fev,t_min_mar,t_min_abr,t_min_maio,t_min_jun,t_min_jul,t_min_ago,t_min_set,t_min_out,t_min_nov,t_min_dez)`

plot(t)

newt <- c(-10, 5, 35, 45)
tmin1 <- crop(t, newt)
plot(tmin1)

通过此代码,我得到了想要的地图...我有一个带有坐标(本地)的文件,我需要从这些坐标中提取温度值

xy<-local[,c("Longitude" ,"Latitude")]
spdf <- SpatialPointsDataFrame(coords = xy, data = local,
proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84+towgs84=0,0,0"))
value<-extract(tmin1,spdf)
value

但是当我运行代码时,得到的是NA,而不是平均温度。也许我没有正确编写代码。你能发现任何错误吗?

1 个答案:

答案 0 :(得分:0)

一种将数据放在一起的简单方法:

library(raster)
# get all filenames
ff <- paste0(sprintf("wc2.0_30s_tmin_%02d", 1:12), ".tif")
wtmin <- stack(ff)
tmin <- crop(wtmin, c(-10, 5, 35, 45))

首先检查点是否在栅格上(它们可能不在栅格上)

xy <- local[,c("Longitude" ,"Latitude")]
plot(tmin[[1]])
points(xy)

如果它们在顶部,这应该可以工作

value <- extract(tmin, xy)

如果不是,并且您不知道原因,请向我们展示

返回的内容
tmin
extent(xy)