This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Cmd+Shift+Enter.

library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ─────────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✔ ggplot2 3.3.6     ✔ purrr   0.3.4
✔ tibble  3.1.7     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.1
✔ readr   2.1.2     ✔ forcats 0.5.1
── Conflicts ────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
library(osmdata) # package for working with streets
Data (c) OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright
library(showtext) # for custom fonts
Loading required package: sysfonts
Loading required package: showtextdb
library(ggmap)
Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
Please cite ggmap if you use it! See citation("ggmap") for details.
library(rvest)

Attaching package: ‘rvest’

The following object is masked from ‘package:readr’:

    guess_encoding
getbb("Ottawa Canada")
        min       max
x -76.35559 -75.24658
y  44.96177  45.53765
big_streets <- getbb("Ottawa Canada")%>%
  opq()%>%
  add_osm_feature(key = "highway", 
                  value = c("motorway", "primary", "motorway_link", "primary_link")) %>%
  osmdata_sf()

big_streets
Object of class 'osmdata' with:
                 $bbox : 44.9617738,-76.3555857,45.5376502,-75.2465783
        $overpass_call : The call submitted to the overpass API
                 $meta : metadata including timestamp and version numbers
           $osm_points : 'sf' Simple Features Collection with 22155 points
            $osm_lines : 'sf' Simple Features Collection with 3305 linestrings
         $osm_polygons : 'sf' Simple Features Collection with 11 polygons
       $osm_multilines : NULL
    $osm_multipolygons : NULL
med_streets <- getbb("Ottawa Canada")%>%
  opq()%>%
  add_osm_feature(key = "highway", 
                  value = c("secondary", "tertiary", "secondary_link", "tertiary_link")) %>%
  osmdata_sf()


small_streets <- getbb("Ottawa Canada")%>%
  opq()%>%
  add_osm_feature(key = "highway", 
                  value = c("residential", "living_street",
                            "unclassified",
                            "service", "footway"
                  )) %>%
  osmdata_sf()

river <- getbb("Ottawa Canada")%>%
  opq()%>%
  add_osm_feature(key = "waterway", value = c("river", "canal")) %>%
  osmdata_sf()

railway <- getbb("Asheville United States")%>%
  opq()%>%
  add_osm_feature(key = "railway", value="rail") %>%
  osmdata_sf()
font_add_google(name = "Lato", family = "lato") # add custom fonts
showtext_auto()

ggplot() +
  geom_sf(data = river$osm_lines,
          inherit.aes = FALSE,
          color = "steelblue",
          size = 2,
          alpha = .5) +
  geom_sf(data = railway$osm_lines,
          inherit.aes = FALSE,
          color = "black",
          size = .2,
          linetype="dotdash",
          alpha = .5) +
  geom_sf(data = med_streets$osm_lines,
          inherit.aes = FALSE,
          color = "black",
          size = .3,
          alpha = .5) +
  geom_sf(data = small_streets$osm_lines,
          inherit.aes = FALSE,
          color = "#666666",
          size = .2,
          alpha = .3) +
  geom_sf(data = big_streets$osm_lines,
          inherit.aes = FALSE,
          color = "black",
          size = .5,
          alpha = .6) +
  coord_sf(xlim = c(-75.72572990200462, -75.64897074727642), 
           ylim = c(45.3733190987404, 45.41650005612497),
           expand = FALSE)  +
  theme_void() #+ # get rid of background color, grid lines, etc.

#  theme(plot.title = element_text(size = 20, family = "lato", face="bold", hjust=.5),
#        plot.subtitle = element_text(family = "lato", size = 8, hjust=.5, margin=margin(2, 0, 5, 0))) +
#  labs(title = "ASHEVILLE", subtitle = "35.595°N / 82.552°W")
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKVGhpcyBpcyBhbiBbUiBNYXJrZG93bl0oaHR0cDovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbSkgTm90ZWJvb2suIFdoZW4geW91IGV4ZWN1dGUgY29kZSB3aXRoaW4gdGhlIG5vdGVib29rLCB0aGUgcmVzdWx0cyBhcHBlYXIgYmVuZWF0aCB0aGUgY29kZS4gCgpUcnkgZXhlY3V0aW5nIHRoaXMgY2h1bmsgYnkgY2xpY2tpbmcgdGhlICpSdW4qIGJ1dHRvbiB3aXRoaW4gdGhlIGNodW5rIG9yIGJ5IHBsYWNpbmcgeW91ciBjdXJzb3IgaW5zaWRlIGl0IGFuZCBwcmVzc2luZyAqQ21kK1NoaWZ0K0VudGVyKi4gCgpgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkob3NtZGF0YSkgIyBwYWNrYWdlIGZvciB3b3JraW5nIHdpdGggc3RyZWV0cwpsaWJyYXJ5KHNob3d0ZXh0KSAjIGZvciBjdXN0b20gZm9udHMKbGlicmFyeShnZ21hcCkKbGlicmFyeShydmVzdCkKCmBgYAoKYGBge3J9CmdldGJiKCJPdHRhd2EgQ2FuYWRhIikKCmJpZ19zdHJlZXRzIDwtIGdldGJiKCJPdHRhd2EgQ2FuYWRhIiklPiUKICBvcHEoKSU+JQogIGFkZF9vc21fZmVhdHVyZShrZXkgPSAiaGlnaHdheSIsIAogICAgICAgICAgICAgICAgICB2YWx1ZSA9IGMoIm1vdG9yd2F5IiwgInByaW1hcnkiLCAibW90b3J3YXlfbGluayIsICJwcmltYXJ5X2xpbmsiKSkgJT4lCiAgb3NtZGF0YV9zZigpCgpiaWdfc3RyZWV0cwoKbWVkX3N0cmVldHMgPC0gZ2V0YmIoIk90dGF3YSBDYW5hZGEiKSU+JQogIG9wcSgpJT4lCiAgYWRkX29zbV9mZWF0dXJlKGtleSA9ICJoaWdod2F5IiwgCiAgICAgICAgICAgICAgICAgIHZhbHVlID0gYygic2Vjb25kYXJ5IiwgInRlcnRpYXJ5IiwgInNlY29uZGFyeV9saW5rIiwgInRlcnRpYXJ5X2xpbmsiKSkgJT4lCiAgb3NtZGF0YV9zZigpCgoKc21hbGxfc3RyZWV0cyA8LSBnZXRiYigiT3R0YXdhIENhbmFkYSIpJT4lCiAgb3BxKCklPiUKICBhZGRfb3NtX2ZlYXR1cmUoa2V5ID0gImhpZ2h3YXkiLCAKICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjKCJyZXNpZGVudGlhbCIsICJsaXZpbmdfc3RyZWV0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmNsYXNzaWZpZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlcnZpY2UiLCAiZm9vdHdheSIKICAgICAgICAgICAgICAgICAgKSkgJT4lCiAgb3NtZGF0YV9zZigpCgpyaXZlciA8LSBnZXRiYigiT3R0YXdhIENhbmFkYSIpJT4lCiAgb3BxKCklPiUKICBhZGRfb3NtX2ZlYXR1cmUoa2V5ID0gIndhdGVyd2F5IiwgdmFsdWUgPSBjKCJyaXZlciIsICJjYW5hbCIpKSAlPiUKICBvc21kYXRhX3NmKCkKCndhdGVyX2xha2UgPC0gZ2V0YmIoIk90dGF3YSBDYW5hZGEiKSU+JQogIG9wcSgpJT4lCiAgYWRkX29zbV9mZWF0dXJlKGtleSA9ICJ3YXRlcndheSIsIHZhbHVlID0gYygicml2ZXIiLCAiY2FuYWwiKSkgJT4lCiAgb3NtZGF0YV9zZigpCgpyYWlsd2F5IDwtIGdldGJiKCJBc2hldmlsbGUgVW5pdGVkIFN0YXRlcyIpJT4lCiAgb3BxKCklPiUKICBhZGRfb3NtX2ZlYXR1cmUoa2V5ID0gInJhaWx3YXkiLCB2YWx1ZT0icmFpbCIpICU+JQogIG9zbWRhdGFfc2YoKQoKYGBgCgpgYGB7cn0KZm9udF9hZGRfZ29vZ2xlKG5hbWUgPSAiTGF0byIsIGZhbWlseSA9ICJsYXRvIikgIyBhZGQgY3VzdG9tIGZvbnRzCnNob3d0ZXh0X2F1dG8oKQoKZ2dwbG90KCkgKwogIGdlb21fc2YoZGF0YSA9IHJpdmVyJG9zbV9saW5lcywKICAgICAgICAgIGluaGVyaXQuYWVzID0gRkFMU0UsCiAgICAgICAgICBjb2xvciA9ICJzdGVlbGJsdWUiLAogICAgICAgICAgc2l6ZSA9IDIsCiAgICAgICAgICBhbHBoYSA9IC41KSArCiAgZ2VvbV9zZihkYXRhID0gcmFpbHdheSRvc21fbGluZXMsCiAgICAgICAgICBpbmhlcml0LmFlcyA9IEZBTFNFLAogICAgICAgICAgY29sb3IgPSAiYmxhY2siLAogICAgICAgICAgc2l6ZSA9IC4yLAogICAgICAgICAgbGluZXR5cGU9ImRvdGRhc2giLAogICAgICAgICAgYWxwaGEgPSAuNSkgKwogIGdlb21fc2YoZGF0YSA9IG1lZF9zdHJlZXRzJG9zbV9saW5lcywKICAgICAgICAgIGluaGVyaXQuYWVzID0gRkFMU0UsCiAgICAgICAgICBjb2xvciA9ICJibGFjayIsCiAgICAgICAgICBzaXplID0gLjMsCiAgICAgICAgICBhbHBoYSA9IC41KSArCiAgZ2VvbV9zZihkYXRhID0gc21hbGxfc3RyZWV0cyRvc21fbGluZXMsCiAgICAgICAgICBpbmhlcml0LmFlcyA9IEZBTFNFLAogICAgICAgICAgY29sb3IgPSAiIzY2NjY2NiIsCiAgICAgICAgICBzaXplID0gLjIsCiAgICAgICAgICBhbHBoYSA9IC4zKSArCiAgZ2VvbV9zZihkYXRhID0gYmlnX3N0cmVldHMkb3NtX2xpbmVzLAogICAgICAgICAgaW5oZXJpdC5hZXMgPSBGQUxTRSwKICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwKICAgICAgICAgIHNpemUgPSAuNSwKICAgICAgICAgIGFscGhhID0gLjYpICsKICBjb29yZF9zZih4bGltID0gYygtNzUuNzI1NzI5OTAyMDA0NjIsIC03NS42NDg5NzA3NDcyNzY0MiksIAogICAgICAgICAgIHlsaW0gPSBjKDQ1LjM3MzMxOTA5ODc0MDQsIDQ1LjQxNjUwMDA1NjEyNDk3KSwKICAgICAgICAgICBleHBhbmQgPSBGQUxTRSkgICsKICBnZW9tX3BvaW50KGFlcyh4ID0gNDUuMzgyNzIwNTI2NTA5Mjc0LCB5ID0tNzUuNjk5MjQzNDIyMDgzMTMpICwgc2l6ZSA9IDQsIAogICAgICAgIHNoYXBlID0gMjMsIGZpbGwgPSAiZGFya3JlZCIpKwogIHRoZW1lX3ZvaWQoKSAjKyAjIGdldCByaWQgb2YgYmFja2dyb3VuZCBjb2xvciwgZ3JpZCBsaW5lcywgZXRjLgojICB0aGVtZShwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAyMCwgZmFtaWx5ID0gImxhdG8iLCBmYWNlPSJib2xkIiwgaGp1c3Q9LjUpLAojICAgICAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJsYXRvIiwgc2l6ZSA9IDgsIGhqdXN0PS41LCBtYXJnaW49bWFyZ2luKDIsIDAsIDUsIDApKSkgKwojICBsYWJzKHRpdGxlID0gIkFTSEVWSUxMRSIsIHN1YnRpdGxlID0gIjM1LjU5NcKwTiAvIDgyLjU1MsKwVyIpCmBgYAo=