Ближайшая линия к точкам, используя 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.

Или, может быть, я подхожу к этому совершенно неправильно?

0 ответов

Другие вопросы по тегам