我从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,而不是获得平均温度。也许我没有正确地编写代码。你能找出任何错误?
把数据一起更简单的方法:
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)