Ближайшая линия к точкам, используя R
Я пытаюсь выполнить некоторую работу с ГИС с использованием R. В частности, у меня есть пространственная точка dataframe (называемая "точками") и spatiallinesdataframe (называемая "линиями"). Я хочу знать самую близкую линию к каждой точке. Я сделаю это:
# make a new field to hold the line ID
points@data$nearest_line <- as.character('')
# Loop through data. For each point, get ID of nearest line and store it
for (i in 1:nrow(points)){
points@data[i,"nearest_line"] <-
lines[which.min(gDistance(points[i,], lines, byid= TRUE)),]@data$line_id
}
Это отлично работает. Моя проблема заключается в размере моих данных. У меня 4,5 миллиона очков и около 100 000 линий. До сих пор он работал около дня и набрал только 200 000 из 4,5 млн. Очков (несмотря на довольно мощный компьютер).
Что я могу сделать, чтобы ускорить это? Например, если бы я делал это в PostGIS, я бы добавил пространственный индекс, но это не похоже на вариант в R.
Или, может быть, я подхожу к этому совершенно неправильно?