提取R中对应点位置的像素值

提取R中对应点位置的像素值,r,gis,raster,R,Gis,Raster,我有动物gps数据,每天有几个位置,有几天没有记录动物的位置。此外,每隔16天我就有卫星数据。现在我想提取对应于特定点和特定时间的像素值 这意味着,如果在卫星图像拍摄前2天记录了动物的位置,我想提取该图像(之后)的像素值,而不是从记录动物位置前14天拍摄的图像中提取。我总是想从根据时间更近的图像中提取 我创建了一些测试数据,希望能够说明问题: library(sp) library(raster) ### Create test data # create first raster edc20

我有动物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)
库(sp)
图书馆(光栅)
###创建测试数据
#创建第一个光栅

edc2012001\u m从最后一行开始

### Extract all data from raster stack
ex <- extract(rasters, data)

# assuming you have these names or something similar
x <- c("edc2012001_m", "edc2012017_m")
year <- as.integer(substr(x, 4, 7))
# day of year
doy <- as.integer(substr(x, 8, 10))
date <- as.Date(doy, origin=paste(year-1, "-12-31", sep=''))
time <- as.Date(time)

# time difference
dif <- t(apply(matrix(as.integer(time)), 1, function(x) x-as.integer(date)))

# smallest time difference
i <- apply(abs(dif), 1, which.min)

# combine rows and columns to select values
v <- ex[cbind(1:nrow(ex),i)]

很好,它与动物位置数据完美结合。非常感谢你!
> i
 [1] 1 1 1 1 1 1 2 2 2 2
> v
 [1] 582 578 303 201 201 200 461 329 445 211
>