我有动物 gps 数据,每天都有几个位置,并且在没有记录动物位置的情况下有几天的定期间隔。此外,我每隔 16 天就有一次卫星数据。我现在想提取对应于特定点和特定时间的像素值。
这意味着如果动物的位置是在拍摄卫星图像前 2 天记录的,我想提取这张图像的像素值(之后),而不是从动物位置前 14 天拍摄的图像中提取记录下来。我总是想根据时间从更接近的图像中提取。
我创建了一些测试数据,希望能说明问题:
library(sp)
library(raster)
### Create test data
# create first raster
edc2012001_m <- raster(ncol=36, nrow=18)
edc2012001_m[] <- sample(1:ncell(edc2012001_m))
# create second raster
edc2012017_m <- raster(ncol=36, nrow=18)
edc2012017_m[] <- sample(1:ncell(edc2012017_m))
rasters<-stack(edc2012001_m,edc2012017_m)
# Create xy coordinates
time<-c("2012-01-01", "2012-01-01", "2012-01-01", "2012-01-02", "2012-01-02", "2012-01-02", "2012-01-12", "2012-01-12", "2012-01-13", "2012-01-13")
x <- rep(-50,10)
y <- sample(c(-80:80), 10)
data<-data.frame(x,y,time)
# Convert data to spatial points data frame
coordinates(data) <- c("x","y")
### Extract all data from raster stack
extract(rasters, data)
第一个栅格名称中的数字字符串表示该图像是在 2012 年的第一天拍摄的,第二张图像是在今年的第 17 天拍摄的。
例如,测试数据中的第 7 个位置现在应从第二个光栅文件中提取,因为它根据时间更接近。
总而言之,我有 87 个栅格文件和 600 个观测值。我真的不知道如何编程。我想我可以用来substr()
从栅格名称中检索日期信息。但除此之外......我很感谢我能得到的每一个提示,以及在这种情况下可能有用的功能。