# NOT RUN {
data(cities)
data(towns)
cities = st_transform(cities, 32636)
towns = st_transform(towns, 32636)
# Nearest town
st_nn(cities, towns)
# Using 'sfc' objects
st_nn(st_geometry(cities), st_geometry(towns))
st_nn(cities, st_geometry(towns))
st_nn(st_geometry(cities), towns)
# With distances
st_nn(cities, towns, returnDist = TRUE)
# }
# NOT RUN {
# Distance limit
st_nn(cities, towns, maxdist = 7200)
st_nn(cities, towns, k = 3, maxdist = 12000)
st_nn(cities, towns, k = 3, maxdist = 12000, returnDist = TRUE)
# 3 nearest towns
st_nn(cities, towns, k = 3)
# Spatial join
st_join(cities, towns, st_nn, k = 1)
st_join(cities, towns, st_nn, k = 2)
st_join(cities, towns, st_nn, k = 1, maxdist = 7200)
st_join(towns, cities, st_nn, k = 1)
# Polygons to polygons
st_nn(water, water, k = 4)
# Large example
n = 1000
x = data.frame(
lon = (runif(n) * 2 - 1) * 70,
lat = (runif(n) * 2 - 1) * 70
)
x = st_as_sf(x, coords = c("lon", "lat"), crs = 4326)
start = Sys.time()
result = st_nn(x, x, k = 3)
end = Sys.time()
end - start
# }
Run the code above in your browser using DataLab