объединение растровых данных в таблицу - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть растровый кирпич и таблица данных с пространственными местоположениями наблюдений птиц, которые привели в r. Я пытаюсь извлечь климатические данные из растрового кирпича и прикрепить его к пространственным точкам.

bunting
     lon  lat
1 -152.4 57.8
2 -165.4 64.5
3 -166.2 60.4
4 -160.8 63.9

dim(bunting)
[1] 4 2

pre
class      : RasterBrick 
dimensions : 360, 720, 259200, 1416  (nrow, ncol, ncell, nlayers)
resolution : 0.5, 0.5  (x, y)
extent     : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
source     : C:/Users/deser/Desktop/Desktop/UC Merced/Classes F2020/ES 232/cru_ts4.03.1901.2018.tmp.dat.nc 
names      : X1901.01.16, X1901.02.15, X1901.03.16, X1901.04.16, X1901.05.16, X1901.06.16, X1901.07.16, X1901.08.16, X1901.09.16, X1901.10.16, X1901.11.16, X1901.12.16, X1902.01.16, X1902.02.15, X1902.03.16, ... 
Date       : 1901-01-16, 2018-12-16 (min, max)
varname    : tmp 

Вот мой код и сообщение об ошибке:

pre.c.bunting <- as.data.frame(extract(pre, bunting, ncol=2))

Ошибка в UseMethod ("extract_"): нет применимого метода для 'extract_', примененного к объекту class "c ('RasterBrick', 'Raster', 'RasterStackBrick', 'BasicRaster')" Ошибка: 1 компонент из ... не использовался.

Мы обнаружили эти проблемы c аргументы: * ncol

Как мне этого добиться?

1 Ответ

0 голосов
/ 27 апреля 2020

Я не уверен, что ncol=2 в вашем коде, но именно это и вызывает вашу ошибку. Вот два метода, которые вы можете использовать:

# make your data, with very simplistic raster stack
bunting <- data.frame(lon = c(57.8, 64.5, 60.4, 63.9), lat = c(-152.4, -165.4, -166.2, -160.8))

r1 <- raster(xmn = 55, xmx = 65, ymn = -170, ymx = -150, res = c(0.5,0.5))
r1[] <- sample(1:10, ncell(r1), replace = T)

r2 <- r1
r2[] <- sample(1:10, ncell(r2), replace = T)

r3 <- r1
r3[] <- sample(1:10, ncell(r3), replace = T)

pre <- stack(r1,r2,r3)


# 1st METHOD: extract using the data frame. 
# you have to then add the coordinates (if you want them)
# Results of extract are in exact same order as coords data frame
result.df <- cbind(as.data.frame(extract(pre, bunting, sp=T)), bunting)

# 2nd METHOD: if you dont trust the cbind above, convert data to points
# use the sp=T arguement to add in coords upon extract

pts <- bunting
coordinates(pts) <- ~lon+lat

result.pts <- as.data.frame(extract(pre, pts, sp=T))

# identical
identical(result.df, result.pts)
[1] TRUE
...