Skip to content

Repository files navigation

Spatial Analytics Project 2026: BENCH-marks For Care - Counter-Mapping Benches in Aarhus, Denmark

Overview

Project Description

This project investigates the structural and social accessibility of public benches in Aarhus municipality, Denmark, through the lens of hostile architecture and counter-mapping. Using bench data from OpenStreetMap and road traffic noise data from Miljøstyrelsen, benches are classified as hostile, non-hostile, or sleep-friendly on the basis of their design features and acoustic environment — with particular attention to their accessibility for people experiencing rough sleeping. A counter-map hosted on our ShinyApp is proposed as a proof-of-concept for making visible the spatial realities that conventional cartographic data leaves unrecorded. The project is developed as part of the Spatial Analytics course within the bachelor-level elective Cultural Data Science at Aarhus University.

Repository Structure

data/
  └── gadm/                               # where the Danish municipality data is stored upon its download in MAIN.rmd
  └── ringVejGade/                        # our Aarhus areas based on Ringvejen and Ringgaden
  └── benches_osm_municipality.rds        # bench data for Aarhus municipality
  └── benches_osm_ringgade.rds            # bench data for Aarhus area based on Ringgaden
  └── benches_osm_ringvej.rds             # bench data for Aarhus area based on Ringvejen
  └── gadm36_DNK_2_sp.rds                 # saved version of the Danish municipality data
  └── aarhus_night_streetNoise_municipality.gpkg    # the road noise pollution data downloaded and restricted to Aarhus municipality in Road_Noise_Pollution_Data_Download.RMD
  └── aarhus_night_streetNoise_ringgade.gpkg        # the road noise pollution data downloaded and restricted to Aarhus area based on Ringgaden in MAIN.rmd in Road_Noise_Pollution_Data_Download.RMD
  └── aarhus_night_streetNoise_ringvej.gpkg         # the road noise pollution data downloaded and restricted to Aarhus area based on Ringvejen in MAIN.rmd in Road_Noise_Pollution_Data_Download.RMD

out/
  └── afterNoise_benchClassification_municipality.csv       # distribution of classified benches (also based on road noise pollution); Aarhus municipality
  └── afterNoise_benchClassification_ringgade.csv           # distribution of classified benches (also based on road noise pollution); Aarhus area based on Ringgaden
  └── afterNoise_benchClassification_ringvej.csv            # distribution of classified benches (also based on road noise pollution); Aarhus area based on Ringvejen
  └── benchesVSnoisePollution_municipality.csv              # counts and proportions of benches subjected to above 50 dB Lnight road noise; Aarhus municipality
  └── benchesVSnoisePollution_ringgade.csv                  # counts and proportions of benches subjected to above 50 dB Lnight road noise; Aarhus area based on Ringgaden
  └── benchesVSnoisePollution_ringvej.csv                   # counts and proportions of benches subjected to above 50 dB Lnight road noise; Aarhus area based on Ringvejen
  └── initial_benchClassification_municipality.csv          # distribution of classified benches (before road noise pollution); Aarhus municipality
  └── initial_benchClassification_ringgade.csv              # distribution of classified benches (before road noise pollution); Aarhus area based on Ringgaden
  └── initial_benchClassification_ringvej.csv               # distribution of classified benches (before road noise pollution); Aarhus area based on Ringvejen

shinyApp/               # folder used to run the ShinyApp
  └── data/                 # copy of data/ in root, used for running the data_pipeline.r
  └── rsconnect/
  └── app.r                 # file used to run the ShinyApp
  └── app_data.rds          # data serialisation, i.e., saved R object for the ShinyApp data
  └── data_pipeline.r       # file used to prepare app_data.rds for the ShinyApp


MAIN.Rmd                                    # MAIN script
Road_Noise_Pollution_Data_Download.RMD      # not to be run; originally used for loading the road noise data

README.md
LICENSE.txt

Usage

Set the chooseBasemap variable in the second code chunk of MAIN.Rmd to select the spatial extent for the analysis:

chooseBasemap <- "municipality"  # options: "ringvej", "ringgade", "municipality"

This controls which basemap is used throughout — Aarhus municipality as a whole, or the smaller areas bounded by Aarhus ringvej or ringgade respectively.

The ShinyApp (our counter-map), titled BENCH-marks For Care, can be accessed via the following link, where Shiny-io is used to deploy our ShinyApp without needing to establish a new server: https://aiswarya.shinyapps.io/BenchmarksForCare/. Otherwise, running the ShinyApp requires running multiple files, within the BenchmarksForCare/ folder: (1) run data_pipeline.R, which loads and prepares all the data for the Shiny App (incl. classifications and voronoi diagrams). This is then saved to the app_data.rds file. (2) run app.R, which sets up the app and runs the application with the specified user interface.

N.B.: Unless you make changes to the data_pipeline.R script, the app_data.rds file may be used as is and app.R may be run directly. However, if issues do occur when running app.R, feel free to run data_pipeline.R, ensure the app_data.rds is saved in the appropriate location relative to your working directory, and restart the R session, before re-running app.R.

Data Preparation

Most data is downloaded or generated automatically on first run. However, note the following:

  • Noise pollution data (from Miljøstyrelsen via MiljøGIS) exceeds GitHub's file size limits and cannot be downloaded programmatically. Pre-processed versions clipped to each basemap are saved in data/ and loaded directly — the code originally used for downloading the data can be found in the Road_Noise_Pollution_Data_Download.RMD, but should not be run.
  • Output files (classification counts, noise proportion tables) are saved automatically to out/ during the run of MAIN.rmd.

All data uses the WGS84 (EPSG:4326) CRS; no manual CRS conversion is required on input. Voronoi analysis transforms to EPSG:25832 (UTM 32N) internally.

License

Shield: CC BY 4.0

This work is licensed under a Creative Commons Attribution 4.0 International License.

CC BY 4.0

Authors and Contact Details

Aiswarya Roy (202308450@post.au.dk) and Mie Norre Engemann (202309344@post.au.dk)
Cultural Data Science, Spatial Analytics - Spring 2026

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages