gpt4 book ai didi

r - 将 SpatialPointsDataFrame 与 SpatialPolygonsDataFrame 组合时出现错误 : maximum returned dense matrix size exceeded

转载 作者:行者123 更新时间:2023-12-01 22:59:10 25 4
gpt4 key购买 nike

我正在尝试将 1000x1000 米正方形的 SpatialPointsDataFrame(网格)与 SpatialPolygonsDataFrame(信息)结合起来,以聚合每个网格正方形内点的所有信息。

我尝试了代码:

combined <- intersect(info, grid)

但我收到此错误:

Error in RGEOSBinPredFunc(spgeom1, spgeom2, byid, func) : 
rgeos_binpredfunc_prepared: maximum returned dense matrix size exceeded

有其他方法可以完成我想要的操作或解决错误吗?

最佳答案

该错误表明您的内存已耗尽。一种解决方案是分解数据集并分块进行相交。新的 SF 包使使用 dplyr 动词更容易做到这一点。添加一列来定义您的 block ,然后尝试以下操作:

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

为了加快该过程,您还可以尝试将数据集拆分为 block 列表,然后并行应用 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

关于r - 将 SpatialPointsDataFrame 与 SpatialPolygonsDataFrame 组合时出现错误 : maximum returned dense matrix size exceeded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45128670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com