문제

나는 매일 여러 위치에 대한 동물 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() 래스터 이름에서 날짜 정보를 검색합니다.하지만 그 외에도...얻을 수 있는 모든 힌트와 이 맥락에서 도움이 될 수 있는 기능에 대해 감사드립니다.

도움이 되었습니까?

해결책

마지막 줄부터 시작해서

### 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
> 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top