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

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

我从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,而不是获得平均温度。也许我没有正确地编写代码。你能找出任何错误?

r raster tiff na
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.