быстрая альтернатива dist2Line - PullRequest
0 голосов
/ 10 июля 2019

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

Я использовал dist2Line () из пакета геосферы. Но это занимает слишком много времени.

Мне нужна более быстрая версия dist2Line ().

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 10 июля 2019

вы можете попробовать параллельную обработку

#points being the spatialpointsdataframe, and lines being your spatiallinesdataframe
require(parallel)
fun<-function(i) data.frame(dist2Line(points[i,], lines)) #some function like this

cl <- makeCluster(detectCores())
clusterEvalQ(cl, { library("geosphere") }) #don't know what this does, but it's how i learned this. 
clusterExport(cl, c("dist2Line", "points", "lines")) #here you have to include all your objects and functions you want to use, and export them to a cluster, whatever that is.
results <- parLapply(cl,1:length(points),fun=fun) #use parLapply to 'loop' through the points and return a list of dataframes. should be a list. 
...