【发布时间】:2021-06-03 14:23:17
【问题描述】:
我有一个交通路线数据集(sf 对象),我想将它们链接到街道(即知道每条路线中包含哪些街道)。 有什么可能的方法?
一些(非常少的)虚拟数据:
my_route=data.frame(
stringsAsFactors = FALSE,
origin = c("E02001186", "E02001260"),
destination = c("E02001186", "E02001260"),
geometry = c("c(-2.438813, -2.438813, 53.429707, 53.429707)",
"c(-2.350659, -2.350659, 53.457229, 53.457229)")
)
roads=data.frame(
stringsAsFactors = FALSE,
osm_id = c(779434L, 779437L),
name = c("Ruskin Avenue", "Barnes Avenue"),
geometry = c("c(-1.5178758, -1.5171935, -1.5170291, -1.5168588, -1.5163581, -1.5158187, -1.5156387, -1.5154735, -1.5153933, -1.5146483, -1.5132778, -1.5126556, 53.7011323, 53.7013923, 53.7014655, 53.701575, 53.7020413, 53.7025049, 53.7026595, 53.7027965, 53.7028383, 53.7032271, 53.7039413, 53.7042654)",
"c(-1.5132778, -1.5113646, 53.7039413, 53.7031114)")
)
道路和路线的完整数据(以上数据集仅包括几行和几列)可以使用:
library(stplanr)
od_data <- stplanr::flow[1:20, ]
desire_lines_ <- od2line(flow = od_data, zones = cents_sf)
routes= route(l = desire_lines_, route_fun = route_osrm)
library(osmextract)
library(osmdata)
chorlton_point = tmaptools::geocode_OSM("bristol")
c_m_coordiantes = rbind(chorlton_point$coords, chorlton_point$coords)
c_m_od = od::points_to_od(p = c_m_coordiantes, interzone_only = TRUE)
c_m_desire_line = od::odc_to_sf(c_m_od[-(1:2)])[1, ]
chorlton_buffer = stplanr::geo_buffer(c_m_desire_line, dist = 1000)
qtm(chorlton_buffer)
iow_sf_polygon <- getbb("bristol", format_out = "sf_polygon")
roads = oe_get(chorlton_buffer, stringsAsFactors = FALSE, quiet = TRUE)
【问题讨论】:
-
您是否从
sf包中查看过st_join()?这就是我要尝试解决的问题。