Разрешение отключенных сетей для анализа транспорта - PullRequest
0 голосов
/ 22 января 2019

Я перебираю несколько адресов, чтобы создать «зоны обслуживания» или буферы в зависимости от расстояния до дороги. Чтобы минимизировать время вычислений, я сначала буферизирую сеть, чтобы уменьшить количество узлов в сети. Тем не менее, отсечение сети до кольцевого буфера часто приводит к появлению «бесхозных» дорог, которые больше не связаны ни с чем. Результатом этого является то, что код не может достичь всех узлов, чтобы вычислить расстояние вдоль края (дороги). Я ищу функцию, которая позволила бы мне удалить эти небольшие отключенные сети, чтобы они не выдавали ошибку.

Отключенные сети http://tinypic.com/r/35c3mlu/9

# Convert the road network to  local projection (UTM 18N)
roads_utm <- st_transform(roadsReclass, 2959)

for(r in 1:nrow(Addresses)) {
  row <- Addresses[r,]
  # Coordinates of the address
  st_origin <- st_point(c(row$x,row$y))
  point <- st_sfc(st_origin, crs = 4326)
  point <- st_transform(point, 2959)

  #Create buffer around the address and extract smaller road network
  buffer <- st_buffer(point,10000)
  roads_sub <- st_intersection(buffer, roads_utm)
  roads_sub_sf <- st_sf(geometry = roads_sub)
  roads_sld <- as(roads_sub_sf, 'Spatial')
  roads_sld$length <- line_length(roads_sld)

  #Connect the roads in the network
  network <- overline(roads_sld, attrib='length')

  sln_sub <- SpatialLinesNetwork(network)



# Find the node
  xcoord <- st_coordinates(point)[1]
  ycoord <- st_coordinates(point)[2]
  origin_node <- find_network_nodes(sln_sub, xcoord, ycoord)

  #Get number of nodes to use as an iterator
  nodes <- sln2points(sln_sub)
  nNodes <- length(nodes)

  for(n in 1:nNodes){
    node <- n
    shortRoute <- sum_network_routes(sln_sub, origin_node, node, sumvars = "length")
    if(shortRoute$sum_length < 10000){
      shortRoutes <- rbind(shortRoutes,shortRoute)
    }
  }
}
plot(shortRoutes)

Ошибка:

В Structure_properties.c: 4597: Не удалось достичь некоторых вершин. Ошибка в if (shortRoute $ sum_length <10000) {: пропущенное значение, где требуется ИСТИНА / ЛОЖЬ </p>

Конечно, если у кого-то есть лучший метод для областей обслуживания в R, я был бы рад использовать другой подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...