Connect nearest lines with points
Installing nngeo
devtools::install_github("michaeldorman/nngeo")
Creating sample points pattern
library(sf)
## Linking to GEOS 3.5.1, GDAL 2.2.2, proj.4 4.9.2
# Israel bounding box
pnt = c(st_point(c(34.26801, 29.49708)), st_point(c(34.26801, 33.36403)), st_point(c(35.90094, 29.49708)), st_point(c(35.90094, 33.36403)))
pol = st_convex_hull(pnt)
pol = st_sfc(pol, crs = 4326)
pol = st_transform(pol, crs = 32636)
# Sample 200 points
x = st_sample(pol, 200)
x = st_sf(x)
plot(x)

Finding “nearest” IDs
library(nngeo)
ids = st_nn(x, x, k = nrow(x), maxdist = 20000) # maxdist = 20 km
Creating lines
lines = st_connect(x, x, ids)
plot(x)
plot(lines, col = "red", add = TRUE)

Removing duplicated and “self” lines
for(i in 1:length(ids)) ids[[i]] = ids[[i]][ids[[i]] > i]
lines = st_connect(x, x, ids)
plot(x)
plot(lines, col = "red", add = TRUE)
