将SpatialPointsDataFrame与SpatialPolygonsDataFrame组合错误:超出最大返回密集矩阵大小

时间:2017-07-16 12:34:42

标签: r polygon spatial intersect

我正在尝试在SpatialPolygonsDataFrame(info)上组合一个1000x1000m正方形的SpatialPointsDataFrame(网格)来聚合每个网格方块内各点的所有信息。

我尝试了代码:

Set demo_1 = import_demo(1, nb_var)

但我记得这个错误:

combined <- intersect(info, grid)

还有其他方法可以做我想做的事情或解决错误吗?

1 个答案:

答案 0 :(得分:4)

错误表明您的记忆力最大化。一种解决方案是分解数据集并以块的形式进行交叉。新的SF包使用dplyr动词更容易做到这一点。添加一列来定义您的块,然后尝试以下操作:

combined <- info %>%
    group_by(chuncks) %>%
    do(sf::st_intersection(., grid))

要加快处理速度,您还可以尝试将数据集拆分为一个chuncks列表,然后并行应用st_intersection函数。这要快得多。

#import packages
library(foreach)
library(doParallel)

#setup parallel backend to use 8 processors
cl<-makeCluster(4)
registerDoParallel(cl)

tmp <- split(info, info$chunks)

# run using foreach
by.chunk <- foreach(df = tmp) %dopar% {
    sf::st_intersection(df, grid)
}

# combine list of data.frames 
combined <- ldply(by.chunck