Skip to content

mpadge/gender-conscious-routing

Repository files navigation

R build status codecov Project Status: Concept

gender conscious routing

Routing along streets named after women rather than men.

A note on gender

Where possible, gender is identified through wikidata entries, which accommodate values of female, male, intersex, transgender female, and transgender male. Street names which are not associated in Open Street Map with wikidata entries are assigned genders using an internally-bundled library which presumes that gender is binary. Which it is not. This package and its developers neither endorse nor encourage viewing gender in binary terms. The library nevertheless allows gender associations in a very wide variety of languages, far more than any other equivalent library, and so allows the functionality of this package to be applied to far greater regions of the world that would other, non-binary alternatives. See the vignette for further detail on the gender encoding system used here.


Generating gender-conscious routes

The function conscious_route() calculates routes which preferentially traverse streets named after women. Usage requires downloading a street network, the simplest way of which is to use the dodgr package. It is good practice to save networks locally, to avoid having to repeat calls to the Open Street Map servers which deliver the data.

city <- "Aachen Germany"
net <- dodgr::dodgr_streetnet_sc (city)
saveRDS (net, "mynetwork.Rds")

The gender of all streets can then be appended to the network data with the gender_streetnet() function, which also accepts an additional parameter, wt_profile, used to specify the weighting profile from the profiles of the dodgr package.

library (genderconsciousrouting)
net <- gender_streetnet (dat, wt_profile = "foot")

Gender-conscious routes can then be generated by specifying start and end points. The following example selects random points from the network vertices.

v <- dodgr::dodgr_vertices (net)
set.seed (1)
start <- sample (v$id, size = 1L)
stop <- sample (v$id, size = 1L)

Those id values are the Open Street Map identifiers of two random vertices (or “nodes” in Open Street Map terms) of the network. Finally, the following code calculates the path between them which traverses the greatest proportional length along streets named after women:

conscious_route (net, start = start, stop = stop)
#> $p_stats
#>         d_female  d_male    d_non  p_female     p_male     p_non path_length path_length_rel
#> default    0.000 190.454 8277.046 0.0000000 0.02249235 0.9775076     8467.50        1.000000
#> female  1826.583 335.371 8083.941 0.1782746 0.03273223 0.7889932    10245.89        1.210026
#>
#> $paths
#>      type                       geometry
#> 1 default LINESTRING (6.166698 50.812...
#> 2  female LINESTRING (6.166698 50.812...
# n>
#> $points
#>               x        y    colour
#> 25722  6.166698 50.81288 #44FF22FF
#> 137140 6.020574 50.75566 #FF4422FF

The function returns a list of the following three items:

  1. p_stats providing statistics on absolute and relative distances along the types of ways (where “non” suffixes denote ways not named after people).
  2. paths providing the path geometries, both of the gender-conscious route, and the “default” route which does not follow gender conscious paths; and
  3. points with locations of the specified start and end points, along with colour codes which can be used to clearly indicate those points on interactive maps.

Aggregate statistics for a whole city

Aggregate analyses of statistics on the gender of street names can be seen in the EqualStreetNames project, which currently provides interactive visualisations for 62 cities around the world. The results are, however, static, and only quantify overall proportions regardless of where streets are located. Many cities consciously name central avenues or boulevards after men, while streets named after women may be placed in peripheral locations rarely traversed by the general population. A more appropriate way to quantify statistics on relative gender proportions is to weight gendered streets by their importance within the spatially-explicit context of the entire street network. The most direct way to do that is to weight each gender-specific street segment by its corresponding network centrality, so that central segments traversed by large numbers of people contribute more than peripheral segments. The genderconsciousrouting package has an additional function which performs these analyses for a given city.

The function works by tracing routes between randomly sampled points in a network, with a default to calculate all possible paths between all pairs of vertices in the street network. This function takes considerably more time to calculate than the simple route function demonstrated above, and it is recommended to first specify a value for the number of sampled points of around 1,000. The time taken can then be scaled by the default total number of points, which is equal to nrow(dodgr_vertices(net)), to estimate how long a full calculation might take.

dat <- gcr_city (net, n = 1000)
▶ Contracting street network ...
✔ Contracted street network
▶ Calculating routes (1/2) ...
▶ Calculated routes (1/2)
✔ Calculating routes (2/2) ...
▶ Calculated routes (2/2)

print (dat)
#>    wt_profile           category  proportion
#> 1        foot          IS_FEMALE 0.003105508
#> 2        foot            IS_MALE 0.021219084
#> 3        foot         NOT_A_NAME 0.975675408
#> 4        foot          IS_A_NAME 0.024324592
#> 5        foot      IS_FEMALE_RAW 0.005513113
#> 6        foot        IS_MALE_RAW 0.021046446
#> 7        foot     NOT_A_NAME_RAW 0.973440441
#> 8        foot      IS_A_NAME_RAW 0.026559559
#> 9        foot         pedestrian 0.477930169
#> 10       foot     vehicular_foot 0.457210378
#> 11       foot     pedestrian_RAW 0.354288475
#> 12       foot vehicular_foot_RAW 0.584957718

The first 8 statistics (with capitalised values for category) are divided between “raw” and weighted statistics, where the former are simple aggregate proportions of the type presented in EqualStreetNames, while those without the _raw suffix are weighted by network centrality, such that more central streets contribute more.

The final four statistics quantify the proportions of journeys along dedicated infrastructure, and are primarily intended to quantify the relative prominence of dedicated pedestrian (for networks weighted using wt_profile = "foot") and bicycle (for networks weighted using wt_profile = "bicycle") infrastructure in cities. The network here was weighted for pedestrian ("foot") routing, and so vehicular_foot rows quantify the proportions of journeys or overall edge lengths (_RAW) for which pedestrian infrastructure travels directly beside vehicular ways, rather than on dedicated infrastructure.

About

Routing along streets named after women rather than men

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published