{ "cells": [ { "cell_type": "markdown", "id": "0ecc554c", "metadata": {}, "source": [ "# r5r: Case Brighton - Calculate travel time matrices in R\n", "\n", "### Lesson objectives\n", "\n", "This tutorial focuses on introducing you how to compute travel time matrices by different travel modes using a relatively new R-package called `r5r`. Travel time data is fundamental information whenever aiming to analyze e.g. accessibility -related questions.\n", "\n", "### Library status\n", "\n", "`r5r` is still developing fast but it already has many useful functionalities related to spatial accessibility analysis. `r5r` has at the moment more implemented functionalities compared to `r5py`. Eventually, both of these libraries aim to provide a similar set of functionalities. \n", "\n", "### Run these codes in Binder\n", "\n", "Before you can run this Notebook, and/or do any programming, you need to launch the Binder instance. You can find buttons for activating the python environment at the top-right of this page which look like this:\n", "\n", "![Launch Binder](img/launch_binder.png)\n", "\n", "### Working with Jupyter Notebooks\n", "\n", "Jupyter Notebooks are documents that can be used and run inside the JupyterLab programming environment containing the computer code and rich text elements (such as text, figures, tables and links). \n", "\n", "**A couple of hints**:\n", "\n", "- You can **execute a cell** by clicking a given cell that you want to run and pressing Shift + Enter (or by clicking the \"Play\" button on top)\n", "- You can **change the cell-type** between `Markdown` (for writing text) and `Code` (for writing/executing code) from the dropdown menu above. \n", "\n", "See **further details and help for** [**using Notebooks and JupyterLab from here**](https://pythongis.org/part1/chapter-01/nb/04-using-jupyterlab.html). " ] }, { "cell_type": "markdown", "id": "16adc767", "metadata": {}, "source": [ "## Compute travel time matrices \n", "\n", "When trying to understand the accessibility of a specific location, you typically want to look at travel times between multiple locations (one-to-many). Next, we will learn how to calculate travel time matrices using `r5r` R-package. \n", "\n", "When calculating travel times with `r5r`, you typically need a few datasets:\n", "\n", "- **A road network dataset from OpenStreetMap** (OSM) in Protocolbuffer Binary (`.pbf`) format:\n", " - This data is used for finding the fastest routes and calculating the travel times based on walking, cycling and driving. In addition, this data is used for walking/cycling legs between stops when routing with transit.\n", " - *Hint*: Sometimes you might need modify the OSM data beforehand, e.g., by cropping the data or adding special costs for travelling (e.g., for considering slope when cycling/walking). When doing this, you should follow the instructions on the [Conveyal website](https://docs.conveyal.com/prepare-inputs#preparing-the-osm-data). For adding customized costs for pedestrian and cycling analyses, see [this repository](https://github.com/RSGInc/ladot_analysis_dataprep).\n", "\n", "- **A transit schedule dataset** in General Transit Feed Specification (GTFS.zip) format (optional):\n", " - This data contains all the necessary information for calculating travel times based on public transport, such as stops, routes, trips and the schedules when the vehicles are passing a specific stop. You can read about the [GTFS standard here](https://developers.google.com/transit/gtfs/reference).\n", " - *Hint*: `r5r` can also combine multiple GTFS files, as sometimes you might have different GTFS feeds representing, e.g., the bus and metro connections.\n", " \n", "- **Digital Elevation Model (DEM) data** (optional) in GeoTIFF format (`.tif`):\n", " - This data is used to calculate impedance for walking and cycling based on street slopes.\n", " - You can download this data directly from [USGS / NASA](https://lpdaac.usgs.gov/products/srtmgl1v003/) or use [elevatr -package](https://github.com/jhollist/elevatr)\n", "\n", "\n", "### Sample datasets\n", "\n", "In the following tutorial, we use open source datasets for Brighton & Hove:\n", "- The point dataset for this tutorial has been obtained from [WorldPop -project](https://hub.worldpop.org/project/categories?id=3) licensed under a Creative Commons Attribution 4.0 International License.\n", "- The street network is a cropped and filtered extract of OpenStreetMap (© OpenStreetMap contributors, [ODbL license](https://www.openstreetmap.org/copyright))\n", "- The GTFS transport schedule dataset for Brighton are open datasets obtained from:\n", " - Bus schedules: [Brighton & Hove Bus and Coach Company](https://www.buses.co.uk/open-data) licensed under [Open Government License Version 3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/)." ] }, { "cell_type": "markdown", "id": "b9e1c1a5", "metadata": {}, "source": [ "## Download the datasets\n", "\n", "We have prepared a Zip-package with all relevant data that helps you to start working with the tools quickly. You can download and extract the data by running the following cell. " ] }, { "cell_type": "code", "execution_count": 25, "id": "4352a271", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2022-11-29 21:45:08-- https://a3s.fi/swift/v1/AUTH_0914d8aff9684df589041a759b549fc2/R5edu/Brighton.zip\n", "Resolving a3s.fi (a3s.fi)... 86.50.254.19, 86.50.254.18\n", "Connecting to a3s.fi (a3s.fi)|86.50.254.19|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 68301274 (65M) [application/zip]\n", "Saving to: ‘data/Brighton.zip’\n", "\n", "Brighton.zip 100%[===================>] 65,14M 36,2MB/s in 1,8s \n", "\n", "2022-11-29 21:45:10 (36,2 MB/s) - ‘data/Brighton.zip’ saved [68301274/68301274]\n", "\n" ] } ], "source": [ "# Download the data from a S3 bucket into 'data' folder\n", "!wget -P data/ https://a3s.fi/swift/v1/AUTH_0914d8aff9684df589041a759b549fc2/R5edu/Brighton.zip\n", " \n", "# Extract the contents\n", "!unzip -q data/Brighton.zip -d data/" ] }, { "cell_type": "markdown", "id": "fba66e36", "metadata": {}, "source": [ "If running the cell above does not work for some reason (on your local computer), you can [manually download the data](https://a3s.fi/swift/v1/AUTH_0914d8aff9684df589041a759b549fc2/R5edu/Brighton.zip). If you do this, extract the contents of the Zip file (`Brighton.zip`) into the `/data` -folder. " ] }, { "cell_type": "markdown", "id": "1712d2c3", "metadata": {}, "source": [ "## Installation\n", "\n", "`r5r` can be installed from CRAN. However, **we will be using the latest version of the tool** by installing it directly from Github as follows:" ] }, { "cell_type": "code", "execution_count": 2, "id": "afa510b2", "metadata": {}, "outputs": [], "source": [ "# Install the CRAN version (0.7.1)\n", "#install.packages(\"r5r\")\n", "\n", "# Install the latest version of the library (0.7.9)\n", "devtools::install_github(\"ipeaGIT/r5r\", subdir = \"r-package\")" ] }, { "cell_type": "markdown", "id": "60cc8690", "metadata": {}, "source": [ "### Load the origin and destination data\n", "\n", "Let's start by downloading a sample point dataset into a dataframe that we can use as our origin and destination locations. For the sake of this exercise, we have prepared a grid of points covering parts of Sussex. The point data also contains the number of residents of each 100 meter cell:" ] }, { "cell_type": "code", "execution_count": 4, "id": "0d875909", "metadata": {}, "outputs": [], "source": [ "# Import libraries\n", "library(sf)\n", "library(data.table)\n", "library(ggplot2)\n", "library(tmap)\n", "library(tidygeocoder)\n", "library(leaflet)\n", "library(dplyr)\n", "library(osmdata)" ] }, { "cell_type": "code", "execution_count": 2, "id": "c8e57819", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
  1. 'Brighton_pop_points_2020.gpkg'
  2. 'Brighton-DEM.tif'
  3. 'brightonhove_1667288932.zip'
  4. 'brightonhove.pbf'
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'Brighton\\_pop\\_points\\_2020.gpkg'\n", "\\item 'Brighton-DEM.tif'\n", "\\item 'brightonhove\\_1667288932.zip'\n", "\\item 'brightonhove.pbf'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'Brighton_pop_points_2020.gpkg'\n", "2. 'Brighton-DEM.tif'\n", "3. 'brightonhove_1667288932.zip'\n", "4. 'brightonhove.pbf'\n", "\n", "\n" ], "text/plain": [ "[1] \"Brighton_pop_points_2020.gpkg\" \"Brighton-DEM.tif\" \n", "[3] \"brightonhove_1667288932.zip\" \"brightonhove.pbf\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Specify data directory\n", "data_path = \"data/Brighton\"\n", "\n", "# Check what files we have\n", "list.files(data_path)" ] }, { "cell_type": "code", "execution_count": 4, "id": "6105e923", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEVEREROTk53d3eIiIiR\nkZHNzc3d3d34+Pj/AQH/AgL/BAT/CAj/EBD/ICD/QED/gID///9GBS6+AAAACXBIWXMAABJ0\nAAASdAHeZh94AAAgAElEQVR4nOx9CYLjOJLkzO7MdvAAoP+/dunuuG9SUERkpllXV2VKFAmS\nMMBv/68XAABv479+egAA8DcARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkA\nFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgA\nEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAk\nAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBg\nAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUA\nkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQC\ngAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAW\nAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQ\nCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQA\nWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGAB\nQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCR\nAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKA\nBQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYA\nRAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJ\n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\n8HeiVIaMUsOi+48BIgF/JSpVUKi0A3YkALiFyo70KYsdAUQC/lJUioB98GogEvCn4SEhProh\ngUjAn4ansQkgEgBEoPKQj34IIgFAwD0ifZQ9EUAk4A/DLdEuVM77MKFAJOBPw3ylBhNVzvsw\nk0Ak4G8F+2S1bx4LIgHAE5ioG+DNhhf3ASIBfytiYe7Tkh2IBPztYOMEiAQA76HSU/YDAJGA\nvxwfV48YIBLwt+M7eAQiAcAKgEgAsAAgEgAsAIgEAAswQ6T//r8AAHTx32Mi/ef/AQAwwH+G\nRAIA4D5AJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBE\nAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkA\nFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgA\nEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAk\nAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBg\nAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUA\nkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQC\ngAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAW\nAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQ\nCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQA\nWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABYABAJAKvsghoAAAH5SURB\nVBYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFAJABY\nABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEAYAFA\nJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAFAJEA\nYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBEAoAF\nAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkAFgBE\nAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgAEAkA\nFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQCQAWAEQCgAUAkQBgAUAkAFgA\nEAkAFgBEAoAFAJEAYAFAJABYABAJABYARAKABQCRAGABQCQAWAAQ6f+3T8cCAAAAAIP8rSex\nsxyCgUgwEAkGIsFAJBiIBAORYCASDESCgUgwEAkGIsFAJBiIBAORYCASDESCgUgwEAkGIsFA\nJBiIBAORYCASDESCgUgwCEzwsVOCFMEFAAAAAElFTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "# Load population points\n", "pop_fp = file.path(data_path, \"Brighton_pop_points_2020.gpkg\")\n", "pop_points = read_sf(pop_fp)\n", "\n", "# Plot the points\n", "tm_shape(pop_points) + tm_symbols(size=0.05, col=\"red\", border.lwd=0, alpha=0.5) " ] }, { "cell_type": "markdown", "id": "9c50f658", "metadata": {}, "source": [ "Let's also check how the attribute table of the data looks like:" ] }, { "cell_type": "code", "execution_count": null, "id": "c8b52cc5", "metadata": {}, "outputs": [], "source": [ "# Check the first 5 rows\n", "head(pop_points)" ] }, { "cell_type": "markdown", "id": "7f2ea581", "metadata": {}, "source": [ "Next, we will geocode the address for Brighton Railway station. For doing this, we can use `tidygeocoder` library and its handy `.geocode()` -function:" ] }, { "cell_type": "code", "execution_count": 6, "id": "f185aeb5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Passing 1 address to the Nominatim single address geocoder\n", "\n", "Query completed in: 1 seconds\n", "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\t\n", "\t\t\n", "\t\t\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\t\n", "\t\t
\n", "\n", "\t\n", "\n" ], "text/plain": [ "HTML widgets cannot be represented in plain text (need html)" ] }, "metadata": { "text/html": { "isolated": true } }, "output_type": "display_data" } ], "source": [ "# Find coordinates of the main railway station \n", "station = data.frame(address = \"Railway station, Brighton, UK\")\n", "station = geocode(station, address, method = \"osm\")\n", "\n", "# Plot\n", "m <- leaflet(station) %>%\n", " addTiles() %>%\n", " addCircles(lng = ~long, lat = ~lat, radius=80, col=\"red\")\n", "m" ] }, { "cell_type": "code", "execution_count": 7, "id": "064da606", "metadata": {}, "outputs": [ { "data": { "application/geo+json": { "features": [ { "geometry": { "coordinates": [ -0.1407, 50.8289 ], "type": "Point" }, "properties": { "address": "Railway station, Brighton, UK" }, "type": "Feature" } ], "type": "FeatureCollection" }, "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\n", "
A sf: 1 × 2
addressgeometry
<chr><POINT [°]>
Railway station, Brighton, UKPOINT (-0.1407393 50.82886)
\n" ], "text/latex": [ "A sf: 1 × 2\n", "\\begin{tabular}{ll}\n", " address & geometry\\\\\n", " & \\\\\n", "\\hline\n", "\t Railway station, Brighton, UK & POINT (-0.1407393 50.82886)\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A sf: 1 × 2\n", "\n", "| address <chr> | geometry <POINT [°]> |\n", "|---|---|\n", "| Railway station, Brighton, UK | POINT (-0.1407393 50.82886) |\n", "\n" ], "text/plain": [ " address geometry \n", "1 Railway station, Brighton, UK POINT (-0.1407393 50.82886)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create a sf object out of the coordinates\n", "station = st_as_sf(station, coords = c(\"long\", \"lat\"), crs = \"EPSG:4326\")\n", "head(station)" ] }, { "cell_type": "markdown", "id": "96ffd53b", "metadata": {}, "source": [ "As a last thing, we need to assign a unique `id` for our station object:" ] }, { "cell_type": "code", "execution_count": 8, "id": "62ffdb3b", "metadata": {}, "outputs": [ { "data": { "application/geo+json": { "features": [ { "geometry": { "coordinates": [ -0.1407, 50.8289 ], "type": "Point" }, "properties": { "address": "Railway station, Brighton, UK", "id": 0 }, "type": "Feature" } ], "type": "FeatureCollection" }, "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\n", "
A sf: 1 × 3
addressgeometryid
<chr><POINT [°]><dbl>
Railway station, Brighton, UKPOINT (-0.1407393 50.82886)0
\n" ], "text/latex": [ "A sf: 1 × 3\n", "\\begin{tabular}{lll}\n", " address & geometry & id\\\\\n", " & & \\\\\n", "\\hline\n", "\t Railway station, Brighton, UK & POINT (-0.1407393 50.82886) & 0\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A sf: 1 × 3\n", "\n", "| address <chr> | geometry <POINT [°]> | id <dbl> |\n", "|---|---|---|\n", "| Railway station, Brighton, UK | POINT (-0.1407393 50.82886) | 0 |\n", "\n" ], "text/plain": [ " address geometry id\n", "1 Railway station, Brighton, UK POINT (-0.1407393 50.82886) 0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "station[\"id\"] = 0\n", "head(station)" ] }, { "cell_type": "markdown", "id": "789da1c9", "metadata": {}, "source": [ "## Prepare a routable network with r5r" ] }, { "cell_type": "markdown", "id": "33767cf0", "metadata": {}, "source": [ "- Next, we will prepare the routable network with `r5r`. First, we will allow the r5 engine to use 6 Gb of memory. Then we import the `r5r` library and prepare the routable network by calling `setup_r5()` -function:" ] }, { "cell_type": "code", "execution_count": 9, "id": "079e4037", "metadata": {}, "outputs": [], "source": [ "# Allow 6 GiB of memory\n", "options(java.parameters = \"-Xmx6G\")" ] }, { "cell_type": "code", "execution_count": null, "id": "77072d59", "metadata": {}, "outputs": [], "source": [ "# After allocating the memory import the r5r\n", "library(r5r)" ] }, { "cell_type": "code", "execution_count": 11, "id": "840f3a66", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using cached R5 version from /home/hentenka/.conda/envs/mamba/envs/r5edu/lib/R/library/r5r/jar/r5-v6.7-all.jar\n", "\n", "\n", "Finished building network.dat at data/Brighton/network.dat\n", "\n" ] } ], "source": [ "# Create the routable network by indicating the path where OSM, GTFS and possible DEM data are stored\n", "r5r_core = setup_r5(data_path = data_path)" ] }, { "cell_type": "markdown", "id": "7819160e", "metadata": {}, "source": [ "## Calculate travel time matrix" ] }, { "cell_type": "markdown", "id": "41a8a0ea", "metadata": {}, "source": [ "After building the routable network, we can do the routing. For this, we need to have `x` and `y` columns for both origins and destinations:" ] }, { "cell_type": "code", "execution_count": 12, "id": "2f199096", "metadata": {}, "outputs": [ { "data": { "application/geo+json": { "features": [ { "geometry": { "coordinates": [ -0.1407, 50.8289 ], "type": "Point" }, "properties": { "address": "Railway station, Brighton, UK", "id": 0, "x": -0.1407, "y": 50.8289 }, "type": "Feature" } ], "type": "FeatureCollection" }, "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\n", "
A sf: 1 × 5
addressgeometryidxy
<chr><POINT [°]><dbl><dbl><dbl>
Railway station, Brighton, UKPOINT (-0.1407393 50.82886)0-0.140739350.82886
\n" ], "text/latex": [ "A sf: 1 × 5\n", "\\begin{tabular}{lllll}\n", " address & geometry & id & x & y\\\\\n", " & & & & \\\\\n", "\\hline\n", "\t Railway station, Brighton, UK & POINT (-0.1407393 50.82886) & 0 & -0.1407393 & 50.82886\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A sf: 1 × 5\n", "\n", "| address <chr> | geometry <POINT [°]> | id <dbl> | x <dbl> | y <dbl> |\n", "|---|---|---|---|---|\n", "| Railway station, Brighton, UK | POINT (-0.1407393 50.82886) | 0 | -0.1407393 | 50.82886 |\n", "\n" ], "text/plain": [ " address geometry id x \n", "1 Railway station, Brighton, UK POINT (-0.1407393 50.82886) 0 -0.1407393\n", " y \n", "1 50.82886" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Parse the lat, lon coordinates (i.e. y, x)\n", "station[c(\"x\", \"y\")] = st_coordinates(station)\n", "head(station)" ] }, { "cell_type": "code", "execution_count": 13, "id": "c5aaeac4", "metadata": {}, "outputs": [ { "data": { "application/geo+json": { "features": [ { "geometry": { "coordinates": [ -0.4992, 50.9725 ], "type": "Point" }, "properties": { "id": 0, "population": 10.1127, "x": -0.4992, "y": 50.9725 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9717 ], "type": "Point" }, "properties": { "id": 1, "population": 19.5797, "x": -0.4992, "y": 50.9717 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9708 ], "type": "Point" }, "properties": { "id": 2, "population": 12.1789, "x": -0.4992, "y": 50.9708 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9683 ], "type": "Point" }, "properties": { "id": 3, "population": 5.552, "x": -0.4992, "y": 50.9683 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9675 ], "type": "Point" }, "properties": { "id": 4, "population": 2.5518, "x": -0.4992, "y": 50.9675 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9667 ], "type": "Point" }, "properties": { "id": 5, "population": 2.6376, "x": -0.4992, "y": 50.9667 }, "type": "Feature" } ], "type": "FeatureCollection" }, "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A sf: 6 × 5
xypopulationidgeom
<dbl><dbl><dbl><dbl><POINT [°]>
-0.499166650.9725010.1126790POINT (-0.4991666 50.9725)
-0.499166650.9716719.5797121POINT (-0.4991666 50.97167)
-0.499166650.9708312.1788642POINT (-0.4991666 50.97083)
-0.499166650.96833 5.5520003POINT (-0.4991666 50.96833)
-0.499166650.96750 2.5518254POINT (-0.4991666 50.9675)
-0.499166650.96667 2.6376145POINT (-0.4991666 50.96667)
\n" ], "text/latex": [ "A sf: 6 × 5\n", "\\begin{tabular}{lllll}\n", " x & y & population & id & geom\\\\\n", " & & & & \\\\\n", "\\hline\n", "\t -0.4991666 & 50.97250 & 10.112679 & 0 & POINT (-0.4991666 50.9725)\\\\\n", "\t -0.4991666 & 50.97167 & 19.579712 & 1 & POINT (-0.4991666 50.97167)\\\\\n", "\t -0.4991666 & 50.97083 & 12.178864 & 2 & POINT (-0.4991666 50.97083)\\\\\n", "\t -0.4991666 & 50.96833 & 5.552000 & 3 & POINT (-0.4991666 50.96833)\\\\\n", "\t -0.4991666 & 50.96750 & 2.551825 & 4 & POINT (-0.4991666 50.9675)\\\\\n", "\t -0.4991666 & 50.96667 & 2.637614 & 5 & POINT (-0.4991666 50.96667)\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A sf: 6 × 5\n", "\n", "| x <dbl> | y <dbl> | population <dbl> | id <dbl> | geom <POINT [°]> |\n", "|---|---|---|---|---|\n", "| -0.4991666 | 50.97250 | 10.112679 | 0 | POINT (-0.4991666 50.9725) |\n", "| -0.4991666 | 50.97167 | 19.579712 | 1 | POINT (-0.4991666 50.97167) |\n", "| -0.4991666 | 50.97083 | 12.178864 | 2 | POINT (-0.4991666 50.97083) |\n", "| -0.4991666 | 50.96833 | 5.552000 | 3 | POINT (-0.4991666 50.96833) |\n", "| -0.4991666 | 50.96750 | 2.551825 | 4 | POINT (-0.4991666 50.9675) |\n", "| -0.4991666 | 50.96667 | 2.637614 | 5 | POINT (-0.4991666 50.96667) |\n", "\n" ], "text/plain": [ " x y population id geom \n", "1 -0.4991666 50.97250 10.112679 0 POINT (-0.4991666 50.9725) \n", "2 -0.4991666 50.97167 19.579712 1 POINT (-0.4991666 50.97167)\n", "3 -0.4991666 50.97083 12.178864 2 POINT (-0.4991666 50.97083)\n", "4 -0.4991666 50.96833 5.552000 3 POINT (-0.4991666 50.96833)\n", "5 -0.4991666 50.96750 2.551825 4 POINT (-0.4991666 50.9675) \n", "6 -0.4991666 50.96667 2.637614 5 POINT (-0.4991666 50.96667)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Our population points already has the `x` and `y` columns\n", "head(pop_points)" ] }, { "cell_type": "code", "execution_count": 14, "id": "e6e04148", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Warning message in assign_points_input(origins, \"origins\"):\n", "“'origins$id' forcefully cast to character.”\n", "Warning message in assign_points_input(destinations, \"destinations\"):\n", "“'destinations$id' forcefully cast to character.”\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.table: 6 × 3
from_idto_idtravel_time_p50
<chr><chr><int>
08549112
08550113
08551113
08552114
08553112
08554112
\n" ], "text/latex": [ "A data.table: 6 × 3\n", "\\begin{tabular}{lll}\n", " from\\_id & to\\_id & travel\\_time\\_p50\\\\\n", " & & \\\\\n", "\\hline\n", "\t 0 & 8549 & 112\\\\\n", "\t 0 & 8550 & 113\\\\\n", "\t 0 & 8551 & 113\\\\\n", "\t 0 & 8552 & 114\\\\\n", "\t 0 & 8553 & 112\\\\\n", "\t 0 & 8554 & 112\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.table: 6 × 3\n", "\n", "| from_id <chr> | to_id <chr> | travel_time_p50 <int> |\n", "|---|---|---|\n", "| 0 | 8549 | 112 |\n", "| 0 | 8550 | 113 |\n", "| 0 | 8551 | 113 |\n", "| 0 | 8552 | 114 |\n", "| 0 | 8553 | 112 |\n", "| 0 | 8554 | 112 |\n", "\n" ], "text/plain": [ " from_id to_id travel_time_p50\n", "1 0 8549 112 \n", "2 0 8550 113 \n", "3 0 8551 113 \n", "4 0 8552 114 \n", "5 0 8553 112 \n", "6 0 8554 112 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Set parameters\n", "mode = c(\"WALK\", \"TRANSIT\")\n", "max_walk_time = 30 # minutes\n", "max_trip_duration = 120 # minutes\n", "departure_datetime = as.POSIXct(\"01-12-2022 8:30:00\",\n", " format = \"%d-%m-%Y %H:%M:%S\")\n", "\n", "# Calculate the travel time matrix by Transit\n", "ttm = travel_time_matrix(r5r_core = r5r_core,\n", " origins = station,\n", " destinations = pop_points,\n", " mode = mode,\n", " departure_datetime = departure_datetime,\n", " max_walk_time = max_walk_time,\n", " max_trip_duration = max_trip_duration)\n", "\n", "head(ttm)" ] }, { "cell_type": "markdown", "id": "5e686e2b", "metadata": {}, "source": [ "- Now we can join the travel time information back to the population points" ] }, { "cell_type": "code", "execution_count": 15, "id": "19b9f035", "metadata": {}, "outputs": [ { "data": { "application/geo+json": { "features": [ { "geometry": { "coordinates": [ -0.3367, 50.8875 ], "type": "Point" }, "properties": { "from_id": "0", "id": 8549, "population": 4.9909, "travel_time_p50": 112, "x": -0.3367, "y": 50.8875 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3367, 50.8867 ], "type": "Point" }, "properties": { "from_id": "0", "id": 8550, "population": 6.1998, "travel_time_p50": 113, "x": -0.3367, "y": 50.8867 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3367, 50.8858 ], "type": "Point" }, "properties": { "from_id": "0", "id": 8551, "population": 10.519, "travel_time_p50": 113, "x": -0.3367, "y": 50.8858 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3367, 50.885 ], "type": "Point" }, "properties": { "from_id": "0", "id": 8552, "population": 13.4277, "travel_time_p50": 114, "x": -0.3367, "y": 50.885 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3367, 50.8842 ], "type": "Point" }, "properties": { "from_id": "0", "id": 8553, "population": 13.3965, "travel_time_p50": 112, "x": -0.3367, "y": 50.8842 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3367, 50.8833 ], "type": "Point" }, "properties": { "from_id": "0", "id": 8554, "population": 7.7258, "travel_time_p50": 112, "x": -0.3367, "y": 50.8833 }, "type": "Feature" } ], "type": "FeatureCollection" }, "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A sf: 6 × 7
xypopulationidgeomfrom_idtravel_time_p50
<dbl><dbl><dbl><dbl><POINT [°]><chr><int>
-0.336666650.88750 4.9908548549POINT (-0.3366666 50.8875)0112
-0.336666650.88667 6.1998408550POINT (-0.3366666 50.88667)0113
-0.336666650.8858310.5190168551POINT (-0.3366666 50.88583)0113
-0.336666650.8850013.4276578552POINT (-0.3366666 50.885)0114
-0.336666650.8841713.3965148553POINT (-0.3366666 50.88417)0112
-0.336666650.88333 7.7257848554POINT (-0.3366666 50.88333)0112
\n" ], "text/latex": [ "A sf: 6 × 7\n", "\\begin{tabular}{lllllll}\n", " x & y & population & id & geom & from\\_id & travel\\_time\\_p50\\\\\n", " & & & & & & \\\\\n", "\\hline\n", "\t -0.3366666 & 50.88750 & 4.990854 & 8549 & POINT (-0.3366666 50.8875) & 0 & 112\\\\\n", "\t -0.3366666 & 50.88667 & 6.199840 & 8550 & POINT (-0.3366666 50.88667) & 0 & 113\\\\\n", "\t -0.3366666 & 50.88583 & 10.519016 & 8551 & POINT (-0.3366666 50.88583) & 0 & 113\\\\\n", "\t -0.3366666 & 50.88500 & 13.427657 & 8552 & POINT (-0.3366666 50.885) & 0 & 114\\\\\n", "\t -0.3366666 & 50.88417 & 13.396514 & 8553 & POINT (-0.3366666 50.88417) & 0 & 112\\\\\n", "\t -0.3366666 & 50.88333 & 7.725784 & 8554 & POINT (-0.3366666 50.88333) & 0 & 112\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A sf: 6 × 7\n", "\n", "| x <dbl> | y <dbl> | population <dbl> | id <dbl> | geom <POINT [°]> | from_id <chr> | travel_time_p50 <int> |\n", "|---|---|---|---|---|---|---|\n", "| -0.3366666 | 50.88750 | 4.990854 | 8549 | POINT (-0.3366666 50.8875) | 0 | 112 |\n", "| -0.3366666 | 50.88667 | 6.199840 | 8550 | POINT (-0.3366666 50.88667) | 0 | 113 |\n", "| -0.3366666 | 50.88583 | 10.519016 | 8551 | POINT (-0.3366666 50.88583) | 0 | 113 |\n", "| -0.3366666 | 50.88500 | 13.427657 | 8552 | POINT (-0.3366666 50.885) | 0 | 114 |\n", "| -0.3366666 | 50.88417 | 13.396514 | 8553 | POINT (-0.3366666 50.88417) | 0 | 112 |\n", "| -0.3366666 | 50.88333 | 7.725784 | 8554 | POINT (-0.3366666 50.88333) | 0 | 112 |\n", "\n" ], "text/plain": [ " x y population id geom from_id\n", "1 -0.3366666 50.88750 4.990854 8549 POINT (-0.3366666 50.8875) 0 \n", "2 -0.3366666 50.88667 6.199840 8550 POINT (-0.3366666 50.88667) 0 \n", "3 -0.3366666 50.88583 10.519016 8551 POINT (-0.3366666 50.88583) 0 \n", "4 -0.3366666 50.88500 13.427657 8552 POINT (-0.3366666 50.885) 0 \n", "5 -0.3366666 50.88417 13.396514 8553 POINT (-0.3366666 50.88417) 0 \n", "6 -0.3366666 50.88333 7.725784 8554 POINT (-0.3366666 50.88333) 0 \n", " travel_time_p50\n", "1 112 \n", "2 113 \n", "3 113 \n", "4 114 \n", "5 112 \n", "6 112 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Convert 'to_id' back to integer which is needed for the join\n", "ttm[, to_id:=as.numeric(to_id)]\n", "\n", "# Make inner join - the key in left is 'id' and in right 'to_id'\n", "geo = inner_join(pop_points, ttm, by=c(id = \"to_id\"))\n", "head(geo)" ] }, { "cell_type": "markdown", "id": "04d778e7", "metadata": {}, "source": [ "- Finally, we can visualize the travel time map and investigate how the railway station in Brighton can be accessed from different parts of the region, by public transport." ] }, { "cell_type": "code", "execution_count": 16, "id": "f333c4e0", "metadata": {}, "outputs": [ { "data": { "image/png": "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\nQe/xs+a/91A/teLU9Cc/aSl+3Lx5pxCiYMiV/RvumDN70eEi1eaZMz8Vpw0ffqYQO//67opE\ny/8e2CWx74jGF/68V2z33/++wtPWNu7T96wj36vWrVsJEe/Tp92Rd9K6dQux/9tv93rRnrzz\nLjq34ZEvGvTu0zMm/rl8xUEhvvvuOyHWL/z42EEPvDh77utT7+lfb9HTV/Ue+sdKIcS+ffuE\nUgjVyM3NPfwKAGSFcM7SBYKUub8DLVq31j78u5VTH3p02vxPv9y6a2/NwYRIHKgRot2hQ0II\n0fyyKy/65fw3X1/4+7596yn1um6PD+8ohKioqBBi2x8uzPuD/vZbtng60iI/P1/9PCcnx+DA\noUOHUrbHxnf7hNat6x/9Kq+g4FhRW129W4jTJyz66pac/LYtmygBc8Bll52Zc+olMx4o/fSa\nicccc4wQNTU1Qmg6Y/ft2ydEfp7duiUASGBGrxxG2iGbZS7Y1akvbX7x8gtGf1Aw9P9NfKhf\np5ZNc+vHvph4/pBpR15udsmVPz/2L2+8vvCZvn2/mjlzRazn5CuLhTjce3nStS//eXSx7vbH\nFWeiGJl+e+rXr6/9MpFICFGvXj0hco8/8aS6K5c0H3jZ+bkzylat+k70a91aiG3btglx9LmJ\nqqptIqekTaG7twIAXlm6vkY7DZYOWcA/4ahab50z7a/fnjj2L6/e3edw/DmwoXa35oTGg64c\n1OTNN99Y8sxJi2Ytq3/us8PiQggh2rZrJ8TyQ81LevbM+IIpQnjRnqrKykPizCMX79669T/i\nmBNOaCpEovb77btjhS2aHL1x7d69+0UsL+8YcXLXrseJV1asqBHF6s/L1Z9++qPofFbXBvpH\nAIDUKNohmwUUh2KxmBAHDpj9Rfv++++FOC4//0hrEl9PfeYve4U4ePDIZNK8gVde0nTrvHl/\nefON5Q0uHHH54WkCx/f/75J638+ZNvs79V6J8um3XXff6+sc/qVO0UKb0m/Pf97/y/v/OfLF\nnr/+dYmo171H93qi6g8XHN/qJyP/XH30xhV//OPfDtXv0bf3MaLeub+4rHDf21OmVSQOv7r3\ng+f+uCanZNiQU9J7RwDghaXra5QP63MCaw8gq4Aqdq1btxbi4z899ucGndr1GJK0Ym5R375x\n8dwLv5505t29j/t21VulT/+z9039/jpp+btl/zj/yh5nnthIHHPRlZce//Jr45776pj/njFE\n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\nn8+/L/7eqMEPLjtodb7WtjmPTXAU7IzvmfjsfwcMfbXB9WWfrl397hNnfn7voLFv7rFsGwBE\nAhMjgKgLRVesYbbbldOvbPn8O0ua1Dn65csvLOz6wLQJ/Tu1Ky655vmJl1W8OHXhIfPzj9pa\net7J4z/aVza0ceMRs4UQ+zfPmzC4y8kFTZq3ObXPqOdW7ja4xvieOyoOdLp18pQx53Zoe1LX\noRNvu2DXwoVfWLYNANIUQG8sqQ6QQHDLnTjdFeecUeOFEGvrHty3YsWaeElJq8Nf5pWUnL7z\n5eWbRL+Tjc/XaD32H3NXNR94YMaePw4UIrHm0YGXvtH9lffKL47/uPzpywf0u7pZ+Zzh+Tba\nIE4Y/MTswepXW7ZsqRc/v41l2wAgfT3b5y5dX2P2khLL0t86zGxTbwCREIqKnbAd+3bt3Hko\nP/9o/CooKBDV1dXOn/fptJdW/2zcxKEdmjbMO+Hsu+4ZmjO3bN4Pjm/z478eH/Xk97985IYT\nPWwbAJgwXHlYeySwqhvlPSCcIrZAcSKRSDoWi8Uc36e2vHxLfocOR1JYTlFR20Mfln8txBkO\n2lK94IHBl8846bm/PX1eEw/bBgBaw5cc0E2MTc52xCwAirBU7GwqKCysp62CVVdXi8LCQlf3\n0oauRCLhLIQdLH9lRM9fvNtnxpJXhhfleN42ANAYvuSAWSesqJvqPOlFTRkTyZFAaIUl2Nlc\ngTO3e/cztixZUnH4yz0ffbSqVY8ebR0/rmFxcXznl18eWaakdt26TfWLi0+ye/mOeaMvuHP7\nbX//cOKFLdU06FXbACCZWbbzPNWptzVLb6Q6IMyC64pVehNsn17z7dbqvYfE9u/3i9rdVZWV\nB0Ru81YtGhePuPmCR+4d9ejppcNP+nb+vXfNO23MinNi5ufX194zLy+vdvX68l3fFTbrft3o\nM59+asLs854a1PK7j37z8Kz6Q6YNbGyvDf95d/zoWR3vW3zp8bsqK3cJIYTIPa51i0ambQMA\nDzjagsLahpGN7OQzMhwQOYFW7Ax/Kg1fcsDo+KLxneLxeLzvk2vEsge7xuPx+KCpVUKINjeW\nzR3bZOaIbh06D578w7DX3rz7tJjV+Vrdho0uWX1v547XvLZTdBg/s6z/V/f0KGzWpteYpV1K\nP5w6pLnNNix8bWbVD/PH/DR+1NCXd1m0DQACEu/cMtNNAJBJMaMh/1ZWrly5ePHisWPH+tQg\n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\nsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIO\nACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCA\nEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEII\nOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewA\nAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAI\nIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISw\nAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4A\nIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQ\nwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7\nAIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAA\nQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh\n7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBB/Akp0W5No\n5EyoAAAAAElFTkSuQmCC", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "# Plot the travel times\n", "tm_shape(geo) + tm_symbols(col=\"travel_time_p50\", size=0.5, border.lwd=0)" ] }, { "cell_type": "markdown", "id": "598e802a", "metadata": {}, "source": [ "## Calculate travel times by bike" ] }, { "cell_type": "markdown", "id": "18d0c673", "metadata": {}, "source": [ "In a very similar manner, we can calculate travel times by cycling. We only need to modify our `TravelTimeMatrixComputer` object a little bit. We specify the cycling speed by using the parameter `speed_cycling` and we change the `transport_modes` parameter to correspond to `[LegMode.BICYCLE`. This will initialize the object for cycling analyses:" ] }, { "cell_type": "code", "execution_count": 17, "id": "8fba71c0", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Warning message in assign_points_input(origins, \"origins\"):\n", "“'origins$id' forcefully cast to character.”\n", "Warning message in assign_points_input(destinations, \"destinations\"):\n", "“'destinations$id' forcefully cast to character.”\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.table: 6 × 3
from_idto_idtravel_time_p50
<chr><chr><int>
06174119
06247119
06316119
06380120
06437120
06438119
\n" ], "text/latex": [ "A data.table: 6 × 3\n", "\\begin{tabular}{lll}\n", " from\\_id & to\\_id & travel\\_time\\_p50\\\\\n", " & & \\\\\n", "\\hline\n", "\t 0 & 6174 & 119\\\\\n", "\t 0 & 6247 & 119\\\\\n", "\t 0 & 6316 & 119\\\\\n", "\t 0 & 6380 & 120\\\\\n", "\t 0 & 6437 & 120\\\\\n", "\t 0 & 6438 & 119\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.table: 6 × 3\n", "\n", "| from_id <chr> | to_id <chr> | travel_time_p50 <int> |\n", "|---|---|---|\n", "| 0 | 6174 | 119 |\n", "| 0 | 6247 | 119 |\n", "| 0 | 6316 | 119 |\n", "| 0 | 6380 | 120 |\n", "| 0 | 6437 | 120 |\n", "| 0 | 6438 | 119 |\n", "\n" ], "text/plain": [ " from_id to_id travel_time_p50\n", "1 0 6174 119 \n", "2 0 6247 119 \n", "3 0 6316 119 \n", "4 0 6380 120 \n", "5 0 6437 120 \n", "6 0 6438 119 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define parameters\n", "mode = \"BICYCLE\"\n", "max_trip_duration = 120 # minutes\n", "max_bike_time = 120 # minutes\n", "departure_datetime <- as.POSIXct(\"01-12-2022 8:30:00\",\n", " format = \"%d-%m-%Y %H:%M:%S\")\n", "bike_speed = 16 # km/h\n", "\n", "# Calculate the travel time matrix by Transit\n", "ttm = travel_time_matrix(r5r_core = r5r_core,\n", " origins = station,\n", " destinations = pop_points,\n", " mode = mode,\n", " departure_datetime = departure_datetime,\n", " max_bike_time = max_bike_time,\n", " max_trip_duration = max_trip_duration,\n", " bike_speed = bike_speed\n", " )\n", "\n", "head(ttm)" ] }, { "cell_type": "markdown", "id": "ef1a3a3b", "metadata": {}, "source": [ "- Let's again make a table join with the population grid" ] }, { "cell_type": "code", "execution_count": 18, "id": "1a16bc4d", "metadata": {}, "outputs": [ { "data": { "application/geo+json": { "features": [ { "geometry": { "coordinates": [ -0.3942, 50.8067 ], "type": "Point" }, "properties": { "from_id": "0", "id": 6174, "population": 20.3148, "travel_time_p50": 119, "x": -0.3942, "y": 50.8067 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3933, 50.8067 ], "type": "Point" }, "properties": { "from_id": "0", "id": 6247, "population": 20.5851, "travel_time_p50": 119, "x": -0.3933, "y": 50.8067 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3925, 50.8067 ], "type": "Point" }, "properties": { "from_id": "0", "id": 6316, "population": 20.4987, "travel_time_p50": 119, "x": -0.3925, "y": 50.8067 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3917, 50.8083 ], "type": "Point" }, "properties": { "from_id": "0", "id": 6380, "population": 26.297, "travel_time_p50": 120, "x": -0.3917, "y": 50.8083 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3908, 50.8092 ], "type": "Point" }, "properties": { "from_id": "0", "id": 6437, "population": 25.5041, "travel_time_p50": 120, "x": -0.3908, "y": 50.8092 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.3908, 50.8083 ], "type": "Point" }, "properties": { "from_id": "0", "id": 6438, "population": 25.8917, "travel_time_p50": 119, "x": -0.3908, "y": 50.8083 }, "type": "Feature" } ], "type": "FeatureCollection" }, "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A sf: 6 × 7
xypopulationidgeomfrom_idtravel_time_p50
<dbl><dbl><dbl><dbl><POINT [°]><chr><int>
-0.394166650.8066720.314806174POINT (-0.3941666 50.80667)0119
-0.393333350.8066720.585116247POINT (-0.3933333 50.80667)0119
-0.392500050.8066720.498686316POINT (-0.3925 50.80667)0119
-0.391666650.8083326.296996380POINT (-0.3916666 50.80833)0120
-0.390833350.8091725.504076437POINT (-0.3908333 50.80917)0120
-0.390833350.8083325.891686438POINT (-0.3908333 50.80833)0119
\n" ], "text/latex": [ "A sf: 6 × 7\n", "\\begin{tabular}{lllllll}\n", " x & y & population & id & geom & from\\_id & travel\\_time\\_p50\\\\\n", " & & & & & & \\\\\n", "\\hline\n", "\t -0.3941666 & 50.80667 & 20.31480 & 6174 & POINT (-0.3941666 50.80667) & 0 & 119\\\\\n", "\t -0.3933333 & 50.80667 & 20.58511 & 6247 & POINT (-0.3933333 50.80667) & 0 & 119\\\\\n", "\t -0.3925000 & 50.80667 & 20.49868 & 6316 & POINT (-0.3925 50.80667) & 0 & 119\\\\\n", "\t -0.3916666 & 50.80833 & 26.29699 & 6380 & POINT (-0.3916666 50.80833) & 0 & 120\\\\\n", "\t -0.3908333 & 50.80917 & 25.50407 & 6437 & POINT (-0.3908333 50.80917) & 0 & 120\\\\\n", "\t -0.3908333 & 50.80833 & 25.89168 & 6438 & POINT (-0.3908333 50.80833) & 0 & 119\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A sf: 6 × 7\n", "\n", "| x <dbl> | y <dbl> | population <dbl> | id <dbl> | geom <POINT [°]> | from_id <chr> | travel_time_p50 <int> |\n", "|---|---|---|---|---|---|---|\n", "| -0.3941666 | 50.80667 | 20.31480 | 6174 | POINT (-0.3941666 50.80667) | 0 | 119 |\n", "| -0.3933333 | 50.80667 | 20.58511 | 6247 | POINT (-0.3933333 50.80667) | 0 | 119 |\n", "| -0.3925000 | 50.80667 | 20.49868 | 6316 | POINT (-0.3925 50.80667) | 0 | 119 |\n", "| -0.3916666 | 50.80833 | 26.29699 | 6380 | POINT (-0.3916666 50.80833) | 0 | 120 |\n", "| -0.3908333 | 50.80917 | 25.50407 | 6437 | POINT (-0.3908333 50.80917) | 0 | 120 |\n", "| -0.3908333 | 50.80833 | 25.89168 | 6438 | POINT (-0.3908333 50.80833) | 0 | 119 |\n", "\n" ], "text/plain": [ " x y population id geom from_id\n", "1 -0.3941666 50.80667 20.31480 6174 POINT (-0.3941666 50.80667) 0 \n", "2 -0.3933333 50.80667 20.58511 6247 POINT (-0.3933333 50.80667) 0 \n", "3 -0.3925000 50.80667 20.49868 6316 POINT (-0.3925 50.80667) 0 \n", "4 -0.3916666 50.80833 26.29699 6380 POINT (-0.3916666 50.80833) 0 \n", "5 -0.3908333 50.80917 25.50407 6437 POINT (-0.3908333 50.80917) 0 \n", "6 -0.3908333 50.80833 25.89168 6438 POINT (-0.3908333 50.80833) 0 \n", " travel_time_p50\n", "1 119 \n", "2 119 \n", "3 119 \n", "4 120 \n", "5 120 \n", "6 119 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Convert 'to_id' back to integer which is needed for the join\n", "ttm[, to_id:=as.numeric(to_id)]\n", "\n", "# Make inner join - the key in left is 'id' and in right 'to_id'\n", "geo = inner_join(pop_points, ttm, by=c(id = \"to_id\"))\n", "head(geo)" ] }, { "cell_type": "markdown", "id": "734b3109", "metadata": {}, "source": [ "- And plot the data" ] }, { "cell_type": "code", "execution_count": 19, "id": "0176d21b", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAIAAAByhViMAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOzde3wU9b3/8e8mIEa5NQkRggEpARSRQoAAilVU+jsWRD1CRYVq8cKxpQhY\nrHg71lu9Ak21FcXSKrGKRami1NrWCigoN7VoC5xGgQhoIIJgRUKyvz8GlmF2ZnZmdi7f+e7r\n+ciDRzI7u/vNkp157+d7mUQymRQAAACIv7yoGwAAAAB/EOwAAAAUQbADAABQBMEOAABAEQQ7\nAAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABF\nEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAA\nABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGw\nAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQ\nBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4A\nAEARBDsAAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEE\nOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAA\nRRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwA\nAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRB\nsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAA\nUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQBMEO\nAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEAR\nBDsAAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAA\nAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDs\nAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAU\nQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMA\nAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATB\nDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQBMEOAABA\nEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsA\nAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ\n7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbADAABQBMEOAABAEQQ7AAAARRDsAAAA\nFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAEwQ4AAEARBDsAAABFEOwAAAAUQbAD\nAABQBMEOAABAEQQ7AAAARRDsAAAAFEGwAwAAUATBDgAAQBEEOwAAAEUQ7AAAABRBsAMAAFAE\nwQ4AAEARBDsAAABFNHN7hz179rz99ttBNAUAAAApAwcObNWqlau7uA52GzdufPrpp88991y3\ndwQAAIBDixcvLiwsrKiocHUv18FOCNGnT5/Ro0d7uCMAAACc2LZtm4d7eQl2AADYm9m3efrG\nKWsbwm8JkFOYPAEA8JlpqrPZDsAvBDsAgJ/s0xvZDggUwQ4A4BsnuY1sBwSHYAcAAKAIgh0A\nIGwU7YCAMCsWANSRCkzMPwVyE8EOAFRgqIFpP0ob76RtGBB3dMUCQOyxvAgADcEOAOKN5UUA\npBDsAAC+cdLHSj8sEBzG2AGQS5YVJuehIeMTZZ8/0p/C90zjcN24MLPUlLUNNq0i1QGBItgB\nkEj2/YYOJw0EnYdsBr3lQrJJ/Y7M0gVCRrADIIvQRoM5f6IgrmSfI9lOkzu/KSAJxtgBiN7M\nvs39TXWBZsSMD579Dn61BECuoWIHIGIhpxNfni77MWRO6naGZ/Fc/aJsBuQOKnYA4Ce/gmP6\n45guQQwAelTsAESJdJLO5jXxMD7P7f5+lQmzZ/U6UIAEbBDsACAa3mZRuIrCrh7f9JEjuTRZ\nxiWXyXaAFbpiAeQWyTNBVCXMeJVOfZ9tAze2zxqSSJx4yzrXd6x9cJC3Owbo3VtOTKS7YN6B\nQzvsef93U0b0LWtb0OLY4vJTx9z5ymapjyBU7AAAGYVZJHO7GI3kST1Y795S3vdf9yb/MCrq\nhlg6ooWt+o257rqvTi2OulF6u3fvFs0H/fhXV/bWbz1hcL4QQojkxl+dd/qP3m5//tS7pvQ8\ntm7Fbx+6/bzTNy9a+/i5hZG01gmCHQA1WWURKj3eXoFwsp2HtuVyz+y2pUv/LdqZ3nRgf0Pe\nUc0j75U7soVthk6eNTTK5pjYvXu3aP2t/77qqjNNbvzqjz+75Y3kub97Y+H32wshxGVjzzr2\nWxX3/+QXU879Wc9w2+lc5P/pABCInD3Zp6S/Aqr2YCr5S2U0578SpZOWCLFgdCKR6H/vx2Lr\njFMTiTMf/uCVn5xa1vLo0x7aLIQQX33wzPRRg7qVfqOgoHWHbv3Pv/GZD/YKIcTWWUPyE8VX\nvnZA/5C1Dw7KS5T+aGmjECL52ZtV1wzrVdr66KMKvtG574jJv1nzhbsG7k1rob4rtu6XZyQS\np/9i/du/uGxA5zZHH926Y9/vPfjWFwe2vHjzyN6lrQpatT/x7EkL/r3/0KN5bs/m+ysTidNm\nvPfGvRdXnvCNghYFRV2H/OCXq3Zrtzbs3v2VaN26teldG19//sXPjz3v6kvaH9rSvO9V3++X\n/HDB8/9y91qEiWAHIIdIlQACjZ6mqS64p0P4LvjlyqrzWwpx1n0rV6586opScdRRRwnx+UtT\nb1hecX3Vb247t0iIz+ZffsYlD/6j7MoH5r300tP3XtJuzf2XDPvxy7uEKB1z6Rn5O//4h9d1\nyW7z/PnvJDtfMnZIvtjz96mnD53yYsP/u33eK395cc7UQZ/+7srTz33wg0YXDTwmrYV6zZo1\nE2Lzk1f9dN05MxevXrv4tm9tfW7auEsvuvShA5c98frad+ZPKF75y0uufGybEEJk057mzZsL\n8e9fj5m85vS7X1y9btWiOwZtmzdp2OXz6oTQCnaHgl3T11993aS/60fvv79H9PzWt/TvnPK+\nfVuKf7333n4hK4IdgFwhW7IJ4nplVg8i2+/uO+V/wXTF3fp3K84X4hvf7N+//0ntj9Ki0vtv\nt7vz1Ycnj//+ed9qJRo2bEoO+M70R5++8bLh55wz4vI7nr37v5pte/b3f28Sov33Lj2z2c6F\nf3g9lY0+nj9/ZbLr2HGDE6LmkZ/8YsPxE1949aFrRp717WEXXffrxVUjm7111z2vfOW8gXlp\nLdRLJBJCbN495KHZPxjSs/ykoT+58eISUfOnT89/8r6LB/QoP+XcW6eOOKbhraUrGoXIqj2J\nREKIT/cOfWjexGG9v9n1lLN/9NtHxx+364+/nLdZHAx2+9799WWDOrUpKDjm6ILint+d+vS/\ntIfdtm2bEMcdd9wRj1dSUiIat237zPkLETKCHYAoBVS1inU/rIfGT1nboP+SpFXSPovKmp1z\nwXktD/3QfMi05xa/esfQVOht3aNHe/HV5s07hBDFoy4ddtRnCxcsPVik2jx//jvi5LFj+wix\n489/Wp1s/18j+ib3HdLyO98dnNj917+u9rW1LU8/s9+hHFJa2kGIstNP73zoNyktbScaPv/8\nSz/aU3DWuWekgmXzIacPSoh3V61uFGLXrl1CbFzy1jHn3fb4gpf+MOemYXlLZ142ZPRva4UQ\n+/btE1ohVKdFixYHb5EUkycAKCiXB9Sny8FqVu5qV1qqP7HvWjPnjrvnLn5n/db6L79uTIrk\nga+F6NzUJIQQbS+69NwfLn7hD0t+deaZeVq9rv+9Y08UQmzZskWI7b/+TsGvjQ//yScHjJuy\nUVRUlPq+WbNmJhuampoytsdBkjmutDT/8E8FxcXHiP11dbuF6DV96Uc/albUqX0rLWAOv+ii\nPs1OumDebVXvXHH/0UcfLcTXX38thO4dtG/fPiGKCgo8/LrhINgBiNiUtQ1BJA9DtpMw3NhE\nT7evSdBBNsyU7O3vgRx/0BH1pc2PX3zONX8vHv2z++8Y2rN96xb5iQ/uP3vU3EM3t7ng0u8e\n88fn/7Dkl2ee+dH8+asTg2ZdWi7Ewd7LE37w1O+vKTc8/DfKo+joy749+fn5+h+TyaQQeXl5\nQrQoPP6EI1cuaTviorNbzKt+//1dYmhpqRDbt28X4vDzJrdt2y6aVXYs8farhIBgByB6wWU7\nEdtTfkCviQdSXXYCLmxdOPfPnx8/6Y/P3Hj6wfhz4P/279bt0PK8S89r9cILzy//5QlLn1uZ\nf8bDY8qEEEJ06txZiFVNbSsHDZJiwFb27dlWW9sk+hy68+6tW/8jjj7uuNZCJPd/8enuREm7\nVocfeP+XXzaIREHB0aJLRcU3xNOrV38tylscunXdO+98JXr3q5D3r1SK/zIACG5wGEHB8wsb\n3H+Kv2LRyCAkEgkhDhyw6h394osvhPhGUdGhM33y4zm//OOXQjQ2HpowUTDi0gtab1206I8v\nPL+q+XfGXXxwmkDhsP+qzPti4dwFu1KPlax5cvKVt/xhg8ue2AwtdCj79vzntT++9p9DP+z9\n85+Xi7wBAwfkiW2/PqewQ4/v/77u8ANv+e1v/9KUP/DMIUeLvDO+d1HJvpcfnbslefDWL//+\nyG8/bFY5ZtQ3s/uNgkTFDkAGYV4VPqDOU7KdKxHmJDphXSktLRXird/d8/vmPTsPHJW2Ym7X\nM88sE4889tMH+9w45Bufv/9i1cx3h/zP0D8/uOpP1X87+9KBfY4/Vhx97qUXFj717E8e+ejo\n/5o3KnVJiBOuvf+6OcNm/uD0cTU3jK44runjpU/8/L5XGsaePcNlajiyhZ28/qJZt6dj+5UT\nz5k0ecrw7i22/OmhG+bvbnfJ5EvbCyEuu3XCL777q6sGf3fVhAu+Vfj1lrfn/+o3y/afcsMD\nV3cWQhz1/2578LsLv3/dGcM/um50z4Jtf3/swd9uP+mnv/9RF6+/SQio2AGwZLqebWiL3Cp/\nwg4zbjp/MWP0sseloBicU66+c3zfxJJ7fzj5nsVb0m9uPuTu5x8Z1+nDey85e9ioac9+8d9P\nP3/bDVMnfqvFW3eNveGPW7V9hl02qqTm3/8+9ryxF+hW6W15xkNL//aLSzus/cWPvjf8/B/c\nvmDvGXe8svzx89r420LHsm1Pq5G/+v24vc9Mv/T80T+eW3vKVbNfe+y/2wohRJthv/z7X6qu\n7L7tjw/+ZMK1P531l30Dr/vN8qX3DTlGu2PZuOeWPnNdr+3Vt117zZSZbx17/oy//P2eU4/J\n4lcJXCKZTGbeS2fNmjXLli2bNGlSQA0CIAn72BHOCTUXKm02r6SrX9/J/4jDB4xFxS7HIx0c\n2z5rSIcpO27+x7/u6hV1U9yqqqoaMmRIRUWFq3tRsQPgBUU7v0hYt8uFPA2oimAHwERAp3at\nG9dVZ24uZLswSZ7t+O8GskSwA2Dk8KTudqE1w/7O412On+wHlzZl3skNh0PTZK7b5fifhCz+\ndFXLhJ1zHt2RE22QDLNiAQTOJiI4XFlX8qWGgzCzb/PBpU3Lt5p8/NZHPdMd4sv5hwqyXfSG\n3LHyH5MbrW9v2fEbErThpBP+Jzk58HZIhGAHIFg5ksN8pL1iWnrTZzjT0p22MaB4R36CnZal\nJ/UqpQ2yUeqjHoCQ+RLa3D6I2lHD6tWw75D1vbsWQEwR7ABkxT6WBTFcT6iV7Ux7mQ1BzUlu\nWzE8P+M+qWdRoIzqdhYOkCPoigUQS6bZLo6n+TC7O5UM0PQXA3oEOwDqmLK2QYFsp82Z8NC7\nqhXtBr1sM5Q8SsEteU22A1LoigVg5OM5MvzTLSd4qz7ZaMt1GZ89jokckBDBDoBSYpoP9M3O\nfoqr8/F2VkJOda52A2CDYAfAyN/zKyW0eHG4fLFbQc/bJRQCGsbYATjI86nRlxFOhmcnDmZp\nxfB8D4PtsnzZDZVCrQHaSsvZPCwA56jYAQh8/QsPcSHXCjBBBNnsO2SzfLoVw/NDawOfBAAN\nwQ7IdSEsMuztKXIt2+l/X79KXCuG54ez3ptNgKNcF4YDHxi/LCS3vXbrBb07HNuioKh86I+q\nN+4Ps5UIA8EOQICyjBS5lu38tXxrnqt5GJ6LXj6W5by1IdfLdaYxzjzbbX54zPmz913y5MoN\n/1h8S9mr40fevlLS1XHgFcEOyGmBJqdIYlkcz/FBLL/ndmqtPK+bPC2JB+vinMlN6596bEnF\nbXOnD+vZubzyitn3X7Tl8TlLqKiqhWAHIBB+JRXli3aGpYm1rwjbEBznv5fpzFzTRgY0h1dV\n+1av/rCssrLDwR8LKit77Vi1alOkbYLfmBULwB/yrP4fu+tPRFiuy/6/zFU/rHZRDYeNcZjt\nYOfAB6LZyamf6nfsaCrqV5T6ubi4WNTV1QnRJYq2IRhU7ABIzfOgq1iHgOzXKA6N20VVTOt2\ncf//iotkMpm2LZFIRNASBIeKHQBlxa50lyMM2U7ai9uqQFeuE0IUl5Tk1dXVCdFV+7murk6U\nlJRE0TAEJjYfCgEEgTJJtExf/+Vb8xRbImTQy41W6Y1UF6YWAwac8sny5VsO/rj3zTff7zBw\nYKdI2wS/UbEDcp3aZS2ZfztlUvWglxudjLQjwwWi2cl2E2MNysdde85dN4+/u1fV2BM+X3zz\nDYtOnrj6NLpi1ULFDoA/CSOgmJJ9LIswP9kU3mxalX25zuEj+PjK2BTkyHOBO7K/9fBGk+0d\nJ1S/NKnV/HH9u/ceOWvPmGdfuPFkcp1iqNgBEOLQOT6VomQudHlg+O1CkIpW2jf6yRA2cSrM\nTljf864W4FKlO/JcqEyznamSobc9/95tQbYF0SLYAThMf7LXf58xEgVaFctmIRV9F+HgUkez\nTYMItfq4tmJ4viH06J/Rr2znamERH5HngGjRFQsgEDIMIEsf+JUxM/nS7IzP4uM1uOybkd6S\nSBZABhAagh2ADJyUr0z3iTbbWYUnJ+PePLQ8y182uNcqdTULIh2QCwh2AAIU1cKz9iWx9IiT\n3k5XLdf2lKFICSDHMcYOQODCn7vgxODSpowDwtxmNW1/bz2tik1Y8ZfVK0OYBgyo2AEIiYTn\n4HDGujnHlbVM2eRdojBgQMUOQHhMU0u0U24l5HC93xyR8c8jm0nTiknufFoIkSi6NOqGIEpU\n7ADYoSISvqBTXYxWJHH458dfaXLn01qqS32f+jF93/q3qy4qL0gMmbXdYo+PX5m1cIOLZz9Q\n8+KNI/sc3/aYliXfHDz2wbd2Hnqmba/dekHvDse2KCgqH/qj6o37XTwmPCPYAYiYfbkl6GKM\nbLUxV+3xcF2HGKU6OGSV4Uy3//Ox4RUXv1LYs9T68bYvvGe6i2CXXPu/w0c/0/yq6nf+te5P\n9/X5x83nTXphrxBCbH54zPmz913y5MoN/1h8S9mr40fevpI/vhAQ7ABEzyq9hdPF5nu2yxie\nrHZwm+pctCmGXNXhcrZoZ12ZM1ffbGj1qsXXV7ayuH1r1Vldpr25r3p0y5bjFgghGjYvmj6y\nb5fiVm07nnT6+EfW7E67x2dbDvT88axHJ57RvdMJFaPvn3xO/ZIlHwgh1j/12JKK2+ZOH9az\nc3nlFbPvv2jL43OWsN5O8BhjB0AKkgyTitGArdQVLJyPyVM+CyKj08ZPE0L8y/L20kl/e+n9\ntiMOzNv72xFCJD+8e8SFzw94+tWa88u+WjXz4uFDL29Ts3Bskf4ex428b8HI1E+ffPJJXtnZ\nHYXYt3r1h2WVlR0Obi+orOy146lVm8TQLkH8WjiMYAdAQW7nH+jrPfoL5mbTAGFWgQsoWjn5\nfbv1KNw5tZ0QYuP6+nBaFTJf/uMUk9z5dFZzKd6Z+8S6b9/2+ujurYVofeoNN41+6NzqRXvG\nXm5R7/vqvXvHP/DFD1+4+nghtu7Y0VTU73AELC4uFnV1dUIQ7AJGsAOQ66yuqZp99S7MwJR6\nLv21aFPfW0W61G5ClXgnDiU84l329tfUfFLUvfuhdNasa9dOTW/UfCzEKen7Jutev23kxfNO\neOQvM89qJYRIJpNp+yQSiSCbCyEEwQ6APeer5ppWjCLMCg6LdlqqM73W1vKteTHqmU3Rv+b6\nVIcc5MPSJ/owlkwmzcNZY83Tlw+7bv1F1cvv+0577fbikpK8uro6Ibpqu9TV1YmSkpJsm4OM\nmDwBIFs2FyFdMTw/wmmnDmOlVePVuLJqKtVZletSZJsgnGWkzpHpFIGuWndUeXnZjvXrDy1f\nsn/Dhk355eUnGHf7bNE151z/6eS/vnH/oVQnhGgxYMApnyxfvuXgj3vffPP9DgMHdgqusTiI\nih0AI9/PiPrOQaks35pnn94GlzbFsWiXQq0ul5llvq8/31r3ZZP49IsGsX/3ttraA6JF2w7t\nWh4R6QsKCvav21hTv6ukzYArr+kzc8b0BWfNOK/9rjd/fudz+aPmjmh55EPu+dO0a5478ZZl\nFxbW19ZqHx5afKO03bHl4649566bx9/dq2rsCZ8vvvmGRSdPXH0aXbHBo2IH4AhuU53DslZU\n1SA5A6UVV63NuLMCqS6+kTpMiaJL0zOcRSVv6bSeZWVlZWc+8KFYeXtFWVlZ2Xlzthn26T/m\nmsp1N/c+8Ypnd4ju0+ZXD/vopoElbToOnriib9Ubc0a1Ney+5Nn52/YsnvitssNGP1UvhOg4\nofqlSa3mj+vfvffIWXvGPPvCjSeT60KQMBveaGfNmjXLli2bNGlSQA0CECEPtTpX/ZVRxaws\nY2XIzXbSWg+pLmNXrJOHjYTnEjK5ELFWVVU1ZMiQiooKV/eiYgcgPFLV7eQMMSLT9SScXG1C\ngVqdHvkMcI4xdgAOUnuwubQxzkrQDe7Wo9CwxUlJz7P0v65UXDPcZBrj9BvV/kMFskTFDoA/\nrFaDgyRSSa5bj8L0VCd0Kxj7a2bf5qZRTNueflPG3EYBD7BBxQ5A7nKy1l3sSn02TPOcwc6p\n7Ypm1Pn1jOkpLTUo0+aTQKArDOubREaEegh2ALKirRhCuQ7pDKlOP8/GyR9MlvEu/Y5W1UHi\nHVRCsAMkEtPTjFSpzlCBy1hvsy/aqVSuc87fop3GbapLSa0jaKi0uR1pZ7N/rJcqBAwkOhwD\nOcsw2Mhq7FHQsj+3ZTxhB5qTTK9yoW2072+1alV8U53vsSxLnlOdJv3tYP/umLK2wfDHnAvz\nLZLvTkh92ex2oObFG0f2Ob7tMS1Lvjl47INv7Tz8APVvV11UXpAYMmu7xX0/fmXWwg0emvbV\n3yd+M5G44JkDh55p22u3XtC7w7EtCorKh/6oeuN+D48JS1TsgIhJVUjIWAjxUCkJgZNVVOyv\nfhHfDGelaEadYoueWPHlPRLrol16ktO2JPrMTtt17f8OH/1Mz4eq3xnZee/b9/1g7HmTum6q\nvrClEP98bPi59zQN610qLOdGb194z/R3b5x8QXd3zdu/8o5rf1/f+vCGzQ+POX92wa3VKy/t\nsvf1Oy4dP/L27uvuGSDX9ezijIodECV/Q1Kq1JdNzc/m9JZ+U/rqxMu35pmWZKy2IziS1O2y\nLNfBM5PS3WdbDvT88axHJ57RvdMJFaPvn3xO/ZIlHwghhKhvNrR61eLrK1tZPNjWqrO6THtz\nX/Xoli3HLRBCNGxeNH1k3y7Frdp2POn08Y+s2W1xv8YP7p3wm1Ouv7pLasv6px5bUnHb3OnD\nenYur7xi9v0XbXl8zhIVLsssCyp2gNQcFhKsMpy3QXv2+zsp2oV5/na+6LG0l6wNjpbtIizd\nubowiTexLrZlz77j1ei4kfctGJn66ZNPPskrO7ujEEKI08ZPE0L8y/KepZP+9tL7bUccmLf3\ntyOESH5494gLnx/w9Ks155d9tWrmxcOHXt6mZuHYorTW/V/V/zzc7q6139s5/OaN2qZ9q1d/\nWFZZ2eHgHgWVlb12PLVqkxjaxXhneEOwA5SinUcNuUp/5rNZJ9bbczmXy2ffeJGk1IfsJd+d\nYNIhK4QQ4qv37h3/wBc/fOHq4z087jtzn1j37dteH929tRCtT73hptEPnVu9aM/Yyw31vton\nrv158pblV3VM3pfaVr9jR1NRv8MRsLi4WNTV1QlBsPMJVXEg9lJZTVt2xLRapu1js06sq2fU\nRzSH8Y5UFyF5gloIBTw4kKx7/dazhs3u/MhrM8+y6nu1s7+m5pOi7t0PpbNmXbt2aqqp+diw\nV131j2/5fPKjE7smjnhukyvUJxKJtG3wioodoIiMi8np05vh/Oqh53TK2oZUH6jNU6eeKLVz\nrnWGxo48KRDBaKx5+vJh162/qHr5fd9p7z1Q6cNYMplMC2e7Xrr+xn9f9eL8XoZDQ3FJSV5d\nXZ0QXbWf6+rqRElJied2wIiKHaAC54WQwaVN6TsPLm1yPlLN4cOaPpFwMyQOPnIY1/xNdaZl\n2kiKdhkLxqpWlNP7YT9bdM051386+a9v3J9FqjuqvLxsx/r1h5ZK2b9hw6b88vLSwMYAACAA\nSURBVPITjtjn1Sef2vbvR4Z1KC4uLi6uvHOdWHxN++LLnvmyxYABp3yyfPmWg7vtffPN9zsM\nHNjJa1OQhmAH5BD7c6rbyJVee9PCnFWk0z8R8S58GUOb2rU6V9O9Y8RqCJ25PX+ads1zJ97y\n0IWF9bUH1X3ZJIT4+vOttbW1tZ9+0SD2795WW1tbW7fX+P4uKCjYv2ljTf2uvY0Drrymz9IZ\n0xf8e+/+L2tfv+PO5/JHXTGi5RF7j5y95eP1/3hX8+J1PcTQe1e/WzXyGFE+7tpzPrh7/N2v\n/XPTxrceHX/DopMnXnsaXbH+IdgBUfKxkBC7hSSId+GziW5hprqoRtqlL1ycviWOrLKdyfYl\nz87ftmfxxG+VHTb6qXohxNJpPcvKysrOfOBDsfL2irKysrLz5mwz3Ln/mGsq193c+8Qrnt0h\nuk+bXz3so5sGlrTpOHjiir5Vb8wZ1fbIvQsKjz+sfevm4ujCjscXHZMQouOE6pcmtZo/rn/3\n3iNn7Rnz7As3nkyu81HCbBijnTVr1ixbtmzSpEkBNQgIgWxXAbeau+CwbTP7NndytVaHZ1O3\nY+CCC2cOW+KqAYzwC5nN/46PH0VkeBdHTr/uibsyHmRVVVU1ZMiQiooKV/di8gRyi5xXATdd\nGS4u5yotKgUR77THzPJir4Y9fWgW3HD+v+NZXN4pQSPMQUOwQw6R6uJdBtk/u6Fol6rPhdNF\nm8pMvp/Fnawq7CQ9kOqiYvW/k7HMrL0pMl7jLsvmAYqJ2aAcwDMJr3DqlylrGwyRTt/rmnEq\ngxrscxupLlpWr7/NX2YqsdkMgyPVAemo2AEHRV60y57NaTKgAXbh0Nd7TEuD+pqQnL8CrP5f\nBjm7e9zfm0BoCHaACvTLBavN9NfUb3Q4Mg8AlERXLKACX1KdSmEoR2IuABhQsQP8ZzqeT5K+\nJKuR7H6luhBmQRp061GYvnHj+nonsy4AQDFU7ACfWc3SkGf2xqCXG7Uvw/c+Pr6Pj2bPNNXZ\nbAeUlJzXz/CV6R5f/X3iNxOJC545cPgx6t+uuqi8IDFk1naL+3z8yqyFG1w1a/ufb7/wlPbH\nHn1sSc9hU1/YdPDIkNz22q0X9O5wbIuCovKhP6reuN/NYyITgh1wkC8VNfv0Jk+20wSXwMLJ\ndvbprVuPQjpkkQtMY5x9ttu/8o5rf1/fWrfln48Nr7j4lcKepdZ32r7wnumugt2GWaNGP91q\n8vPvbXh34cR2f7r+9hd2CyHE5ofHnD973yVPrtzwj8W3lL06fuTtKymt+4hgh1whSU9o5Nku\ntKzjeyEQQDqbAGd5U+MH9074zSnXX91Ft62+2dDqVYuvr2xl8WBbq87qMu3NfdWjW7Yct0AI\n0bB50fSRfbsUt2rb8aTTxz+yZnf607/18IMbxjzy+JWnlnfqduoPn/6wZu6oNkKI9U89tqTi\ntrnTh/XsXF55xez7L9ry+Jwl6q/IFB7G2MnF7VlfkrASF6YXeEjdFHJj/OVqZFuY80ZNn8WX\ncOmks5UOWSBN8v+q/ufhdnet/d7O4TdvTG09bfw0IcS/LO9VOulvL73fdsSBeXt/O0KI5Id3\nj7jw+QFPv1pzftlXq2ZePHzo5W1qFo4t0t+jZunSrQMu+vSnZ3b97Ts7WnU/++pZj956Zkli\n3+rVH5ZVVnY4uFdBZWWvHU+t2iSGdjF5VnhAxU4WM/s291DL8XavXBboVcDj9X+xYnh+VD2V\nFPOAcJgU7WqfuPbnyVt+dVXHbB73nblPrPv2T+4f3b31UQXHnXrDTaObvVS9aI/hiWpr819/\n4rmyny/bsn3dUxfunDly/O8+E6J+x46moqLDEbC4uFjU1dVl0xocgYqdChRYWTdkSr5c3qaj\nqjF1dOP6ev2PFOoAC3XVP77l88l/mdg1If7P+6Psr6n5pKh790PprFnXrp2a3qj5WIhTdDs1\nNDQ0dr7inusHdxBCnHnbveMfP/WZV/ZeMSyZTHu8RCLhvTEwoGInhewrPfGqFakq8ryYg5Ww\njevrDanOaiOQgxJjV+t/3PXS9Tf++6rHp/Xy4dyvD2PJZDI9nBUVFYk2bdoc2r2s7Hjx2Wef\nieKSkjx9ha6urk6UlJRk3yAcRMVOHdTtYkHC/6P4XozLPr1tXF9P6Q4KSP/c7vkw8uqTT237\nd9thHR4VQoimr3aJA9e0L37p4U3VY4519ThHlZeX7Vi1fqf4dpEQQuzfsGFTfnn5CUfudFL/\n/sf88p139orjWwohDmzc+HF+587HixZNA0755IXlW8SgMiGE2Pvmm+93GPhQJ2+/EExQsYue\nj8U26nbIRsij7mKXI4HwmR7V9aOrDTU5vfSbRs7e8vH6f7yrefG6HmLovavfrRp5jBBff761\ntra29tMvGsT+3dtqa2tr6/Ya36AFBQX7N22sqd+1t3HAldf0WTpj+oJ/793/Ze3rd9z5XP6o\nK0a0PHL3o7/7wyuL/3DDtb9bs2XrvxZN/+nvkpeNH36UEOXjrj3ng7vH3/3aPzdtfOvR8Tcs\nOnnitafRFesfgh3gJ/tP0hKW69LFJds56WylQxax5nBdTNNsZ7qxoPD4w9q3bi6OLux4fNEx\nCSGWTutZVlZWduYDH4qVt1eUlZWVnTdnm+He/cdcU7nu5t4nXvHsDtF92vzqYR/dNLCkTcfB\nE1f0rXpjzqi2xmdrccYDrzzxnS13nN292+mTl/d64NWHz2sphBAdJ1S/NKnV/HH9u/ceOWvP\nmGdfuPFkcp2PEkmTYYx21qxZs2zZskmTJgXUoNzkb6UtFulBeT72nrgVu+vGBholqQsippyc\nFzjaq62qqmrIkCEVFRWu7sUYOyAQHHCdM2QvLhcBOPy0z9BqpKMrFlCNaY0qRtMIqLEBgGcE\nOyn4+5GLKRQ5bufUdt16FGpf2hYPqY6yGQDEEV2xUQougdk8MnX7nOK5UEfZDADiiIpdZKKq\nq1HPU9vOqe18eRwqdkBUOEojGwS7aET7vuWogYyirdhRL0TOcnV8pgcG6Qh2EZAhV8nQBsiM\nih0QOzunttO+om4IosQYO8jIee60/8Aa4WJycRd5zUxrAPkScMIQ5rQfi2bUmeya3P7nn117\n/aN/3rjn2G+eOvbuOQ9c2Fl7lyXr3/7l1Zf99Pn2P9+2bHJ7s2f5+JVZ75ZPvqC701btWTPn\n+p88+OKqzV8e3b7XOdfcO+vGM0qEECK57bXbrr1+zmvrdx1dNmjMzx6beVm3oxz/qsiEil3Y\n5CmVydMSPf2lchzu7+omOX9rWDHky8jjJhAobwcoqxKd6fYNs0aNfrrV5Off2/Duwont/nT9\n7S/sFkII8c/Hhldc/Ephz1Lr59m+8J7pCzc4blbDX6eeO+mD02av/vSLHR8suHjXAyOuerJe\nCCE2Pzzm/Nn7Lnly5YZ/LL6l7NXxI29fyRvbRwS7UMmWKmRrjzduA1yEv7V2MdbUl4cdshGj\npez0Br3cmPoSLrMdQRDKc9fxmnzr4Qc3jHnk8StPLe/U7dQfPv1hzdxRbYQQQtQ3G1q9avH1\nla0s7rm16qwu097cVz26ZctxC4QQDZsXTR/Zt0txq7YdTzp9/CNrdqfd45O1az878fwfnNGx\noFmLdn3Hjxq4d+3ajUKI9U89tqTitrnTh/XsXF55xez7L9ry+JwlTW5/b1gi2EEiniOX4Y4Z\nHyf8bGca1PQbrXYIo3FpyENAJHwfK2KMfTVLl24dUPbpT8/s2vaYNmV9/vuOv3928LKip42f\ndlqxzSVbSyf97aXL27S47Lm9e5+6SCQ/vHvEhc+3u+nVmp3b1jxxbs0tQy+ft9Nwj07fGdH7\n/5579C9b/nNg/4735v5hVeeRw3sLsW/16g/LKis7HNyroLKy145Vqzb59iuDYJfr1CjaeRDm\nL26fz+yLc/5mOydFO5tUlxqarf/ysXlOuHpBGKIHHKG2tjb/9SeeK/v5si3b1z114c6ZI8f/\n7jMPj/PO3CfWffsn94/u3vqoguNOveGm0c1eql6058h98nrf9lxV6bPndjq2eYt2fe/e8+Nn\n7junQIj6HTuaioqKUrsVFxeLujqz0YDwhmAXnpyNUA759fqo9zq7Sifmw6V19FekSGeV6mwy\nXMjxzm01kWyHeAl2gldDQ0Nj5yvuuX5wh1aty8687d7xrV9+5pW9rh9mf03NJ0Xdux9KZ826\ndu3UVFPz8ZE7fbVkyvCp9d//00d7v/7P9pV3ljw+/JLfbRMimUymPV4iYVMrhEvMioVThsDk\ny9En8vX8QpgkG36wKJpRlzFpdetRmDECpjjJbTuntnP+gNmIRVAzvGLhvDJAOuPfXlFRkWjT\nps3BnxJlZceL1z/7TIiW7h9aH8aSyWRaOGv68+OzP7vgxTvOPiEhxLH9Jtx1dVXPxxdsv/zq\nkpK8uro6Ibpq+9XV1YmSkhL3DYAFKnZwNCItfR+301fT7xtEqlOvXKdxm2YyJgl/Ux1STOuX\nLC0GV1x94HT3seGk/v2P+fCddw7W6A5s3PhxfufOx7tqnRBCHFVeXrZj/fpDo+r2b9iwKb+8\n/IQj9kkKIZqaDk+KOHDggMjLyxMtBgw45ZPly7cc3Lz3zTff7zBwYCfXbYAVKnYQwrZ2ZR+V\nPBS9VM1epiIsL4VfJQqhaCd5uc4+vYVW1IQCpqxtyHiozHjsNfl7O/q7P7yyeNgN1/6/E+4Z\ndsx7M3/6u+Rlvx9+lBDi68+31n3ZJD79okHs372ttvaAaNG2Q7uWR7zhCgoK9q/bWFO/q6TN\ngCuv6TNzxvQFZ804r/2uN39+53P5o+aOOLLsl3/aed896sp777yy9w2ntvvqn/Pumrup8sfD\nSoQoGXftOXfdPP7uXlVjT/h88c03LDp54urT6Ir1DxU7HOTXjNRosf4wouKwwzqEliDXFM2o\nS89wFp8iWpzxwCtPfGfLHWd373b65OW9Hnj14fNaCiHE0mk9y8rKys584EOx8vaKsrKysvPm\nbDPct/+YayrX3dz7xCue3SG6T5tfPeyjmwaWtOk4eOKKvlVvzBnV1rB78ffmLL6v/PWr+7Vv\nXdRj5K+afrDwuSndhBCi44Tqlya1mj+uf/feI2ftGfPsCzeeTK7zUcJsGKOdNWvWLFu2bNKk\nSQE1SG1SZSBThmDk1xUgPDygW6kG+N7mbPhYYYpqCRJXWUTOil04L53DF4qiHZyzOZrxITYX\nVFVVDRkypKKiwtW96IrFEeSPnqY4xsEKa/Ihvqw6ZDniwQbBDqpxMjZFxO3ISDoR0g+wc4iR\ndnBF3xcRr6MWosIYu/DEtBgWFeeHsPQ9M943tOOjAoHMeQoJNK/I3AkLhIBUB4eo2IWEVOeB\ndiCzeunsD3NW943jwZF04havGICcRbCDjPTxK5soJkOMG/RyYzZ9iDJkFCcrHkvSvSjDywUA\nESLYAYHT0oaHeCdPTNFym2m8CyHSqTG6TiNJAgagKsbYwR8OLybhpIQmQ5ktCINebjR8Zdw/\nnIY5py2XZfiKulFAjkoddbWvFcPz9V9W99qzZs41Z53YvvUxrUq+OfjSe9/4LHVLsv7tqovK\nCxJDZm23uO/Hr8xauMFVG80fM7nttVsv6N3h2BYFReVDf1S9cX+G7XCFYAefZTmaUNVUZ8oq\n3jmJfUgX7YvmJOOSg+ELw6fowaVNg0ubDPuYZ7uGv049d9IHp81e/ekXOz5YcPGuB0Zc9WS9\nEEKIfz42vOLiVwp7llo/7faF90x3FewsHnPzw2POn73vkidXbvjH4lvKXh0/8vaVjXbb4Q7B\nDv6zz3Y20S2nUl2K20oepGWf20h1Oc5QYAvhGU2y3Sdr13524vk/OKNjQbMW7fqOHzVw79q1\nG4UQQtQ3G1q9avH1la0sHmxr1Vldpr25r3p0y5bjFgghGjYvmj6yb5fiVm07nnT6+EfW7Da5\nj/ljrn/qsSUVt82dPqxn5/LKK2bff9GWx+csabLeDpcIdghExmznYY0SQH5W6Y1Ul+PSD4l+\nXcUxvVZnp9N3RvT+v+ce/cuW/xzYv+O9uX9Y1Xnk8N5CCCFOGz/ttGKbK3uVTvrbS5e3aXHZ\nc3v3PnWRSH5494gLn29306s1O7eteeLcmluGXj5vZ9p9TB9z3+rVH5ZVVnY4+GNBZWWvHatW\nbbLcDreYPKG4waVNy7dKGt8driSMHBe7mRNkOBhYHehCWHN4xfD8IzoB8nrf9lzV2mHndnrg\ngBCJdkN+9uJ95xR4eNx35j6x7tu3vT66e2shWp96w02jHzq3etGesZdb1ft06nfsaCrqV5T6\nubi4WNTV1VluF108tC+nSXrKRza08Rbax7gIU519aEvvjAitewJKogsbcsp4JPTx0TLf5asl\nU4ZPrf/+nz7a+/V/tq+8s+Tx4Zf8bpvbRxRif03NJ0Xdux9KYc26du3UVFPzsaP7ml2hPpFI\nWG6HW1TsVJMqy0tbqMt4mAunT1arA5EG4qJbj8KN6+ujbgXgP6uDXhAfdJv+/Pjszy548Y6z\nT0gIcWy/CXddXdXz8QXbL5/Y3v1j6UNXMpl0HMKKS0ry6urqhOiq/VxXVydKSkost8MtSc/9\n8Eb+VOdEoHU7w1oA9usCQBLdehRq/2rfmN4KSMjb0czH7gvDuSAphGhqOjwo78CBAyIvz/3p\n4qjy8rId69cfGlW3f8OGTfnl5Sc4um+LAQNO+WT58i0Hf9z75pvvdxg4sJPldrgV49M/DNwN\noQ1eNp9BA8p2VhmOeCczQ27T4p3+K6qGAX7RH/HcHv1cfYzPP+287x614N47l27d19jw+bq5\nd83dVHnesBIhxNefb62tra399IsGsX/3ttra2tq6vcb+jIKCgv2bNtbU79rbOODKa/osnTF9\nwb/37v+y9vU77nwuf9QVI1oa9rd4zPJx157zwd3j737tn5s2vvXo+BsWnTzx2tMS1tvhEsFO\nEbKlOgkR3RTWrUfhzqntUl9RNwdwTctz3j7TWmW71PbDD1v8vTmL7yt//ep+7VsX9Rj5q6Yf\nLHxuSjchhFg6rWdZWVnZmQ98KFbeXlFWVlZ23hzj4Lv+Y66pXHdz7xOveHaH6D5tfvWwj24a\nWNKm4+CJK/pWvTFnVFvj81s9ZscJ1S9NajV/XP/uvUfO2jPm2RduPDkhbLbDnYTZcEU7a9as\nWbZs2aRJkwJqkKqCnhagD3Yy9MNajZNz/jr4PtLOSbBjyJ2EvAU1pqZCBiFPCMs4GodVpeKl\nqqpqyJAhFRUVru7F5AkVGMp1Mi9xEgLTIymHs1yzc2o7sh1yTcYjf2iz0xCh3D39Q0k260WF\n3BIAkBAHQ+UR7ELChyRXvL1cHLAASEXOIz+HSrUR7KAIDlUAJCRttuOYqSrG2IUnuCtoLd+a\nJ9usWEZyAIDknJySOJLHDhW7UE1Z2xDOm0S2nOdKQC9RxmHFTIkFEAQnxzRp8xOFvdgh2EUg\niDdwemqJPNtJeDiwyXakOgDBsT/sS5vqNFq/Lb23cUGwi0ZA2c4QXBxmu8GlTaGlwMiPX6bZ\njlSnHtY6gWysjn7hHxX/85+m3/7zwNSNTXt0G5MNycUfNf7v+wdu+Efjr2qTdUnz/U2z3cev\nzFq4wVUTkvVvV11UXpAYMmu7buuBmhdvHNnn+LbHtCz55uCxD7516JJlyW2v3XpB7w7Htigo\nKh/6o+qN+109V85hjF1k9G9mHz8GLd+ap3/kQQ7uoq3cG8Tqd6Yj7ezHGoZwjCPGAYhE5J9s\nhRCf7mx87FPR4+iEOPJAuGxT4/JE3tju+YVNTX/e1PjE9vwbOiTyzPZPO7BvX3jP9HdvnHxB\nd6dt+Odjw8+9p2lY71JRr9uaXPu/w0c/0/Oh6ndGdt779n0/GHvepK6bqi9sKTY/POb82QW3\nVq+8tMve1++4dPzI27uvu2cAlxKyQsUu10VyoS3To1uWAxBlOGJCBkUz6ijXAVb+k0iM7Z5/\n5rFHbv26acXexHc65XU/WhQfkze6NLFrZ7LGen/dh/OtVWd1mfbmvurRLVuOWyCEaNi8aPrI\nvl2KW7XteNLp4x9Zs9ukDfXNhlavWnx9Zasjtn625UDPH896dOIZ3TudUDH6/snn1C9Z8oEQ\nYv1Tjy2puG3u9GE9O5dXXjH7/ou2PD5nSYyHkQeOip0Ugpsw61zIF6uIKoeR/xRGnkN8hXYK\n6FKYJ4T47MiNB/6T3N480elQE5ofk+hwILllvyg/ynx/cbhuVzrpby+933bEgXl7fztCiOSH\nd4+48PkBT79ac37ZV6tmXjx86OVtahaOLTryvqeNnyaE+JfhEY8bed+CkamfPvnkk7yyszsK\nsW/16g/LKis7HNxeUFnZa8dTqzaJoV28vwhqo2InCx8DR84OcSW0KYm4BoVJMinhPwdEspk4\nXJXLTxwrknsPZLiXScvfmfvEum//5P7R3VsfVXDcqTfcNLrZS9WL9ljc39pX7907/oEvfnjX\n1ccLUb9jR1NR0eFoWFxcLOrqOCpYI9hJxN9c4uRIkeqHNS3XRT6v1oNYTz2DFYfZbufUdkG3\nBPBR5HkuJWm2MeHsvjP7/te6vV9r3++vqfmkqHv3QymsWdeunZpqaj5215a61289a9jszo+8\nNvOsVkKIZDK9dYmEw8blJLpiVZbNKsFaqtP+9dxLG0mQsurXJtWppLCiU/rG+jWbd05tJ2GF\nLzmvX/rGxNjV4bcE8pAn1Qkhjm0mEgfEXiEORrLG5F6RaOktIOhDVzKZdBfCGmuevnzYdesv\nql5+33faa/crLinJq6urE6KrtktdXZ0oKSnx1LbcQMVOLr6HD4fHDn1xLr1QF7vSnTYPQ3sx\n9d8jvvRxzTTV2WyPlmmqs9kOhK/ZMYkODcmPDx0mv96b3No80fkoF4/w4XXNhRBHlZeX7Vi/\n/tAyJfs3bNiUX15+gtMH+WzRNedc/+nkv75x/6FUJ4RoMWDAKZ8sX77l4I9733zz/Q4DB8r4\nXpcFwU46MkSQ2CU5KzK8mPCXfXorrOgkVYesfXoj2+WsCMt1XzWIXQ1iT6MQSfFFg9jVIL5O\nCtEi77RWyb9sbtqwT9R92fTM1mT74sQJNvsfqXme+PzrZP2uvY0Drrymz9IZ0xf8e+/+L2tf\nv+PO5/JHXTGipWH3rz/fWltbW/vpFw1i/+5ttbW1tXV7G4XY86dp1zx34i0PXVhYX3tQ3ZdN\nQpSPu/acD+4ef/dr/9y08a1Hx9+w6OSJ155GV6w1umJlpMUR/Ts/fYv8CFVARsl5/eiTRYiS\nL/6r8e2DK9IlH/qgSYjEBSfnf7u5GNw5f8+WpuoNB77KS5QX5o8/TutBtdxfJ9G3KPGbbY0n\nXvHsPxZeOW1+9afX3jSwZOyBom/2P6/qjftHtTW2Yem0nsOeOLgMyu0VZbcLMXDmlhWT33t2\n/rY9+yZ+q2xias8zfl339/8p7jih+qVP/2fyuP537C7ocub4Z1+48WRynY2E2bBEO2vWrFm2\nbNmkSZMCahBseAt2NgHLsIidNpbOtFznYZgdwQ7+2jm1ncPOVkmiksOCnCSttWHzi2TZeNN1\nNHNhCfF4fUp3jsO+v6qqqoYMGVJRUeHqXnTF4ghWnbBuO2d5eyNCdHH6KLjeZKvV0VcMz49k\n4XRkT9XAGi90xeaK1PvNJqLZpzfn1xwj1QFSSY9fTiptDkObt97kjNFtxfD8XCjdqSeb1Rjg\nCyp26kutITm4tCnLWRFOHoG3NALiah2T5Lx+kdftJOljNX0d7F8ft6+e25eagpzax0nqdtGi\nYhcn2Vx5zMeJrqmH4vM0QpYYu9pt4JAkXVkJunkZO1LTGxB5IAaQDSp28IhUh1jI5Zji5HeX\n+fWhsAd4QLCLGW8FfB/LdYNebtS+/HpAIGhRdcvKnJmsxLHNMZXxYK7MeqIIGcEufhxmO223\n7MfVAVKRvGtVHh4iGqkuZFYXxUkdt1NHb47kcI4xdrEU4cBbpqohnRYIJI9cIY+3czWlVL+z\nL40kosWIYfB0KsAt35qn5TnPV+uOEHNjI0SwU1lAn/BSA19IeDnOkB5iEe8kZPoyCk+vZFzy\n3KCXGxk/l85wxNaX66JoTrbIdlGJ3+cAyINDcy6zubZ90PHCc3YMLff48kRuHyTLJ41LKFTS\nlLUNMU1v9lj3JBJU7JAVemZzU+QhwO26Jyne7mWIkuEHxIxZNvsmeX5Jkb2MH5K1btlwGoO4\no2KnsnAiF3U7pFMsIuh/HSbYAs5RtAsfFTv4wKZuZ/+uZgQGPAu5whR5tJJ8sWXJmxcQ04+1\nbj9ROynX6X+M6XQKhIY/DsWF1k9qemzK+FktdbkzwIMcTBI5ReZhHiuG51sFMledGK5SHauf\nwAkqdvCfdqjiMyWCFnkVLWSS/75WRTtDs7V9Yj0xNmPLfR98bDVDluod0vEHob6QP/WuGJ6/\nfGueq2MNRbt4kSReSNIMlWRfATXMiTadIu1w3rTM5Ton/IqtVObgFsEuJ4TZIevt4yPZLi4k\niVOSNAOmtP8d+/+j5Lx+Ay/pY3WrzKnOeWLTumtTX56fkWwHVwh2ucL+QJl+q9t8tnxrXnw7\nVuCQ8zgV6Og3Up2P9P9T4b+wAy/pkx7vZE512fD9CEnggynG2OWQjNkuddzxkOq83VGPZcqV\nwZwGuMqIAy/pY/83s3NqO8OWohl1VrfqbwpHtx6Fqe83rq+32TN97F2sxxpCTgQ7GHkOZ4zh\nhSDVwVfpkS61vWhGnemt2sZw4p0+0olMqU6T/bwK7UhLuQ5WCHY4LP2zo5PlzslzCBP9sD6S\nJ4Wbzqi1SnUOb82Y7WwewXDf1J5FM+pSx0lDqvPGc7mOeAcrBDscYdDLjcsPzWNwkthIdQhT\ncl6/+jWbCys6Rd0QxIBNtrMPhTY7pLanpzon5brscchFRvyJqC+bCad8HIRb2VfUtOUwTJfJ\nqF+zOcsHR4o85TpTGbNXhI/sS63OF+Q8pKNipyx9nkt972p2AqkOHniOQok4kwAAIABJREFU\nC6ZJTqh6cfpe/cW6VSE8j9WrJ3mqC05webFbj8JwinaAPYKdmqyqdL7PPGXdc/jCJroZbqIf\n1hXnl3BVMD2riEMuMuLvQ0H2fa8Ze2bTk184xxHWOpFfQGUeV5Eiq97YXv293zf7Z0ltN+zQ\nq7/xy1cOX95oa3jhPHtw5TrP3M6QJdUhI/5EkBW/jjKkOjXI28FnmpZ8z3k20S31jdVNOUze\nPxuXnIy9S09yqi7IjKgQ7FTjZKqEq6JdCB8QSXUxYnMO9nZ6dlWus+uHdVX00u+j39nJ9xkf\n2eH2AIpzVpy8yFF1xVr92YS/zrAv7LOdVYaTM9txZI4pgh3MhfOWnrK2gWNH7CTGrta+DFvC\nefbCik7G3ljThJQey/T/pk9cMC2qWeW/jNat8njHwEg4hC7oP5v0aBjaqsXp8W7Qy41ur+sY\nOV/GZHOEDx+TJ5CZX9Njnb/D0xftlPCoh2h60Hr1L+zVv/7J5zPPonBSPDN8nwpkVl232g6m\nudB0lqscqS6jSGJfxokdVteWcHhrVo1zwKYB6dNjtWOa8+s6+shw4HW7ANaUtQ2e18wi1UWC\nih2kY3po43KKue7IvFX4/f+2S2BBPLX9FuG16zZEEhbtMjapaEadaUTTNpreanUX/R2zZ9WA\nohl1NouerBieb38oMy3spbbIPHPCkOHojYkQFTvVOPl0Fclqdg6f1Oaol/01FiEh40Jr6aUv\nmz5Nf/OT54XlgohxwSx053z1E6nYpzG3Wc2+1OehPfofnXwEzXgoM9yazcdaX9JVxtOK9iwk\nOUnIG/8RC/4uYkxZLteZrgMSMvs45aqFWTZepqkVinGeBV0N1AviCCbJUdGqAkdlTkJU7BRk\n/+nK9zehkwUz/XpSinbqOZwqYrcOSHAtDPJ3NxTtcjDVaZzU7VL9rb4/eziHMt+P9mS4WCDY\nqUl7+xniXXDvSZtsl82ECeQKGTJcKBf4korTSBfW1c/CpyU2q3jnNs9JdQSzOfA6nwxBjIsp\ngp3KQntbDnq5cVA4zwS1JN+dYH6DDFHPXmgXsQgmVOVsoS5dTBfMs+LksO/7UGxIhTF2sCRn\np6dUH4vhWfLdCQdTXdBTIpyQfkKrvzKnutTYwdCmHsfZzqntdk5t5+SyE3raDFlXBzQfxzTb\n5zZSXaxRsUO25Mx/MtCfPu2nImp7xnG6ojeWhbpoqdvn6BF5zoHsrz/rarxd+rgX/RZXgYz0\npiqCHexohxv7z5SpW0l4GtNySGqjIb3pd7baRyWSRjotz+kvF5GDUtfkyOUXwaXsU53GQ7bT\nV+/8XZ0AcUdXLDLT1szMeEkcOkmFg04u0yTn9kHi6HDfq5ykTTMBNSz9YbV0K+3rIB99qtu4\nvj61LrHbPlmNL32yHIQhqNjBlYxHDSeXzVGYq0Bmv3NMF5KNNyUzjWmAM6z5nF6lCyvkKfZH\n3q1HoT7huaWv23mOaKwJBSp2cMr5gcbbISnuByPnqS45r5+SNTkbUtfqNDKPrvMcsKzKcoYf\nnTy+kqnXJ/ok561cl6IdPLMsvFG3y3FU7BCI8D81pg92ifsqBs7nXgAmrKKYNkfE5poZ2q0y\nJ10pWUU6rYxnurNpbY9YhixRsYNEnGRB031MhzBraxD40CwHgq7AxbrCF4PGR3LtMgcSfWYn\n+sz2ck+bVJflIyBNxipdtx6FqX1S33vusQXsUbFDULwV7Qa93GjzgdV5qtPfGvfSnSa4UXdO\n+kmdxwvjo1H48Sr1mif6zE6ucxyOnRTb7EMbkc4Z/UXJ7Mt1+lSnfUOqQ3AIdnDNMNPed6Zr\nrMR9BJ4vfF/uzvnQN21P+3gXg4F08WF4qRNjVztaVdjJmDkWNIkaqQ6BItjBKftamj0PKc1h\nkguts1Uenkt3yXn9gjujm6c6ynWemAZou2znMNJlI4D/SpVGjurLckI3rs5Qrkv9aDrwDvAF\nY+wQLNNr5ri9kE6WcjD8GRych5v1WZ+aXNDsB9UZk5B+aGA4g+co9R3JZpiHflydXirwBdgs\n5DYqdnDBbdEu4yUr6GD1xknRzljdCfKUTODLnsdJEiKssOX3PFmVynXiyDF2Vt/rVzAOJ9il\nH4E55OYCKnZwh+OCqfDPUjYjrkzWyfPv3O8xw9Ena83j1Nfwi2f+PaNiqU7O8pvp5+qQe0sQ\nCYIdoqTSIUaSc1UIa4uksp12lTC7qKePAmS7Q7Qkl/pyd185/syQIuGk+4xdKyodeJGOYAfX\npqxtWL6Vv5zopWe40FaMk/3CrxLz3uWaeoSxq4l3sEFuy3GcnuGRfbaTqsc2tI/Ukp5uox3w\n7mF0PzIhVceR1di7SBD+FEawgxdT1jbY1O3CTHUS9oOESV+isyzXRd4HSqRTSdb/m5J+/gmR\nqzF52uxah0FQqk/UiAqzYuHdlLUNNrc6mULry2FIv/676a3ZP4VzjhaSDZkMuUqGNkgg+35Y\nxJphfTurhJe6yabIl+OfaWGDih1UYHWM49gnhAQVOwghVEp1XmO6qqMDXX1A1V9VzLQOl379\nMVO+LM+pTZI1fGX/sIgWFTsEyMOFXz1LZThlLg7rhKPTZETVslSOYUCYv6R4PVN/VGYfG/R/\nlr5fB08B6VeMNVTvolrlLrWdLt1YI9ghs2xWubTKdsEdOHIn1YkQp8F6IEX+kIZf5TrZXtWM\niS1HIp39gBCruxTpfxRixfB8h+U6jemH2Gyu/ZhCtos1gh3s+PKRTtsz9VAcL8Lj99UC4I06\nnbBHUvX3ClrGD5/O58zmVAcFHCLYwSO3H+nIc2HTOsuYtRBzYV4aTi9jTzqpTqQNdMtYt7MP\nYb6sgeLXIDmKdvFFsIOljAcI3vlARp4DkEk/eyipztBg7Ud9vCPSCYu5C/JMz0cuI9gB7hhO\ntzkyhAiemVa8Mmajw39moZfoPNwKg3Bi3MGVUxjlgiMR7ACnTGcqJOf1kzHbaaPr6IeVlZb2\nrNLS4SwoR6qDgS9LjWQpfeYsK5VAQ7BDSPQHHf0nS6vtsrGZfypptoP0ku9OSPSZbejlJNVJ\nzkmq8zanwfnU2nDWQ0FMsUAxApe+6KX2o+n2mH7o1Mc+KUIek2FDU3aGKDvD870NHbUHf6Ta\nCmuhpbr4HpBzHBU7HBbEe9hmwRSbu8hWunO7XJyMFxZDELRIt+WNqNvhj1TKpIZnJehOWA/r\n4XlgWILKQH8R8MGlTRIekGGPih2E8PrJLOO7XY1Pe94imhR1Ow3VO1OpMpvbepvnOzoXerku\n+e4Efe3Q8CM88JzP7Ptwsy/XpY7bg15uNBzDl2/N06c60y2QH/9hspjZt7n+K8yn9ha/Av0M\nF8dEmJ7/pMh2dOrZyCbSBZfqQmeV4Yh3ytMfaW0CXMinJGSJYBcxqyQXWsILLtXFMZylc/6x\nOz3GRd8bq9Xq9BU7qncGZWe460i1ynNqRT1EK9DVUrwdmcl2McIYuyg5eavM7Nt8ytqGgBrg\n9h2egyMtCis6ebhX9JFOT6vYEen0PIQwq7uoMsDOijZ1N+pW4KBuPQr9mjzhsFyH2CHYRcb5\nB6BAs50r/o6itb9+TnqpzMOwYqsj4KCXG00fKvVBWX+rw2wnV5jTI9Kl2/JG5nkP+mKePtWl\n7qvf0+qOUEs4kxvEoWNRQM+lRncKrBDS4yGIMnig722r41G3HoVanvNwVUS/Up3NQ2nbZVh9\n1E+GMXbkPJGpYpfqV3XSwarfgd5Y+KpoRl3q06b2fdGMuhzsOYErVOyikSPjFax6DXy51rW9\n1PO6fS7VUp3ImSRnKLDZ18zSq242d7Svz2XcOf7VO8MUihzvmQ2taKd/RsOWQS83UnWDFSp2\nsaFAFgwhz2k8p7qcoN4kWdP1R1zFL6sHSecwpSk9l4Kpsk4mN4RzuVggHRU7+E/7OBt5qIq8\nATJSL9VpbCJdxppZagffo5ja2S6tEizF+j5hsa/bhZDqKNrBChU7+EyGrkwiXW7R5zZvWcr5\nvXycThtrZv378s4fCoZ+AJz9RvkNLm2y30GSCXxwgopdsNL7T6esbVCgU9WUDJEuhWxnQtVy\nnVvhT3fwMNJO2sF5tkM2k/P65VTdTkTa5epv0W5waZPVoiekunihYhcUq+WF5Ul1Pk6t2jm1\nnc00WL+eBTBnE85Sk1tTP5ruHE6Einvpbt0qJxNxcq1uF630y4JlY3BpU3rpjlQXO1TsZJex\nQm5K/zEu6LnxUhXqfOdtgWJIIe5BSio5Mrc6nnwv3bGiSqwR7PznV00uPdJpb137t1z629vJ\nvTzLmOr8WiQdrhkuOKFSP6zV0sEZ7+XhJr/YP7t+9oa2FItU/bDaXxGXMMkBRDoFEOx8Flyq\nS0ld/sHVRzTTi0Z4+Jyn31/5bta4lut69TeefVVKdRq/rvEqCflXOVbvT8hvqU+54Y+6y75c\nR55TCcHOT6GNn4t8lruHSBevFFhY0al+zeaoW5EF/Wk4VWhR49wsfwaykZ5HDb+ChOU6QarL\nwNBxof0Yo7mxpDrFMHlCRt7G1WVkGgc9vKXdRrTUZcTiJa7lOoOM3Wcx6llTb9XfCGdy+KtX\n/4N/abYRUJtXkZzXz/AVThsDYn99QgkZpr6S6tRDxU4iAeU5vew7ZD2kOlf7y0CRSJcq0cUo\nutnQZyCtrKVYyEsnYelOHNnRb4hxh7KddmmK1JXH9NHNNMalNsZuqRT79LZzajtJ6naGMJf6\nMYSTDsJHxc43WfbDRvsG0+bMG74ibE+EVEh1qfOuYX0K04Qnfy+bSgHOw2p20sr0l6PFO1cF\nuXhV76StyRlYrU6n3STPClzwC8HON24X+0klOf3SQTbvwJCZ1vDiWH6zp49xKkS6FKsMlzHn\nSSv7y0tEzkmqi8Wvlup4DUB6R22su2vDCX/a5/DlW/O0M0jqGyHTOQWh4b88Slqe07/xZCiM\nrxiev2J4vnoZTq+wolMqxum/zxXxinQirR9WDVYZTqFf1sdAFut4FwJ9H4vb8whFO8Uwxi4a\n+nJdauPyrXnhD7PLkcqcnj7SpW9UmX5ibOwmyeqvHhFHhumuGX8Lw+TfmCc8kyV44KtUONNX\nCijX5Sb+1/0Ul0uvaDU57Uu/XctzqVSXHu+UXG1Yv6xJrsS72Il7rHFFgU7nFL87bWNXtItw\n8gSpLmfxH++zbLJdtP2wplU69Up3hugW78Xq3DIsbhevhOdjtjM8VMip0UlWs1mrL45RL161\nYcd8D207p7bTLjKe+vL38ZEjCHb+m7K2IS6luxQtwG1cX58xyalRtKtfs9l5pHO1MwLhY5pJ\nT3XhRCXtWfT/2u9ps9HJg6grRkU758lv59R2O6e2e/L1XYbtzuNd7E46CA5j7PyX8X0owwwJ\n57r1KDSEOSf5TxmqRTr9SiiG7dJeoMKX7KV/EG3IWurfuLAZome4SfWea322i3bpu6IZdVbz\nXu1TXfq9tFT3/aFt7XeWZGE8yIyKnZ8yfrrSr2wioVTdLn27IcnFvW6ndcjWr9nscEpsap8Y\n5zzTuBaX3tggEli8Up3GZpVm+VdsDuYDQ+QFvKIZdelhy8dUl/G+KRTtoKFi5xvlx0MoVqVz\ncjVYLfkZdtM2Btm0wGSMcRKW6/ySHonCLGsFGiJjdPHcYEZ2Juf1i/ySFa56XU23Z0x1qY/T\nG80uIOQvq9MZ2TEWqNiFR+ZaXW5ymM8UWRXF/nKxks+l8DGvSB59nIvXL2K4CIrfIq/bOWSa\n6p58fZd9qtu4vt7QSZK+poHGlxHeNkUKpnTEAsHOH/ytK8Ow+kl6VS/G2c6U/nSrarnOIPxR\naPEKYcGR+cOD37T5ENlfecJm3IvVNb49ZzuHuY3zneQIdqHSX+lFKnEfM+dKeteq/T6m38d4\nsF1Kao0x/b85Qv4RaRnFYoaEluRCyXPyFO0MeS71o4dO2HCOzB6CINlOZjKGDERCfwRxcjQx\nHTKsEm2Vk9Q0C/326BrlE8OCdjkoFqnIRozaL3GVLogsaJXeArpobPZFu9SeZDVlEOyy5XzM\ngaFWJ2HpTstzriZJxC7babHMvkrnsFwXy+qdoUonpxCuHhbfct2WN+KU6qT8M9MuO6ulOv33\n2XOe3p58fVf6qnUGDst12WS7bAbkEQSlxaxY75T8s06tUWe/WJ0+zxmyXUAfTH2nn9xqWplz\n+yD2G2XhYd5rtFNl45vAohKj2Oc3J9NjrTJcllNrXR33MkY6vzjPbUqeznIWwS6DgP7cl2/N\nk3aSbMZsZ1WlS31w1N9L8tWMnVfdrHawGrFnGhwjpk191a9FLEKvqaQmLmiJzSaFEOnSZbyM\nbA6nOntOanIyLJuS4mp03YrgF0BBjEjXGyiV4FJdEA/ro43r64tm1GlHCv3xxWZcnVV3QM7S\nlwClSHV6+mFPGYdA+Z78nKy7RqrzQMJUF/oAO9MAF/S8Cs/lutBKd0FgTTtpUbGzFGhpenBp\nk4RFu/TPfEUz6ops7+Ikz0lbtPN9bJyhXJcaiidLsDPkuQjXrrO/IhYy4lVyzFWqC6hoZ3Nh\niYyL2DlE0Q4pBDtz4Qw4kCrbeTgoUKVLscqITq5vEaXw+2Htb5Kw5iQJXhlPZFgDJWNZTtth\ncGlTVB+AGWCnGNn7BCEtV6kup9bJM5ClXGcQyXwI03Ri0zNLmkHMOexs1T7hR3Kc9JzqiIPS\nIthFQ8Jhds6DmtXVbDTdehSmXwBH5F62s1lXJXfRgegLXsbA+NgP62RBk3SmB0/AFeniBSLk\nJNtRqIs3KdcVM0GtLh15Lj5MI53zqOfhyOltgB1VNyUR7KIkzwC7FPvc5nCqhIebPD9m9g8e\nnMKKThL1w6YiXWqN4jB5GEK35Q2izGEZXwqicNY8l+uyXKddwhMBYo1gl9O0a9fqv2x2djtV\nwt+kJWFui5/Iy3XOgxqRDrGiz3bhL2ISyXxYljuRFsHOXEB/soNLm7QPZ6lvomIV45ZvzTMt\nzvs7AdZtSnM1WSw1SEU/WiXMkStalU6uWl20kc5bSiPbmeJlccNhES4xdnX2o+s81+2yGXI9\n6OVGVjmBAcHOUnAfR7RF7AJ6cCcyPntwAy88Bywn2U7/yPrrZ+jjnYen9kCuVCfJVdhJJFJK\n9JkddROClTGx+ThhwmYJ9+xpGc7wFdBzZUS5TmYEOzv+/u1qeU4LVZFnuxixKbylJzbTWyMh\n13zYCLOdfvFhZMkqHGfxCiffnZDoM1uZeGea0myimzzXELMnVVmOVCc5FijOwPAX7EspK9p1\niR0Gypl9m0f+7tVfssKXy1eEs/6nXJcRS11hInWJ2EgwEyI4PuVmQ7ZLvjvBw70MkuuiXx9Y\nE2aAm7K2we2Zwv6kIEOqi/x0AOcoGoVHn6ikuuaElZl9m2tL1gVxhQmH5TSbCpznDtZwKnn1\nazabFu0iqORF2xVriB1U7+RjmuGc1PCUqfPJwOojd6Cpzklcm7K2gVQXL1TsYEna6Gmo5Hm7\nY9C0i4lJdKHYyKfEIm6yz22JsatluKhX+DwU7UR0k1ttmkqkiyMqdtGIJDO5GtUXQgvtV7yz\nT2x+LYkXXPVOX5lLfR9Nzot8VmwKHbKyctjx6kFcBrH5zm0kijBCWT01qS6mqNjlhFSkc5Lt\nwgydWq6yqqJpVycL7nkN3wdXzIu4aBft6DoEiq7t+JMhP2lt0Ep3MrQH2SDYueOtwG4qNcxO\nqvF2UbUk8vWHtRAZRLbTz6WIplwnCS2CmBbtqOR5Q6qLP6lSlF+NST9LSvVrKo+u2Cillj6J\nuiERs0p1kae92JMn1WlIb7IKdBpEmL2xsRvSp97VWk1/I/V+TZkR7Fzz95OHVKvZETEFaTJQ\n+gpT6nvKdchhipWybAIc2S40EqWKGMl++nfQtTqp8mIspK5Cpv8x9iS55oSBPtLRmehZrF66\nnJ1CkVMyRjeyXTgYY+edPtt5/ns1ZDur8XYhjMOjXJeSCnmhrY2Sc/ShRO5yXaLNt5K734u6\nFQDgFHUdf3gr4GWcrGpY09j5I+tTmmwzYWNHkeodFONrIA5uuZODjx+3oW++yHheUKwfFpIg\n2Pkm+7eoaQKjUzVapLpgyV2uE0LIW66LVVdszrI5L3g+ZQR3QSCogdAQPS26pVfvXC0+Z4Nq\nnAwiuJKYkG9WrBUyitLCLNdJOJjPNMB5S3WGPEe8gynG2PnG2zA7qyqd72lscGkTxT+3KNcF\njimx3vgdhXPzqq+pxBl0HPSly9Uqw60Ynh/JtcggLYKdpPwNYVpMTIXF1INTzAuTfqViHEa2\ng3+S8/o5SWmGIqL2o4TVvhT7yhzZDnoEu4Nm9m2ezYeqcGZx+1LJI9VFomhGnZPdcnOMOdSW\nGLtaqj9sq8Y4DIVyItshJdf75mb2ba59Gb5XHqnOlWz6ZItm1DlMdUKIxNjV8T21WEoV5MrO\nOOJ7wzdwIpjxiEHPipWHfcSUKoCmMJAOruR0xc4qw2VZvZMcg+2C4Dy6OWGf7eQ895grO+Nw\nENG+17IdsyWyEcNXL8yiXZaFt1jX7QCRyxU7+8pcqnonYQHPdHG75VvznMc1ynUebFxfb1W3\n8zfVZeSiqifDlSf0BTlDlY5anVtBRrrkuxMCrdvJcMXYOH0oiiGFCyLxkrvBzjk5s51hMRQt\nq1GKC5o+3m1cX++qm9VfMeu0tcpwZDvJBJ3tQvujVSnDKTN4juQXjpzrivWW0mw6Z0OOfTbL\no8S0jzV1zIrROBIt28lwtDU9TR5xSlu3ysNqdvrFL3Jn9FU8pDqyA+vRTr47ITdXP4k1GQ5H\nQogpaxuszomkutDELwdkI5sQZtotG20xL71PNl59rINebtQfjAw/hvDsrvaJsKluGesi61Y5\n75NN9JltOKmnb0HEtDJnwN2ywT14hOJU5D6S/QFHqsPRlLUNhgyXvgWBUrxi53vwkrBbVsRk\nPoTDQ09csp38/D2HeazhsUZdQJiAEhhpw9+glxtNuzXkPC6R5CKkbLCTM4EFR+ZanZzHHXim\nhTxVizpSi39Kjnzom2yL6rmSnu04uiKdmsEu11JdEJcg84BDTE5x0j+bfHcCRbtAxKRcF2GE\nsim82WQ7act1KTE6zBpOxNTwQiN7/x3SafMk0r+PVowONwjNwfAXkxQCHyXn9ZO5MJYe4GI2\nzVxuEg5JzykKVuwU++txMn4u8mxHqoOVg/22O5+OuiEIT+SRzklEI8bpe3V9PIbbnILVXvxf\nHlTspKavzKW+ke1ir6Q6ZJQoujRRdGnUrVBF8BVQz/OgZSjUkdgyWjE83zBWL31LQBSrvMhJ\nwYqdAuSZ5Upog498zHaUACUUSaQjxrllE+BWDM/P8phPbpOBFOnBR3H/qzIdM6ffEma5jlQH\naeVuCZABizqkOrdkWAc+7qdp+VGxk4hWqJOkgxWQnyHbUcbzhbd+2HDKdSS5oGVftEPkFAl2\nynwCsEl1YfbP8sZGHCWKLlUz26WWjAmxXGe6TmHQ1yCpX7O5sKKTzQ7Jef3Idik7p7ZL3xjV\n1ashDxWCnTKpTi/kYXYkOajBtH82xmkv9Ehnv/q01WVkfSnXZUx10DNNdantkcQ7h+diJsYG\nLfZj7NRIdQ67XwPqpSXVQW3xHo0X7qC65LsT7K8pkn6rX6nO4Z6Rz7oFJBf7YKcw06KdNrvC\nr2Ke5BezB/wS18kWXLTDjAyLqkTLqlznfIeoUK4LQVy7YtUo1Bmkz5ywmk5hP82CrAaYypjt\nwuu09XyltbIzDtbwUt9EKoRyXfqtWo8t4+0AU7Gs2CmW6kxXMzHcarp90MuNhu1U4IBsxKOw\nF/pECgP7vlp/mWa++jWbnXfdQi/jCYIziALiV7FTLNWlsyrRad8Y3nWUtQHf6bOdFBMvtOKc\nvkQnR7nOR4UVndKzmmFL+tQKinYeDHq50Wo1u2xSnfKn5hiJWcVOyT8drepmX7cTVOOAKARS\nwPOcyaQZcqcV7Xwc6GaYEptek7OaMJvjg+28ST+bZHl+YT6sVGJTsVMy0hnoZ0UYsh2rFgNR\nUXZ5vOz42CFrWq4z7GDXEup2nvhVKSDVySYeFTvlU53+QmGm/bDU6oAI+Tz2zlXhTdtZmlrd\nQetWiXWrfHw8Q3RL/VhY0cnJ4nY5VbdzMuM1tHXsSHUSkqhip3x6c86Q7Uh1wP9v7+515Kjz\nPQ732HJIMhYJwWajSQjsBQmQuAPfwZHzE5sLwTE5GTEXsNEYab12sAki2yM5QTghtMAnKKgt\nqrurq7rr5V/feh5Zq2E87yDNZ3//lypBzyeY1W8WO+cbNek6FHtfcasjj80LD+bm2cPF/jeY\nlPbwCVU3syLCTtLtDu20q6g6KNPBJdpm/M23hts6SzHp0Yq5qm6oeRZkD7Za9crmZ++YIO6/\n8UmDLqUrreqY38JhJ+ma/N8aWJeT67NHH3F24dJqK+MOWvnJ2SnGdT0nbR3vMspb7oZk6CVX\nDe8/Xqw+Dzv/yGDBT701i4WdpGtRdbARo03yDl6AUnfe7M+ZLVnHpG13pPBK2Ld3RtXtv0v1\nmp9+fNt8ZZVZFzZWz9/jrdtVRvnUdFjm8ISqa1F1sCnVaYwRDmQ00605uivtsMX0Oja6nUy0\n/TeYoermDMdW1dVePLl/7E67sRy70mHqz7tls07s9Nw+SQdbNs70rs64VttNt/Hu409L22y3\nv7h5djmVMKsb0bGqq+03Vp9xWp9f6N0Xdb14ct/cbgrzhZ2qq4k5oNYxt+tqvjNmcqOszH78\n6UXvPqVm2w2NswIvw7tkd92FRlktdf3qUmYKO1VXU3VAT0fnefVDxjrsj+tGXJ8tbFxXu2TY\nNv+grrsmH37984JtN4+Zh3YHUyTvl/I6LiiOkfcfEDCpo7vxzqi0//uHgxSl6ajJxatunm1w\ns222OzZgyhs8zTGxy/upnUfVAWdrtl17jNecxh2czOm5gh2b221hYlcZfW43tDqeP36Q9Ava\nxG4mSf/RAMs6PMOr622GyVzBO+3WaI3HNcb9pTbi3M4sqYgnT8SrUaTUAAAOd0lEQVRTdcBU\nmg0322Su1D1261Xg6Y1KK7n6j9bu3twbdH7iYNsNneSdXXVJQ7s5JnYxP6w+9r/ZTX37wGyu\nHv6PNdYk+3O7UZ4PdnN7ffb77sdW8+q7GX67ue7uDCZ2Y6r+K1dyQLI+47r9tdp//7N9+115\nl+Etbn9uN8pOu5vb65O32Q3SZ1dc9avw8jLrf/eKRdiKPXaj0XPAYooa3R3cgdf/lds2z9zu\n5vb6kkle7dmrdwfXqepXjnUqYoaHZMRwKvZ8Sg6grbvV6ild681M7zo12+7sAd5+yV0yyWsO\n0mb7bVi33Qy33x1Ll/J/9VuKPUf5/14BFtBnAifpLlPUNSh91kk///630Ydtozwb45juaVT1\ntyVnwORhFzCuK/nfH0Apzl5X3W87tdepHuBdWHhjbbxb6qmvU3zentFS8inaaffYqTqA6Vw9\n+maBzzrFxrj6Y378qY13/Y2y/W7VmrPAy39fD4qWYgvHUuwfBBywRlePvnn/+n/n/kQTTdQk\nXQHO23jXPTybYjX2oGev3l1yld24X8xSJgy7tfyMJB2wEfWEb4QWHL3t7L3b7Xa7XZ9riqfb\nY1cdsBj9epRJtZrykrbLMEnYreVnKumAAN1Du4PLtQdfefKDtD9Rq72qm+qY2OhVN0/GzTa0\nY7v32Kk6IMaxzXaDNuH1+SDtt5mo5P79T+O6pl+++rD+M+Kna91md+zlsSxywGJSZY6xxp/Y\nlfl91vQcEKlKrnqidt65ij4fpP02f7bI+28/GWdot8mkO2apm00mmuFVbTfF7Sd1NRYeITPY\nyuEJPQdswSjnZPt8kP23qQrv/N17+88cY0b7j6YY1HaDpnHT3Wx392budcgC7z1JW4rtfrYJ\nAJO6qCz3q27bm/ZmG9dNsfA6v/mrrkzrntgdLDYZB7Cg0W5g2d452fffftLnVGxp8jbPrdqK\n81bAAZTp6tE3w0Z3PWd1Gxjgvf/2k6W/hD/0GeN9/v1vJVTd3Zt7xnW1tf4gVB1A4Qbn3THN\nnttA25Wjo+0KSbqdFdg94/84ZkguVQewFr3ariPXqr/aX5ZVeLPYb7v5k66QglyLSfbYjXXv\ns4ADCNBsu5EfgJa78W6pi072VW231HNpu6tu8XFdgaEy1U/k8m+1wB8WABcaYXG2OatLrLrR\nLyIuUM8hXOFVV6YJT8UqMwD2HR7gnTF7SxzXvf3Xf5b+EkpR/gpsmZ2z7utOAFi1vzzHohrF\nVa22ySfPbqrqOp5C0Uq6g29jXHeMsANgYX9Zn33055UfJ9sua1y3qaqrlT+WWx1hB0BZrp6+\nPOc6t+bAb5e5ULuU6U5OdD9b7Fj2FTKuO3hOdPH12SJ+NADQdPX05dXTl31PWrSSrvX6NVjj\nAycu9OLJ/ZNPjO3zNqUZ5VaQS5jYAVCuvg8o69lwpY7xynngxLhalfPFR7+P9ZG/+Oj3em7X\nfLkEzx8/WHBuV9APAgD2jfYEi8p6xnhrN13VTfox187EDoAV+Mv52crB8VvHTE7Snau6V6/a\nabe/NnpwJ9ykVdf8aGW23YJDOxM7AFZj5OkdQ/zy1YcHd7zt74SbZ59Z+Xm3CGEHwMr8N+8O\nDuGarzSlG89PP76tXri5vW7+OfmORVVXfA4KOwBWqW/b1Yo8NrEWVdUdLLnqNSs6vvrFR79H\nJl1F2AGwVtXo7sT67H7kGeOdpWM412duN7U+rRY/rtsJOwAynGg7MTexm9vr0oZ2rXRLLbkW\np2IBCHHiXMWj3a75XNrCVmav//63kp8qdslM7u7NvZmjqrSb7ea00W8bgG06cfBiISUnXX/1\nvScLXs9bF2T1wkamdE0mdgBszh9t96jrbVKfBjGdX776sH6q7LNX75qXnsw/tNssEzsAWFLG\nuG5fa253bG304P3G5znWjh3HYPNy08QOAA64evpytqFd4Rvs+msO7Xb91mRHP3Kxf2ZixHlh\n9R2dvIF5wcVoYQcAh83Qdm//9Z/rv/9t0k9RoJnPz3ZXXfW3MYctQr4NAJjC1dOX1Z/Wy+PK\nGNdVqgfLdijtVpTKoJFe90BuwXHdTtgBQB/Nnhux7SLHdR1tV1VdCRcaX+hYvS1bdTthBwBn\nmGJuF6+uup9+fFtg2/UZ2jV31z179a6Zca1/XIo9dgBwjqrt3Ipy0Isn9w+mW1V1x/5xcX1u\nNn7++EGr5yb+ooYxsQOA840yuktakK1C7VjVtV5YqZOnYhck7ADgIpZlayfHb81F2NLGdbuI\ns7Gr/wYAIEbA6K78adzdm3v1n9br+3+QYod29tgBwKUuv/Eu4I7iPuO3xbPvkphbhbTvBwAW\ncfkVd1sb15W2DjtUmUM7EzsAGE2r7ZyZPWbOqqsfKZY3n9uX/x0CwFK2dq6i2CHcRElX4NBO\n2AHAhLbWdqXZ1LhuJ+wAYGqDtt+td6fdze310LMRk56lqEtuI0lXsccOAOZg+13TdJfYVRm3\nqSld0+a+YQAoQccMb71Du0EmvaB4tqQrbZudsAOAZXQs0W6k7TIU1XbCDgCWdKztHn7988xf\nycyajxdbu3Lazh47AFhY1Xb1rrs69aq2++WrD5f6wiYy6a0oX3z0+wa31tW2+50DQFGqldn9\nAd7Dr39Omt7VVTfdHrvq5ET1v7MpZGgn7ABgBcLyjokIOwBgJs0RXbGPqVg1YQcATO6nH9/O\nWXJj7bR79urds1fver5xCauxwg4AVsNqLN2EHQCsic12fSx1MPb54wfLzu1cdwIA69Pddnk3\npCzl+eMH1WrsoFyr3mu6r6qDiR0ApFlwqjfzXrpjRrzrpISdc/0JOwDItGzeLfJ5pzN0ArdU\nDgo7AEg2Z94du81kkc5bfGi3SNvZYwcA+fbbboZ9eGFzu6E77RZhYgcAW7SF07WjP1VsqSMR\n/Qk7ANiuKu/Giryb2+vLP0iZqlnd0Ind/BM+S7EAwG7353Jt2FUpYz2CYjfqTrvpJn/CDgD4\nr6F5V4/6qne5ub0O21o3har2psg7S7EAQFufldnWAm79clELsks9gmIp2/puAYCeOjbendyT\nd3N7XVTelWmKHXiWYgGAowYdqnj49c/NNdxm2619fXYVd53sTOwAgBEdHObF36tSDhM7AGBk\n5ZTcKKdi+59yqN5ywdmeiR0AsIy7N/cKP9zw7NW7uupO5l0J1xeb2AEACe7e3Dv4qImeQ7sL\ns6yEqtsJOwBgEaPP6joeIFb91bHPePlKayFVtxN2AECAY+O6puoNPv/+tws/VzkZt6/ohW0A\ngKHK37pX8eQJAGCV9udkJwdsQ1UxVyddlXfNP+N+ug4LjvSEHQAwh2NroCMmV/eHuntz7/J1\n2LFMFH/CDgCYyeff/1b9qV6uh3bdQdZ8l+ZHOMNsN8x1d9t0Iz1hBwDMrQ61OnGOtV3dcK2Y\na/3j6Au7lztWb5Mu1DoVCwAsqb5DpGq7OtFOjuWqN3jx5P7EX+D5WtejzLD3TtgBAMs7O3rq\n/rtb7kFe3eY8S2EpFgBIUPL1crMRdgDAVsTHn7ADAELEd9tJwg4A2IQtZJ/DEwBAjtZB1OYr\nt0DYAQBptlNyLeeE3evXr7/77rvRvxQAACqvX7/+8ssvh77X1fv37we9w6+//vrDDz8M/TQA\nAAzy2WefffDBB4PeZXDYAQBQJqdiAQBCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISw\nAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4A\nIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQ\nwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7\nAIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAA\nQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh\n7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLAD\nAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAg\nhLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsAgBDC\nDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABCCDsA\ngBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHsAABC\nCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMACCHs\nAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCEsAMA\nCCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIOACCE\nsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCAEMIO\nACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEIIOwCA\nEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewAAEII\nOwCAEMIOACCEsAMACCHsAABCCDsAgBDCDgAghLADAAgh7AAAQgg7AIAQwg4AIISwAwAIIewA\nAEIIOwCAEMIOACCEsAMACCHsAABC/D9k+Yhoaa5jaAAAAABJRU5ErkJggg==", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "# Plot the travel times\n", "tm_shape(geo) + tm_symbols(col=\"travel_time_p50\", size=0.5, border.lwd=0)" ] }, { "cell_type": "markdown", "id": "faea5227", "metadata": {}, "source": [ "## Calculate catchment areas" ] }, { "cell_type": "markdown", "id": "5f4d060a", "metadata": {}, "source": [ "One quite typical accessibility analysis is to find out catchment areas for multiple locations, such as schools. In the below, we will extract all libraries in Brighton area and calculate travel times from all grid cells to the closest one. As a result, we have catchment areas for each school.\n", "\n", "Let's start by preparing data. In the following, we will:\n", "\n", "- Download OSM data about locations of schools in Brighton area, using `osmdata` -package. \n", "- We will also rename the column `osm_id` to `id` because `r5r` expects to find a unique-id from column `id` (similarly as `r5py`)\n", "- Lastly, we will extract the x and y coordinates from the geometries" ] }, { "cell_type": "code", "execution_count": 23, "id": "2196a3bc", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Warning message in st_centroid.sf(schools):\n", "“st_centroid assumes attributes are constant over geometries of x”\n" ] }, { "data": { "application/geo+json": { "features": [ { "geometry": { "coordinates": [ [ [ -0.0958, 50.8207 ], [ -0.0961, 50.8199 ], [ -0.0966, 50.8191 ], [ -0.0968, 50.819 ], [ -0.0969, 50.819 ], [ -0.0971, 50.819 ], [ -0.0973, 50.819 ], [ -0.0973, 50.8191 ], [ -0.0974, 50.8192 ], [ -0.0982, 50.8193 ], [ -0.0983, 50.819 ], [ -0.0996, 50.8192 ], [ -0.0996, 50.8195 ], [ -0.0996, 50.8196 ], [ -0.099, 50.8209 ], [ -0.0976, 50.8206 ], [ -0.0974, 50.821 ], [ -0.0958, 50.8207 ] ] ], "type": "Polygon" }, "properties": { "addr.city": null, "addr.country": null, "addr.housename": null, "addr.housenumber": null, "addr.locality": null, "addr.place": null, "addr.postcode": null, "addr.province": null, "addr.street": null, "addr.suburb": null, "age": null, "alt_name": null, "amenity": "school", "barrier": null, "building": null, "capacity": null, "contact.phone": null, "contact.website": null, "denomination": null, "description": null, "diocese": null, "email": null, "female": null, "fhrs.id": null, "fhrs.local_authority_id": null, "fixme": null, "gender": null, "id": "4564528", "isced.level": null, "landuse": null, "lat": 50.82, "layer": null, "lon": -0.0977, "male": null, "max_age": null, "min_age": null, "name": "Brighton College Sports Ground", "name.zh": null, "nohousenumber": null, "not.addr.postcode": null, "old_name": null, "operator": null, "operator.type": null, "phone": null, "ref.GB.uprn": null, "ref.edubase": null, "ref.edubase.group": null, "religion": null, "school.boarding": null, "school.federation.name": null, "school.gender": null, "school.selective": null, "school.trust": null, "school.trust.name": null, "school.trust.type": null, "school.type": null, "source": null, "source.addr": null, "source.addr.postcode": null, "source.geometry": null, "source.name": null, "sport": "football", "start_date": null, "surface": null, "toilets.wheelchair": null, "website": null, "wheelchair": null, "wikidata": null, "wikipedia": null }, "type": "Feature" }, { "geometry": { "coordinates": [ [ [ -0.126, 50.9506 ], [ -0.126, 50.9501 ], [ -0.1251, 50.9501 ], [ -0.1246, 50.9501 ], [ -0.1242, 50.9501 ], [ -0.124, 50.9502 ], [ -0.1239, 50.9502 ], [ -0.1236, 50.9503 ], [ -0.1235, 50.9504 ], [ -0.1232, 50.9505 ], [ -0.1226, 50.951 ], [ -0.1226, 50.951 ], [ -0.1224, 50.9512 ], [ -0.1226, 50.9514 ], [ -0.1228, 50.9515 ], [ -0.1229, 50.9517 ], [ -0.1229, 50.952 ], [ -0.1229, 50.9525 ], [ -0.1234, 50.9524 ], [ -0.1234, 50.9526 ], [ -0.1238, 50.9526 ], [ -0.1238, 50.9529 ], [ -0.1245, 50.9529 ], [ -0.1245, 50.9526 ], [ -0.1257, 50.9525 ], [ -0.1258, 50.9521 ], [ -0.1258, 50.9516 ], [ -0.126, 50.9506 ] ] ], "type": "Polygon" }, "properties": { "addr.city": "Burgess Hill", "addr.country": null, "addr.housename": null, "addr.housenumber": null, "addr.locality": null, "addr.place": null, "addr.postcode": "RH15 0EG", "addr.province": null, "addr.street": "Keymer Road", "addr.suburb": null, "age": null, "alt_name": null, "amenity": "school", "barrier": null, "building": null, "capacity": null, "contact.phone": null, "contact.website": null, "denomination": null, "description": null, "diocese": null, "email": null, "female": null, "fhrs.id": null, "fhrs.local_authority_id": null, "fixme": null, "gender": null, "id": "4796362", "isced.level": null, "landuse": null, "lat": 50.9514, "layer": null, "lon": -0.1244, "male": null, "max_age": null, "min_age": null, "name": "Burgess Hill Girls", "name.zh": null, "nohousenumber": null, "not.addr.postcode": null, "old_name": null, "operator": null, "operator.type": null, "phone": null, "ref.GB.uprn": null, "ref.edubase": "126134", "ref.edubase.group": null, "religion": null, "school.boarding": null, "school.federation.name": null, "school.gender": null, "school.selective": null, "school.trust": null, "school.trust.name": null, "school.trust.type": null, "school.type": null, "source": null, "source.addr": null, "source.addr.postcode": "get-information-schools.service.gov.uk", "source.geometry": null, "source.name": null, "sport": null, "start_date": null, "surface": null, "toilets.wheelchair": null, "website": null, "wheelchair": null, "wikidata": null, "wikipedia": null }, "type": "Feature" }, { "geometry": { "coordinates": [ [ [ 0.3224, 50.8893 ], [ 0.3227, 50.8893 ], [ 0.323, 50.889 ], [ 0.3234, 50.8892 ], [ 0.3236, 50.889 ], [ 0.3228, 50.8887 ], [ 0.3227, 50.8888 ], [ 0.3224, 50.8893 ] ] ], "type": "Polygon" }, "properties": { "addr.city": null, "addr.country": null, "addr.housename": null, "addr.housenumber": null, "addr.locality": null, "addr.place": null, "addr.postcode": "BN27 4LG", "addr.province": null, "addr.street": null, "addr.suburb": null, "age": null, "alt_name": null, "amenity": "school", "barrier": null, "building": null, "capacity": "210", "contact.phone": null, "contact.website": null, "denomination": "anglican", "description": null, "diocese": "Diocese of Chichester", "email": null, "female": null, "fhrs.id": null, "fhrs.local_authority_id": null, "fixme": null, "gender": null, "id": "22767691", "isced.level": "1", "landuse": null, "lat": 50.889, "layer": null, "lon": 0.3229, "male": null, "max_age": "11", "min_age": "4", "name": "Herstmonceux Church of England Primary School", "name.zh": null, "nohousenumber": null, "not.addr.postcode": null, "old_name": null, "operator": null, "operator.type": null, "phone": "+44 1323 833148", "ref.GB.uprn": "100062258979", "ref.edubase": "114506", "ref.edubase.group": "17183", "religion": "christian", "school.boarding": "no", "school.federation.name": "The Sussex Spires Federation", "school.gender": "mixed", "school.selective": "no", "school.trust": "no", "school.trust.name": null, "school.trust.type": null, "school.type": "voluntary_controlled", "source": null, "source.addr": null, "source.addr.postcode": "get-information-schools.service.gov.uk", "source.geometry": null, "source.name": null, "sport": null, "start_date": null, "surface": null, "toilets.wheelchair": null, "website": "https://www.herstmonceux.e-sussex.sch.uk/", "wheelchair": null, "wikidata": "Q66223920", "wikipedia": null }, "type": "Feature" }, { "geometry": { "coordinates": [ [ [ -0.4829, 50.8133 ], [ -0.4822, 50.8133 ], [ -0.4818, 50.8133 ], [ -0.48, 50.8134 ], [ -0.4802, 50.8129 ], [ -0.4803, 50.8126 ], [ -0.4803, 50.8122 ], [ -0.4814, 50.8122 ], [ -0.4814, 50.8122 ], [ -0.4814, 50.8119 ], [ -0.4815, 50.8119 ], [ -0.4815, 50.8118 ], [ -0.4816, 50.8118 ], [ -0.4817, 50.8119 ], [ -0.4817, 50.8121 ], [ -0.4821, 50.8121 ], [ -0.4821, 50.8119 ], [ -0.483, 50.812 ], [ -0.4829, 50.8133 ] ] ], "type": "Polygon" }, "properties": { "addr.city": null, "addr.country": null, "addr.housename": null, "addr.housenumber": null, "addr.locality": null, "addr.place": null, "addr.postcode": null, "addr.province": null, "addr.street": null, "addr.suburb": null, "age": null, "alt_name": null, "amenity": "school", "barrier": null, "building": null, "capacity": null, "contact.phone": null, "contact.website": null, "denomination": null, "description": null, "diocese": null, "email": null, "female": null, "fhrs.id": null, "fhrs.local_authority_id": null, "fixme": null, "gender": null, "id": "23003318", "isced.level": null, "landuse": null, "lat": 50.8127, "layer": null, "lon": -0.4816, "male": null, "max_age": null, "min_age": null, "name": "East Preston Schools", "name.zh": null, "nohousenumber": null, "not.addr.postcode": null, "old_name": null, "operator": null, "operator.type": null, "phone": null, "ref.GB.uprn": null, "ref.edubase": null, "ref.edubase.group": null, "religion": null, "school.boarding": null, "school.federation.name": null, "school.gender": null, "school.selective": null, "school.trust": null, "school.trust.name": null, "school.trust.type": null, "school.type": null, "source": null, "source.addr": null, "source.addr.postcode": null, "source.geometry": null, "source.name": null, "sport": null, "start_date": null, "surface": null, "toilets.wheelchair": null, "website": null, "wheelchair": null, "wikidata": null, "wikipedia": null }, "type": "Feature" }, { "geometry": { "coordinates": [ [ [ 0.2611, 50.7899 ], [ 0.26, 50.7897 ], [ 0.2592, 50.7895 ], [ 0.2584, 50.7908 ], [ 0.2586, 50.7909 ], [ 0.2588, 50.791 ], [ 0.2588, 50.7911 ], [ 0.2591, 50.7912 ], [ 0.259, 50.7913 ], [ 0.2591, 50.7913 ], [ 0.2587, 50.7918 ], [ 0.2599, 50.7922 ], [ 0.2611, 50.7899 ] ] ], "type": "Polygon" }, "properties": { "addr.city": "Eastbourne", "addr.country": null, "addr.housename": null, "addr.housenumber": null, "addr.locality": null, "addr.place": null, "addr.postcode": "BN21 2XR", "addr.province": null, "addr.street": "Park Avenue", "addr.suburb": null, "age": null, "alt_name": null, "amenity": "school", "barrier": null, "building": null, "capacity": null, "contact.phone": null, "contact.website": null, "denomination": null, "description": null, "diocese": null, "email": null, "female": null, "fhrs.id": null, "fhrs.local_authority_id": null, "fixme": null, "gender": null, "id": "23261552", "isced.level": null, "landuse": null, "lat": 50.7907, "layer": null, "lon": 0.2597, "male": null, "max_age": null, "min_age": null, "name": "Ratton School", "name.zh": null, "nohousenumber": null, "not.addr.postcode": null, "old_name": null, "operator": null, "operator.type": null, "phone": null, "ref.GB.uprn": null, "ref.edubase": "138474", "ref.edubase.group": null, "religion": null, "school.boarding": null, "school.federation.name": null, "school.gender": null, "school.selective": null, "school.trust": null, "school.trust.name": null, "school.trust.type": null, "school.type": null, "source": null, "source.addr": null, "source.addr.postcode": null, "source.geometry": null, "source.name": null, "sport": null, "start_date": null, "surface": null, "toilets.wheelchair": null, "website": "http://www.ratton.e-sussex.sch.uk", "wheelchair": null, "wikidata": "Q7296036", "wikipedia": "en:Ratton School" }, "type": "Feature" }, { "geometry": { "coordinates": [ [ [ -0.0678, 50.8191 ], [ -0.068, 50.819 ], [ -0.0684, 50.8188 ], [ -0.0682, 50.8186 ], [ -0.068, 50.8168 ], [ -0.0667, 50.8171 ], [ -0.0646, 50.8177 ], [ -0.0646, 50.8179 ], [ -0.0648, 50.8185 ], [ -0.0649, 50.8188 ], [ -0.0651, 50.8192 ], [ -0.0652, 50.8195 ], [ -0.0673, 50.8191 ], [ -0.0675, 50.8191 ], [ -0.0677, 50.8191 ], [ -0.0678, 50.8191 ] ] ], "type": "Polygon" }, "properties": { "addr.city": "Brighton", "addr.country": null, "addr.housename": null, "addr.housenumber": null, "addr.locality": null, "addr.place": null, "addr.postcode": "BN2 7FR", "addr.province": null, "addr.street": "Falmer Road", "addr.suburb": null, "age": null, "alt_name": null, "amenity": "school", "barrier": null, "building": null, "capacity": null, "contact.phone": null, "contact.website": null, "denomination": null, "description": null, "diocese": null, "email": null, "female": null, "fhrs.id": "803334", "fhrs.local_authority_id": null, "fixme": null, "gender": null, "id": "25772335", "isced.level": null, "landuse": null, "lat": 50.8182, "layer": null, "lon": -0.0665, "male": null, "max_age": null, "min_age": null, "name": "Longhill High School", "name.zh": null, "nohousenumber": null, "not.addr.postcode": null, "old_name": null, "operator": null, "operator.type": null, "phone": null, "ref.GB.uprn": null, "ref.edubase": "114581", "ref.edubase.group": null, "religion": null, "school.boarding": null, "school.federation.name": null, "school.gender": null, "school.selective": null, "school.trust": null, "school.trust.name": null, "school.trust.type": null, "school.type": null, "source": null, "source.addr": null, "source.addr.postcode": null, "source.geometry": null, "source.name": null, "sport": null, "start_date": null, "surface": null, "toilets.wheelchair": null, "website": "http://www.longhill.org.uk/", "wheelchair": null, "wikidata": "Q6673876", "wikipedia": null }, "type": "Feature" } ], "type": "FeatureCollection" }, "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A sf: 6 × 70
idnameaddr.cityaddr.countryaddr.housenameaddr.housenumberaddr.localityaddr.placeaddr.postcodeaddr.provincegeometrystart_datesurfacetoilets.wheelchairwebsitewheelchairwikidatawikipediageometrylonlat
<chr><chr><chr><chr><chr><chr><chr><chr><chr><chr><chr><chr><chr><chr><chr><chr><chr><POLYGON [°]><dbl><dbl>
45645284564528 Brighton College Sports Ground NA NANANANANANA NAPOLYGON ((-0.0958142 50.820...NANANANA NANA NA POLYGON ((-0.0958142 50.820...-0.0977460950.81997
47963624796362 Burgess Hill Girls Burgess HillNANANANANARH15 0EGNAPOLYGON ((-0.1259993 50.950...NANANANA NANA NA POLYGON ((-0.1259993 50.950...-0.1243808650.95140
2276769122767691Herstmonceux Church of England Primary SchoolNA NANANANANABN27 4LGNAPOLYGON ((0.3223906 50.8892...NANANAhttps://www.herstmonceux.e-sussex.sch.uk/NAQ66223920NA POLYGON ((0.3223906 50.8892... 0.3229030250.88901
2300331823003318East Preston Schools NA NANANANANANA NAPOLYGON ((-0.4829187 50.813...NANANANA NANA NA POLYGON ((-0.4829187 50.813...-0.4816128450.81270
2326155223261552Ratton School Eastbourne NANANANANABN21 2XRNAPOLYGON ((0.2611432 50.7898...NANANAhttp://www.ratton.e-sussex.sch.uk NAQ7296036 en:Ratton SchoolPOLYGON ((0.2611432 50.7898... 0.2597105650.79073
2577233525772335Longhill High School Brighton NANANANANABN2 7FR NAPOLYGON ((-0.067842 50.8190...NANANAhttp://www.longhill.org.uk/ NAQ6673876 NA POLYGON ((-0.067842 50.8190...-0.0665448950.81820
\n" ], "text/latex": [ "A sf: 6 × 70\n", "\\begin{tabular}{r|lllllllllllllllllllll}\n", " & id & name & addr.city & addr.country & addr.housename & addr.housenumber & addr.locality & addr.place & addr.postcode & addr.province & geometry & ⋯ & start\\_date & surface & toilets.wheelchair & website & wheelchair & wikidata & wikipedia & geometry & lon & lat\\\\\n", " & & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n", "\\hline\n", "\t4564528 & 4564528 & Brighton College Sports Ground & NA & NA & NA & NA & NA & NA & NA & NA & POLYGON ((-0.0958142 50.820... & ⋯ & NA & NA & NA & NA & NA & NA & NA & POLYGON ((-0.0958142 50.820... & -0.09774609 & 50.81997\\\\\n", "\t4796362 & 4796362 & Burgess Hill Girls & Burgess Hill & NA & NA & NA & NA & NA & RH15 0EG & NA & POLYGON ((-0.1259993 50.950... & ⋯ & NA & NA & NA & NA & NA & NA & NA & POLYGON ((-0.1259993 50.950... & -0.12438086 & 50.95140\\\\\n", "\t22767691 & 22767691 & Herstmonceux Church of England Primary School & NA & NA & NA & NA & NA & NA & BN27 4LG & NA & POLYGON ((0.3223906 50.8892... & ⋯ & NA & NA & NA & https://www.herstmonceux.e-sussex.sch.uk/ & NA & Q66223920 & NA & POLYGON ((0.3223906 50.8892... & 0.32290302 & 50.88901\\\\\n", "\t23003318 & 23003318 & East Preston Schools & NA & NA & NA & NA & NA & NA & NA & NA & POLYGON ((-0.4829187 50.813... & ⋯ & NA & NA & NA & NA & NA & NA & NA & POLYGON ((-0.4829187 50.813... & -0.48161284 & 50.81270\\\\\n", "\t23261552 & 23261552 & Ratton School & Eastbourne & NA & NA & NA & NA & NA & BN21 2XR & NA & POLYGON ((0.2611432 50.7898... & ⋯ & NA & NA & NA & http://www.ratton.e-sussex.sch.uk & NA & Q7296036 & en:Ratton School & POLYGON ((0.2611432 50.7898... & 0.25971056 & 50.79073\\\\\n", "\t25772335 & 25772335 & Longhill High School & Brighton & NA & NA & NA & NA & NA & BN2 7FR & NA & POLYGON ((-0.067842 50.8190... & ⋯ & NA & NA & NA & http://www.longhill.org.uk/ & NA & Q6673876 & NA & POLYGON ((-0.067842 50.8190... & -0.06654489 & 50.81820\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A sf: 6 × 70\n", "\n", "| | id <chr> | name <chr> | addr.city <chr> | addr.country <chr> | addr.housename <chr> | addr.housenumber <chr> | addr.locality <chr> | addr.place <chr> | addr.postcode <chr> | addr.province <chr> | geometry ⋯ | ⋯ <chr> | start_date <chr> | surface <chr> | toilets.wheelchair <chr> | website <chr> | wheelchair <chr> | wikidata <chr> | wikipedia <POLYGON [°]> | geometry <dbl> | lon <dbl> | lat <chr> |\n", "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n", "| 4564528 | 4564528 | Brighton College Sports Ground | NA | NA | NA | NA | NA | NA | NA | NA | POLYGON ((-0.0958142 50.820... | ⋯ | NA | NA | NA | NA | NA | NA | NA | POLYGON ((-0.0958142 50.820... | -0.09774609 | 50.81997 |\n", "| 4796362 | 4796362 | Burgess Hill Girls | Burgess Hill | NA | NA | NA | NA | NA | RH15 0EG | NA | POLYGON ((-0.1259993 50.950... | ⋯ | NA | NA | NA | NA | NA | NA | NA | POLYGON ((-0.1259993 50.950... | -0.12438086 | 50.95140 |\n", "| 22767691 | 22767691 | Herstmonceux Church of England Primary School | NA | NA | NA | NA | NA | NA | BN27 4LG | NA | POLYGON ((0.3223906 50.8892... | ⋯ | NA | NA | NA | https://www.herstmonceux.e-sussex.sch.uk/ | NA | Q66223920 | NA | POLYGON ((0.3223906 50.8892... | 0.32290302 | 50.88901 |\n", "| 23003318 | 23003318 | East Preston Schools | NA | NA | NA | NA | NA | NA | NA | NA | POLYGON ((-0.4829187 50.813... | ⋯ | NA | NA | NA | NA | NA | NA | NA | POLYGON ((-0.4829187 50.813... | -0.48161284 | 50.81270 |\n", "| 23261552 | 23261552 | Ratton School | Eastbourne | NA | NA | NA | NA | NA | BN21 2XR | NA | POLYGON ((0.2611432 50.7898... | ⋯ | NA | NA | NA | http://www.ratton.e-sussex.sch.uk | NA | Q7296036 | en:Ratton School | POLYGON ((0.2611432 50.7898... | 0.25971056 | 50.79073 |\n", "| 25772335 | 25772335 | Longhill High School | Brighton | NA | NA | NA | NA | NA | BN2 7FR | NA | POLYGON ((-0.067842 50.8190... | ⋯ | NA | NA | NA | http://www.longhill.org.uk/ | NA | Q6673876 | NA | POLYGON ((-0.067842 50.8190... | -0.06654489 | 50.81820 |\n", "\n" ], "text/plain": [ " id name addr.city \n", "4564528 4564528 Brighton College Sports Ground NA \n", "4796362 4796362 Burgess Hill Girls Burgess Hill\n", "22767691 22767691 Herstmonceux Church of England Primary School NA \n", "23003318 23003318 East Preston Schools NA \n", "23261552 23261552 Ratton School Eastbourne \n", "25772335 25772335 Longhill High School Brighton \n", " addr.country addr.housename addr.housenumber addr.locality addr.place\n", "4564528 NA NA NA NA NA \n", "4796362 NA NA NA NA NA \n", "22767691 NA NA NA NA NA \n", "23003318 NA NA NA NA NA \n", "23261552 NA NA NA NA NA \n", "25772335 NA NA NA NA NA \n", " addr.postcode addr.province geometry ⋯\n", "4564528 NA NA POLYGON ((-0.0958142 50.820... ⋯\n", "4796362 RH15 0EG NA POLYGON ((-0.1259993 50.950... ⋯\n", "22767691 BN27 4LG NA POLYGON ((0.3223906 50.8892... ⋯\n", "23003318 NA NA POLYGON ((-0.4829187 50.813... ⋯\n", "23261552 BN21 2XR NA POLYGON ((0.2611432 50.7898... ⋯\n", "25772335 BN2 7FR NA POLYGON ((-0.067842 50.8190... ⋯\n", " start_date surface toilets.wheelchair\n", "4564528 NA NA NA \n", "4796362 NA NA NA \n", "22767691 NA NA NA \n", "23003318 NA NA NA \n", "23261552 NA NA NA \n", "25772335 NA NA NA \n", " website wheelchair wikidata \n", "4564528 NA NA NA \n", "4796362 NA NA NA \n", "22767691 https://www.herstmonceux.e-sussex.sch.uk/ NA Q66223920\n", "23003318 NA NA NA \n", "23261552 http://www.ratton.e-sussex.sch.uk NA Q7296036 \n", "25772335 http://www.longhill.org.uk/ NA Q6673876 \n", " wikipedia geometry lon lat \n", "4564528 NA POLYGON ((-0.0958142 50.820... -0.09774609 50.81997\n", "4796362 NA POLYGON ((-0.1259993 50.950... -0.12438086 50.95140\n", "22767691 NA POLYGON ((0.3223906 50.8892... 0.32290302 50.88901\n", "23003318 NA POLYGON ((-0.4829187 50.813... -0.48161284 50.81270\n", "23261552 en:Ratton School POLYGON ((0.2611432 50.7898... 0.25971056 50.79073\n", "25772335 NA POLYGON ((-0.067842 50.8190... -0.06654489 50.81820" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Extent of the data for Brighton\n", "# (minx, miny, maxx, maxy)\n", "bounds = c(-0.49975, 50.73, 0.3469234, 50.98)\n", "\n", "# Retrieve schools from OSM\n", "schools = opq(bbox = bounds) |>\n", " add_osm_feature(key = \"amenity\", value=\"school\") |>\n", " osmdata_sf()\n", "\n", "# Keep only `osm_polygons` object from the result\n", "schools = schools$osm_polygons\n", "\n", "# Rename 'osm_id' to 'id' \n", "schools = rename(schools, id=osm_id)\n", "\n", "# Extract the lat and lon coordinates of the Polygon centroids\n", "schools[c(\"lon\", \"lat\")] = st_coordinates(st_centroid(schools))\n", "head(schools)" ] }, { "cell_type": "code", "execution_count": 24, "id": "188d1a3d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\t\n", "\t\t\n", "\t\t\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\t\n", "\t\t
\n", "\n", "\t\n", "\n" ], "text/plain": [ "HTML widgets cannot be represented in plain text (need html)" ] }, "metadata": { "text/html": { "isolated": true } }, "output_type": "display_data" } ], "source": [ "# Plot the data\n", "m <- leaflet(schools) %>%\n", " addTiles() %>%\n", " addCircles(lng = ~lon, lat = ~lat, radius=20, col=\"blue\")\n", "m" ] }, { "cell_type": "markdown", "id": "86414524", "metadata": {}, "source": [ "As a last thing, we need to convert the `sf` object into a regular `data.frame`, which we can do by dropping the `geometry` column:" ] }, { "cell_type": "code", "execution_count": 25, "id": "28d4bf45", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'data.frame'" ], "text/latex": [ "'data.frame'" ], "text/markdown": [ "'data.frame'" ], "text/plain": [ "[1] \"data.frame\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "schools = schools %>% st_drop_geometry()\n", "class(schools)" ] }, { "cell_type": "markdown", "id": "e2b00523", "metadata": {}, "source": [ "- Next, we can initialize our travel time matrix calculator using the libraries as the origins:" ] }, { "cell_type": "code", "execution_count": 26, "id": "7f13e5d9", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Warning message in assign_points_input(destinations, \"destinations\"):\n", "“'destinations$id' forcefully cast to character.”\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.table: 6 × 3
from_idto_idtravel_time_p50
<chr><chr><int>
456452810559119
456452810579119
456452810584119
456452810602119
456452810603119
456452810604118
\n" ], "text/latex": [ "A data.table: 6 × 3\n", "\\begin{tabular}{lll}\n", " from\\_id & to\\_id & travel\\_time\\_p50\\\\\n", " & & \\\\\n", "\\hline\n", "\t 4564528 & 10559 & 119\\\\\n", "\t 4564528 & 10579 & 119\\\\\n", "\t 4564528 & 10584 & 119\\\\\n", "\t 4564528 & 10602 & 119\\\\\n", "\t 4564528 & 10603 & 119\\\\\n", "\t 4564528 & 10604 & 118\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.table: 6 × 3\n", "\n", "| from_id <chr> | to_id <chr> | travel_time_p50 <int> |\n", "|---|---|---|\n", "| 4564528 | 10559 | 119 |\n", "| 4564528 | 10579 | 119 |\n", "| 4564528 | 10584 | 119 |\n", "| 4564528 | 10602 | 119 |\n", "| 4564528 | 10603 | 119 |\n", "| 4564528 | 10604 | 118 |\n", "\n" ], "text/plain": [ " from_id to_id travel_time_p50\n", "1 4564528 10559 119 \n", "2 4564528 10579 119 \n", "3 4564528 10584 119 \n", "4 4564528 10602 119 \n", "5 4564528 10603 119 \n", "6 4564528 10604 118 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Set parameters\n", "mode = c(\"WALK\", \"TRANSIT\")\n", "max_walk_time = 30 # minutes\n", "max_trip_duration = 120 # minutes\n", "departure_datetime = as.POSIXct(\"01-12-2022 8:30:00\",\n", " format = \"%d-%m-%Y %H:%M:%S\")\n", "\n", "# Calculate the travel time matrix by Transit\n", "ttm = travel_time_matrix(r5r_core = r5r_core,\n", " origins = schools,\n", " destinations = pop_points,\n", " mode = mode,\n", " departure_datetime = departure_datetime,\n", " max_walk_time = max_walk_time,\n", " max_trip_duration = max_trip_duration)\n", "\n", "head(ttm)" ] }, { "cell_type": "code", "execution_count": 27, "id": "fb145808", "metadata": {}, "outputs": [ { "data": { "text/html": [ "2095545" ], "text/latex": [ "2095545" ], "text/markdown": [ "2095545" ], "text/plain": [ "[1] 2095545" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many rows do we have?\n", "nrow(ttm)" ] }, { "cell_type": "markdown", "id": "2464cc4d", "metadata": {}, "source": [ "- As we can see, there are more than 2 million rows of data, which comes as a result of all connections between origins and destinations. Next, we want aggregate the data and keep only travel time information to the closest school: " ] }, { "cell_type": "code", "execution_count": 28, "id": "c4f389f2", "metadata": {}, "outputs": [], "source": [ "# Find out the travel time to closest school\n", "closest = aggregate(ttm$travel_time_p50, by=list(ttm$to_id), FUN=min, na.rm=TRUE)" ] }, { "cell_type": "code", "execution_count": 29, "id": "79714309", "metadata": {}, "outputs": [ { "data": { "text/html": [ "'data.frame'" ], "text/latex": [ "'data.frame'" ], "text/markdown": [ "'data.frame'" ], "text/plain": [ "[1] \"data.frame\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Rename columns\n", "closest = closest %>% rename(time=x, id=Group.1) \n", "class(closest)" ] }, { "cell_type": "code", "execution_count": 30, "id": "28a5cce5", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 2
idtime
<chr><int>
110 4
2100 3
31000021
41000119
51000216
61000315
\n" ], "text/latex": [ "A data.frame: 6 × 2\n", "\\begin{tabular}{r|ll}\n", " & id & time\\\\\n", " & & \\\\\n", "\\hline\n", "\t1 & 10 & 4\\\\\n", "\t2 & 100 & 3\\\\\n", "\t3 & 10000 & 21\\\\\n", "\t4 & 10001 & 19\\\\\n", "\t5 & 10002 & 16\\\\\n", "\t6 & 10003 & 15\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 2\n", "\n", "| | id <chr> | time <int> |\n", "|---|---|---|\n", "| 1 | 10 | 4 |\n", "| 2 | 100 | 3 |\n", "| 3 | 10000 | 21 |\n", "| 4 | 10001 | 19 |\n", "| 5 | 10002 | 16 |\n", "| 6 | 10003 | 15 |\n", "\n" ], "text/plain": [ " id time\n", "1 10 4 \n", "2 100 3 \n", "3 10000 21 \n", "4 10001 19 \n", "5 10002 16 \n", "6 10003 15 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "head(closest)" ] }, { "cell_type": "code", "execution_count": 31, "id": "7fa3577c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A data.frame: 6 × 2
idtime
<int><int>
1 10 4
2 100 3
31000021
41000119
51000216
61000315
\n" ], "text/latex": [ "A data.frame: 6 × 2\n", "\\begin{tabular}{r|ll}\n", " & id & time\\\\\n", " & & \\\\\n", "\\hline\n", "\t1 & 10 & 4\\\\\n", "\t2 & 100 & 3\\\\\n", "\t3 & 10000 & 21\\\\\n", "\t4 & 10001 & 19\\\\\n", "\t5 & 10002 & 16\\\\\n", "\t6 & 10003 & 15\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A data.frame: 6 × 2\n", "\n", "| | id <int> | time <int> |\n", "|---|---|---|\n", "| 1 | 10 | 4 |\n", "| 2 | 100 | 3 |\n", "| 3 | 10000 | 21 |\n", "| 4 | 10001 | 19 |\n", "| 5 | 10002 | 16 |\n", "| 6 | 10003 | 15 |\n", "\n" ], "text/plain": [ " id time\n", "1 10 4 \n", "2 100 3 \n", "3 10000 21 \n", "4 10001 19 \n", "5 10002 16 \n", "6 10003 15 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Convert 'to_id' back to integer which is needed for the join\n", "closest[\"id\"] = as.integer(closest$id)\n", "head(closest)" ] }, { "cell_type": "markdown", "id": "d1d26d29", "metadata": {}, "source": [ "Then we can make a table join with the grid in a similar manner as previously and visualize the data:" ] }, { "cell_type": "code", "execution_count": 32, "id": "01c31d32", "metadata": {}, "outputs": [ { "data": { "application/geo+json": { "features": [ { "geometry": { "coordinates": [ -0.4992, 50.9667 ], "type": "Point" }, "properties": { "id": 5, "population": 2.6376, "time": 11, "x": -0.4992, "y": 50.9667 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9658 ], "type": "Point" }, "properties": { "id": 6, "population": 2.5881, "time": 10, "x": -0.4992, "y": 50.9658 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.965 ], "type": "Point" }, "properties": { "id": 7, "population": 2.53, "time": 9, "x": -0.4992, "y": 50.965 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9642 ], "type": "Point" }, "properties": { "id": 8, "population": 4.3088, "time": 8, "x": -0.4992, "y": 50.9642 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9633 ], "type": "Point" }, "properties": { "id": 9, "population": 7.5685, "time": 6, "x": -0.4992, "y": 50.9633 }, "type": "Feature" }, { "geometry": { "coordinates": [ -0.4992, 50.9625 ], "type": "Point" }, "properties": { "id": 10, "population": 5.1561, "time": 4, "x": -0.4992, "y": 50.9625 }, "type": "Feature" } ], "type": "FeatureCollection" }, "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
A sf: 6 × 6
xypopulationidgeomtime
<dbl><dbl><dbl><dbl><POINT [°]><int>
-0.499166650.966672.637614 5POINT (-0.4991666 50.96667)11
-0.499166650.965832.588078 6POINT (-0.4991666 50.96583)10
-0.499166650.965002.529992 7POINT (-0.4991666 50.965) 9
-0.499166650.964174.308811 8POINT (-0.4991666 50.96417) 8
-0.499166650.963337.568533 9POINT (-0.4991666 50.96333) 6
-0.499166650.962505.15605410POINT (-0.4991666 50.9625) 4
\n" ], "text/latex": [ "A sf: 6 × 6\n", "\\begin{tabular}{llllll}\n", " x & y & population & id & geom & time\\\\\n", " & & & & & \\\\\n", "\\hline\n", "\t -0.4991666 & 50.96667 & 2.637614 & 5 & POINT (-0.4991666 50.96667) & 11\\\\\n", "\t -0.4991666 & 50.96583 & 2.588078 & 6 & POINT (-0.4991666 50.96583) & 10\\\\\n", "\t -0.4991666 & 50.96500 & 2.529992 & 7 & POINT (-0.4991666 50.965) & 9\\\\\n", "\t -0.4991666 & 50.96417 & 4.308811 & 8 & POINT (-0.4991666 50.96417) & 8\\\\\n", "\t -0.4991666 & 50.96333 & 7.568533 & 9 & POINT (-0.4991666 50.96333) & 6\\\\\n", "\t -0.4991666 & 50.96250 & 5.156054 & 10 & POINT (-0.4991666 50.9625) & 4\\\\\n", "\\end{tabular}\n" ], "text/markdown": [ "\n", "A sf: 6 × 6\n", "\n", "| x <dbl> | y <dbl> | population <dbl> | id <dbl> | geom <POINT [°]> | time <int> |\n", "|---|---|---|---|---|---|\n", "| -0.4991666 | 50.96667 | 2.637614 | 5 | POINT (-0.4991666 50.96667) | 11 |\n", "| -0.4991666 | 50.96583 | 2.588078 | 6 | POINT (-0.4991666 50.96583) | 10 |\n", "| -0.4991666 | 50.96500 | 2.529992 | 7 | POINT (-0.4991666 50.965) | 9 |\n", "| -0.4991666 | 50.96417 | 4.308811 | 8 | POINT (-0.4991666 50.96417) | 8 |\n", "| -0.4991666 | 50.96333 | 7.568533 | 9 | POINT (-0.4991666 50.96333) | 6 |\n", "| -0.4991666 | 50.96250 | 5.156054 | 10 | POINT (-0.4991666 50.9625) | 4 |\n", "\n" ], "text/plain": [ " x y population id geom time\n", "1 -0.4991666 50.96667 2.637614 5 POINT (-0.4991666 50.96667) 11 \n", "2 -0.4991666 50.96583 2.588078 6 POINT (-0.4991666 50.96583) 10 \n", "3 -0.4991666 50.96500 2.529992 7 POINT (-0.4991666 50.965) 9 \n", "4 -0.4991666 50.96417 4.308811 8 POINT (-0.4991666 50.96417) 8 \n", "5 -0.4991666 50.96333 7.568533 9 POINT (-0.4991666 50.96333) 6 \n", "6 -0.4991666 50.96250 5.156054 10 POINT (-0.4991666 50.9625) 4 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make inner join - the key in left is 'id' and in right 'to_id'\n", "geo = inner_join(pop_points, closest, by=\"id\")\n", "head(geo)" ] }, { "cell_type": "code", "execution_count": 33, "id": "3e29dc8c", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAIAAAByhViMAAAACXBIWXMAABJ0AAASdAHeZh94\nAAAgAElEQVR4nOyde5xdVXn31xmoySgYamKE5CRgyVCbUd8il0zFy8aqEyvBthK1Vd9WIijv\nWOStYL0gMbZeqxSxU7UQegF8VUSpocDYqtsbjgq2Ume8DFIMQ0ATgTHYSbjMef9Yc9Y8Z932\n2ve11/l9P/NJ9pzZZ+919ll7rd9+1nNpdTodBgAAAAAAms9A3Q0AAAAAAADFAGEHAAAAABAI\nEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYA\nAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAA\nAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEA\nYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcA\nAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAA\nEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQ\ndgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAA\nAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAA\ngQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBh\nBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAA\nAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQ\nCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2\nAAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAA\nAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACB\nAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEH\nAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAA\nABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAI\nEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYA\nAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAA\nAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEA\nYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcA\nAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAA\nEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQ\ndgAAAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAA\nAAAAgQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAA\ngQBhBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBh\nBwAAAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAA\nAAAQCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQ\nCBB2AAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2\nAAAAAACBAGEHAAAAABAIEHYAAAAAAIEAYQcAAAAAEAgQdgAAAAAAgQBhBwAAAAAQCBB2AAAA\n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\nAABIgmAHAAAgCYIdAACAJAh2AAAAkiDYAQAASIJgBwAAIAmCHQAAgCQIdgAAAJIg2AEAAEiC\nYAcAACAJgh0AAIAkCHYAAACSINgBAABIgmAHAAAgCYIdAACAJAh2AAAAkiDYAQAASIJgBwAA\nIAmCHQAAgCQIdgAAAJIg2AEAAEiCYAcAACAJgh0AAIAkCHYAAACSINgBAABIgmAHAAAgCYId\nAACAJAh2AAAAkiDYAQAASIJgBwAAIAmCHQAAgCQIdgAAAJIg2AEAAEiCYAcAACAJgh0AAIAk\nCHYAAACSINgBAABIgmAHAAAgCYIdAACAJAh2AAAAkiDYAQAASIJgBwAAIAmCHQAAgCQIdgAA\nAJIg2AEAAEiCYAcAACAJgh0AAIAkCHYAAACSINgBAABIgmAHAAAgCYIdAACAJAh2AAAAkiDY\nAQAASIJgBwAAIAmCHQAAgCQIdgAAAJIg2AEAAEiCYAcAACAJgh0AAIAkCHYAAACSINgBAABI\ngmAHAAAgCYIdAACAJAh2AAAAkiDYAQAASIJgBwAAIAmCHQAAgCQIdgAAAJIg2AEAAEiCYAcA\nACAJgh0AAIAkCHYAAACSINgBAABIgmAHAAAgCYIdAACAJAh2AAAAkiDYAQAASIJgBwAAIAmC\nHQAAgCQIdgAAAJIg2AEAAEiCYAcAACAJgh0AAIAkCHYAAACSINgBAABIgmAHAAAgCYIdAACA\nJAh2AAAAkiDYAQAASIJgBwAAIAmCHQAAgCQIdgAAAJIg2AEAAEiCYAcAACAJgh0AAIAkCHYA\nAACSINgBAABIgmAHAAAgCYIdAACAJAh2AAAAkiDYAQAASIJgBwAAIAmCHQAAgCQIdgAAAJIg\n2AEAAEiCYAcAACAJgh0AAIAkCHYAAACSINgBAABIgmAHAAAgCYIdAACAJAh2AAAAkiDYAQAA\nSIJgBwAAIAmCHQAAgCQIdgAAAJIg2AEAAEiCYAcAACAJgh0AAIAkCHYAAACSINgBAABIgmAH\nAAAgCYIdAACAJAh2AAAAkiDYAQAASIJgBwAAIAmCHQAAgCQIdgAAAJIg2AEAAEiCYAcAACAJ\ngh0AAIAkCHYAAACSINgBAABIgmAHAAAgCYIdAACAJAh2AAAAkiDYAQAASIJgBwAAIAmCHQAA\ngCQIdgAAAJIg2AEAAEiCYAcAACAJgh0AAIAkCHYAAACSINgBAABIgmAHAAAgCYIdAACAJP4f\nbywZxdWIHvAAAAAASUVORK5CYII=", "text/plain": [ "plot without title" ] }, "metadata": { "image/png": { "height": 420, "width": 420 } }, "output_type": "display_data" } ], "source": [ "# Plot the travel times which are classified into 10 classes \n", "tm_shape(geo) + tm_symbols(col=\"time\", size=0.05, border.lwd=0, style=\"pretty\", n=10, palette=\"RdYlBu\") " ] }, { "cell_type": "markdown", "id": "b11e3939", "metadata": {}, "source": [ "That's it! As you can, see now we have a nice map showing the catchment areas for each school." ] } ], "metadata": { "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "4.2.2" } }, "nbformat": 4, "nbformat_minor": 5 }