diff --git a/R/functions.R b/R/functions.R index b07e0bd..188e901 100644 --- a/R/functions.R +++ b/R/functions.R @@ -116,9 +116,10 @@ get_osm = function(CITYlimit, CITY) { # clean_osm --------------------------------------------------------------- -clean_osm = function(road_network, CITY) { +clean_osm = function(road_network, CITY, build_osm) { - if(file.exists(paste0("outputdata/", CITY, "/road_network_clean.shp"))){ + if(build_osm == FALSE & + file.exists(paste0("outputdata/", CITY, "/road_network_clean.shp"))){ road_network_clean = sf::st_read(paste0("outputdata/", CITY, "/road_network_clean.shp"), quiet = TRUE) @@ -165,6 +166,16 @@ clean_osm = function(road_network, CITY) { road_network_clean = sf::st_read(output[["output"]][1]) # %>% select(-fid_2) + + # cleaning the unnecessary nodes, using tidygraph and sfnetworks + road_network_clean = as_sfnetwork(road_network_clean) + + road_network_clean = convert(road_network_clean, to_spatial_smooth) |> + activate(edges) |> + as_tibble() |> + select(cat, osm_id, highway, geometry) |> + mutate(edgeID = c(1:n())) |> + st_as_sf() st_write(road_network_clean, output_path, delete_dsn = TRUE) diff --git a/_targets.R b/_targets.R index 47f1783..e75a60e 100644 --- a/_targets.R +++ b/_targets.R @@ -5,10 +5,10 @@ # Set defaults HERE ###################### -CITY_input = "Lisboa" -cellsize_input = c(500, 500) -square_input = FALSE #TRUE = squares, FALSE = hexagons - +CITY_input = "Almada" +cellsize_input = c(200, 200) +square_input = TRUE #TRUE = squares, FALSE = hexagons +build_osm = TRUE #clean osm road network again? ######################################### @@ -62,7 +62,7 @@ list( command = get_osm(CITYlimit, CITY)), tar_target( name = road_network_clean, - command = clean_osm(road_network, CITY)), + command = clean_osm(road_network, CITY, build_osm)), tar_target( name = centrality_nodes, command = get_centrality(road_network_clean, CITY)), diff --git a/code/centrality.R b/code/centrality.R index 687f3c7..75e02f8 100644 --- a/code/centrality.R +++ b/code/centrality.R @@ -17,21 +17,6 @@ road_network = st_read("database/lisbon_network_vclean.gpkg") #or https://github # road_network = st_read("database/old_network/RedeViariaLisboa_osm_Setores/RedeViariaLisboa_osm_Setores.shp") # road_network = st_transform(road_network, 3857) # Project -# TESTE rede limpa osm targets -road_network = st_read("outputdata/Lisboa/road_network_clean.shp") - - - -net = as_sfnetwork(road_network) -smoothed = convert(net, to_spatial_smooth) - -nodes_smoothed = smoothed %>% - activate(nodes) %>% - as_tibble() |> - st_as_sf(coords = c('X', 'Y')) %>% - st_set_crs(st_crs(edges)) - - # create a road network graph ------------------------------------------------------------ @@ -172,3 +157,30 @@ summary(centrality_grid$closeness) # 0.0000000 0.0000016 0.0000025 0.0014170 0.0000033 1.0000000 gabriel saveRDS(centrality_grid, "database/centrality_grid.Rds") + + + + +# clean unnecessary nodes ------------------------------------------------- + +# TESTE rede limpa osm targets +road_network = st_read("outputdata/Lisboa/road_network_clean.shp") + +net = as_sfnetwork(road_network) + +nodes_smoothed = convert(net, to_spatial_smooth) |> + activate(nodes) |> + as_tibble() |> + st_as_sf() |> + rename(nodeID = .tidygraph_node_index) + +edges_smoothed = convert(net, to_spatial_smooth) |> + activate(edges) |> + as_tibble() |> + select(cat, osm_id, highway, geometry) |> + mutate(edgeID = c(1:n())) |> + st_as_sf() + +mapview::mapview(edges_smoothed, zcol="edgeID") + +st_write(edges_smoothed, "outputdata/edges_smoothed.shp", delete_dsn = TRUE)