Вопросы по пакету stplanr в R
Мне нужна ваша помощь с функцией route_local пакета stplanr (https://cran.r-project.org/web/packages/stplanr/stplanr.pdf), которая находится на странице 89.
Вы можете понять, что карта создается из примера функции, показывая путь между двумя точками (я оставил код и изображение, созданное ниже). Я хотел бы сделать то же самое. В моем случае это показать путь между двумя точками с учетом моих дорог. Оба являются шейп-файлом. Мне удалось сгенерировать дороги для отображения (код ниже), но я хотел бы показать маршрут между любыми двумя точками этих дорог. Кто-нибудь может мне помочь?? Я оставил его на следующем сайте https://github.com/JovaniSouza/JovaniSouza5/blob/master/Example.zip, чтобы загрузить шейп-файлы.
library(geosphere)
library(sf)
library(stplanr)
roads<-st_read("C:/Users/Jose/Downloads/Example/Roads/Roads.shp")
p <- SpatialLinesNetwork(roads, uselonglat = FALSE, tolerance = 0)
plot(p)
Карта сгенерирована кодом
пример
from <- c(-1.535181, 53.82534)
to <- c(-1.52446, 53.80949)
sln <- SpatialLinesNetwork(route_network_sf)
r <- route_local(sln, from, to)
plot(sln)
plot(r$geometry, add = TRUE, col = "red", lwd = 5)
plot(cents[c(3, 4), ], add = TRUE)
r2 <- route_local(sln = sln, cents_sf[3, ], cents_sf[4, ])
plot(r2$geometry, add = TRUE, col = "blue", lwd = 3)
1 ответ
Попробуй это. Чтобы адаптировать пример к вашему случаю, вам необходимо преобразовать систему координатroads
к points
шейп-файл (или наоборот):
library(geosphere)
library(sf)
library(stplanr)
roads <- st_read("Example/Roads/Roads.shp")
points <- st_read("Example/Points/Points.shp")
# Convert roads to coordinate system of points
roads_trf <- st_transform(roads, st_crs(points))
# Convert to points to SpatialPointsDataframe
points_sp <- as(points, "Spatial")
from <- c(-49.95058, -24.77502) # Feature 1
to <- c(-49.91084, -24.75200) # Feature 9
p <- SpatialLinesNetwork(roads_trf, uselonglat = FALSE, tolerance = 0)
r <- route_local(p, from, to)
plot(p)
plot(r$geometry, add = TRUE, col = "red", lwd = 5)
plot(points_sp[c(3, 4), ], add = TRUE)
r2 <- route_local(sln = p, points[3, ], points[4, ])
plot(r2$geometry, add = TRUE, col = "blue", lwd = 3)