Puede utilizar la función over()
para emular el poly.counts
que mencionaste. Seguirá existiendo el problema del redondeo de coordenadas que mencionaba @Spacedman, pero viendo la imagen que adjuntas parece que los puntos podrían coincidir. Disponer de tus datos (o de tu código) podría ayudarnos a dar una ayuda más precisa; te proporciono unas líneas principales a seguir para aplicar el over()
función:
library(rgdal)
library(data.table)
rivers <- readOGR(...) # load your rivers' data
rivers@data$id <- 1:nrow(rivers) # to make sure there is data associated with your rivers' dataset
rivers@data <- data.table(rivers@data)
points <- readOGR(...) # load your SpatialPointsDataFrame
Asumiendo que cada uno de los 125 fragmentos que menciona es un objeto diferente de su SpatialLinesDataFrame
se puede hacer un bucle como
rivers@data$count <- as.numeric(NA)
for (i in 1:nrow(rivers)) {
rivers[i,'count'] <- sum(!is.na(over(points, rivers[,'id'])))
}
El over()
recupera un vector con la dimensión de points
que contiene el 'id'
de la rivers[i,'id']
característica (cada fragmento) que se encuentra debajo de cada punto de points
. Los puntos que no se encuentran sobre una línea tendrían un <NA>
asociado a él. Así, sum(!is.na(...))
le proporciona el número de puntos que se han encontrado sobre el fragmento. Haciendo un bucle sobre cada fragmento, tendrá el recuento de cada uno de ellos.