У меня есть три объекта SpatialPointsDataFrame
, которые на самом деле всего одна точка. Мое намерение состоит в том, чтобы сделать растр для каждого из них в той степени, которая включает точку, таким образом, что все ячейки, кроме точки, являются «NA», поэтому я могу использовать функцию distance()
в пакете raster
для создания растра слой, где значение z - это расстояние до единственной ячейки, в которой z не является «NA».Проблемы с функцией растеризации в R
Мой код работает без проблем с первым из трех объектов, но появляется следующее сообщение об ошибке для двух других:
error in seq.default(zrng[1], zrng[2], length.out = cuts + 2) :
'from' cannot be NA, NaN or infinite
In addition: Warning messages:
1: In asMethod(object) :
complete map seems to be NA's -- no selection was made
2: In min(x) : no non-missing arguments to min; returning Inf
3: In max(x) : no non-missing arguments to max; returning -Inf
Я двойной и тройной проверить, что мои пункты содержатся в степени растр, и я действительно не могу точно определить проблему
Вот мой код:
library(raster)
TIM <- data.frame()
TIM[1,1] <- -13.8309
TIM[1,2] <- 28.9942
VEN <- data.frame()
VEN[1,1] <- -15.7886
VEN[1,2] <- 27.8444
MCL <- data.frame()
MCL[1,1] <- -13.5325
MCL[1,2] <- 29.2914
coordinates(TIM) <- ~V1+V2
coordinates(VEN) <- ~V1+V2
coordinates(MCL) <- ~V1+V2
bb2 <- matrix(c(-20, -9.5, 20.5, 31.5), nrow = 2, ncol = 2, byrow = T)
bb2 <- extent(bb2)
r <- raster(nrows = 1217, ncols = 1047)
r <- setExtent(r, bb2, keepres=F)
rMCL <- rasterize(MCL, r)
spplot(rMCL)
#so far so good, but from now on it doesn't work
rVEN <- rasterize(VEN, r)
spplot(rVEN)
rTIM <- rasterize(TIM, r)
spplot(rTIM)
Edit: Я попытался превращения его в SpatialGridDataF rame, и я получаю его, но моя точка зрения находится не в растре, т. е. сюжет пуст. Код:
rr <- as(rTIM, "SpatialGridDataFrame")
spplot(rr)
#this produces an empty plot
Я также попытался черчения его в растр без заранее определенного количества строк и столбцов, и она работает:
r <- raster()
r <- setExtent(r, bb2, keepres=F)
rTIM <- rasterize(TIM, r)
spplot(rTIM)
# this produces a raster containing my point
Проблема заключается в том, я действительно должен был бы установить разрешение графика, так что каждая ячейка растра представляет собой приблизительно 1 квадрат километра, что я получаю от количества строк и столбцов, которые я использовал ранее. Есть идеи?