From e4465a0a862d64afae7bbc14c0a742674ef10f13 Mon Sep 17 00:00:00 2001 From: cforgaci <33600128+cforgaci@users.noreply.github.com> Date: Fri, 28 Jun 2024 11:02:13 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20CityRive?= =?UTF-8?q?rSpaces/CRiSp@58ef7617346b62f676eaf00589e742b86397e193=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 3 +- LICENSE.html | 3 +- articles/corridor-delineation.html | 248 ++++++++++++++++++ .../figure-html/unnamed-chunk-2-1.png | Bin 0 -> 29897 bytes articles/index.html | 7 +- authors.html | 3 +- index.html | 3 +- pkgdown.yml | 5 +- reference/Rplot001.png | Bin 0 -> 1011 bytes reference/calc_weights.html | 92 +++++++ reference/cap_corridor.html | 108 ++++++++ reference/clean_network.html | 92 +++++++ reference/create_network.html | 96 +++++++ reference/define_aoi.html | 100 +++++++ reference/delineate_corridor.html | 100 +++++++ reference/get_corridor_edge.html | 100 +++++++ reference/get_latlon.html | 92 +++++++ reference/get_osmdata.html | 114 ++++++++ reference/get_osmdata_river_corridor.html | 104 ++++++++ reference/get_target_points.html | 100 +++++++ reference/get_vertices.html | 99 +++++++ reference/index.html | 115 +++++++- reference/merge_streets.html | 92 +++++++ reference/not_intersects.html | 96 +++++++ reference/osm_bb.html | 97 +++++++ reference/osmdata_as_sf.html | 100 +++++++ reference/simplify_network.html | 92 +++++++ reference/split_aoi.html | 96 +++++++ reference/trim_network.html | 100 +++++++ search.json | 2 +- sitemap.xml | 62 ++++- 31 files changed, 2295 insertions(+), 26 deletions(-) create mode 100644 articles/corridor-delineation.html create mode 100644 articles/corridor-delineation_files/figure-html/unnamed-chunk-2-1.png create mode 100644 reference/Rplot001.png create mode 100644 reference/calc_weights.html create mode 100644 reference/cap_corridor.html create mode 100644 reference/clean_network.html create mode 100644 reference/create_network.html create mode 100644 reference/define_aoi.html create mode 100644 reference/delineate_corridor.html create mode 100644 reference/get_corridor_edge.html create mode 100644 reference/get_latlon.html create mode 100644 reference/get_osmdata.html create mode 100644 reference/get_osmdata_river_corridor.html create mode 100644 reference/get_target_points.html create mode 100644 reference/get_vertices.html create mode 100644 reference/merge_streets.html create mode 100644 reference/not_intersects.html create mode 100644 reference/osm_bb.html create mode 100644 reference/osmdata_as_sf.html create mode 100644 reference/simplify_network.html create mode 100644 reference/split_aoi.html create mode 100644 reference/trim_network.html diff --git a/404.html b/404.html index 7568423..fd47139 100644 --- a/404.html +++ b/404.html @@ -39,8 +39,7 @@ diff --git a/LICENSE.html b/LICENSE.html index 6df4dba..f955a82 100644 --- a/LICENSE.html +++ b/LICENSE.html @@ -24,8 +24,7 @@
+ + + + +
+
+ + + +
+library(CRiSp)
+library(sf)
+#> Linking to GEOS 3.10.2, GDAL 3.4.1, PROJ 8.2.1; sf_use_s2() is TRUE
+
+library(dplyr)
+#> 
+#> Attaching package: 'dplyr'
+#> The following objects are masked from 'package:stats':
+#> 
+#>     filter, lag
+#> The following objects are masked from 'package:base':
+#> 
+#>     intersect, setdiff, setequal, union
+

In this notebook we explore how to delineate a river corridor using +Bucharest as the study area. We focus on one of the rivers and use a +specific projected CRS for the analysis. Also, we make sure that we +include a given area around the city boundaries.

+
+city_name <- "Bucharest, Romania"   # Be specific and spell as it appears in OSM
+river_name <- "Dâmbovița"           # Spell as it appears in OpenStreetMap
+epsg_code <- 32635                  # UTM zone 35N
+bbox_buffer <- 2000                 # Buffer around the city boundary in meters
+
+

Setting the area of interest +

+
+# Get the bounding box from the Nominatim API provided by OSM.
+bb <- osm_bb(city_name)
+
+aoi <- define_aoi(bb, epsg_code, bbox_buffer)
+
+city_boundary <- osmdata_as_sf("place", "city", bb)$osm_multipolygons |> 
+  st_transform(epsg_code) |> 
+  st_geometry()
+
+
+

Constructing the initial corridor +

+
+river_centerline <- osmdata_as_sf("waterway", "river", bb)$osm_multilines |>
+  filter(name == river_name) |>
+  st_transform(epsg_code) |> 
+  st_geometry() |> 
+  st_intersection(st_buffer(aoi, bbox_buffer))
+
+river_surface <- osmdata_as_sf("natural", "water", bb)
+river_surface <- river_surface$osm_multipolygons |>
+  bind_rows(river_surface$osm_polygons) |>
+  st_transform(epsg_code) |> 
+  st_filter(river_centerline, .predicate = st_intersects) |>
+  st_geometry() |>
+  st_union()
+

With these features we can now delineate a theoretical river corridor +representing the maximum area from which the river could be reached +within a walking distance. We construct the initial corridor from the +merged geometries of river_centerline and +river_surface, with a buffer of 500m around them:

+
+corridor_buffer <- 500
+corridor_initial <- c(river_centerline, river_surface) |>
+    st_buffer(corridor_buffer) |>
+    st_union()
+

We can now plot the initial corridor:

+
+plot(city_boundary)
+plot(corridor_initial, border = "red", main = "Initial river corridor", add = TRUE)
+

+
+
+

Getting the street network +

+

Querying the Overpass API for the highway key:

+
+highway_values <- c("motorway", "primary", "secondary", "tertiary")
+streets <- osmdata_as_sf("highway", highway_values, bb)
+streets <- merge_streets(streets) |>
+  select("highway") 
+#> Warning in st_cast.sf(highways$osm_polygons, "LINESTRING"): repeating
+#> attributes for all sub-geometries for which they may not be constant
+

We split the area of interest in two parts using the river centreline +as separator. The two areas can then be used to split the network in two +as a preparation to the shortest path algorithm used for edge +delineation in the next step:

+
+aoi_split <- aoi |> 
+  split_aoi(river_centerline)
+
+net <- create_network(streets, epsg_code)
+
+net_1 <- net |> 
+  trim_network(aoi_split[1], corridor_initial) |> 
+  clean_network() |> 
+  calc_weights() |> 
+  sfnetworks::activate("nodes") |>
+  filter(tidygraph::group_components() == 1)
+#> Warning: to_spatial_subdivision assumes attributes are constant over geometries
+
+
+net_2 <- net |> 
+  trim_network(aoi_split[2], corridor_initial) |> 
+  clean_network() |> 
+  calc_weights() |> 
+  sfnetworks::activate("nodes") |>
+  filter(tidygraph::group_components() == 1)
+#> Warning: to_spatial_subdivision assumes attributes are constant over geometries
+
+
+

Corridor edge delineation +

+

Determine the “vertices” of the initial river corridor as the +intersections of the initial river corridor with the AoI boundary. We +will use these points as extremes for the corridor edges:

+
+vertices_1 <- get_vertices(aoi_split[1], corridor_initial |> st_cast("LINESTRING"))
+vertices_2 <- get_vertices(aoi_split[2], corridor_initial |> st_cast("LINESTRING"))
+
+corridor_edge_1 <- get_corridor_edge(net_1, aoi_split[1], vertices_1)
+corridor_edge_2 <- get_corridor_edge(net_2, aoi_split[2], vertices_2)
+
+corridor_edges <- st_union(corridor_edge_1, corridor_edge_2)
+
+
+

Capping the corridor +

+
+capped_corridor <- city_boundary |>
+    lwgeom::st_split(corridor_edges) |>
+    sf::st_collection_extract("POLYGON") |>
+    sf::st_as_sf() |>
+    sf::st_filter(river_centerline, .predicate = sf::st_intersects)
+
+# TODO replace with call to cap_corridor()
+# corridor <- cap_corridor(corridor_edges, river_centerline, epsg_code, bb)
+

Note that this is not ideal, as the municipal boundaries can be +arbitrary and might exclude important end features of the corridors, so +the user should have the option to input their own feature to cap the +corridor ends. In the case of Bucharest, this can be the ring road.

+
+
+

All in one step +

+
+# TODO this function should run the entire delineation process
+# delineate_corridor(city_name, river_name, epsg_code)
+
+
+
+ + + + +
+ + + + + + + diff --git a/articles/corridor-delineation_files/figure-html/unnamed-chunk-2-1.png b/articles/corridor-delineation_files/figure-html/unnamed-chunk-2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0da9e49d3c8e446720e0fcb6a06f74a3423f17ce GIT binary patch literal 29897 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 literal 0 HcmV?d00001 diff --git a/articles/index.html b/articles/index.html index 614559e..7ae4f2c 100644 --- a/articles/index.html +++ b/articles/index.html @@ -24,8 +24,7 @@