The goal of osmtaggingr is to provide reproducible datasets containing information about OpenStreetMap’s tagging proposals. It does so by querying and webscrapping OSM’s wiki via helper functions.
The package contains the following datasets, as well as associated metadata and functions to recreate them:
-
proposals: A data frame with 2115 rows and 30 columns, containing all Approved, Rejected and Proposed tagging proposals from the OSM Wiki, as well as their associated metadata (run?proposalsto see its metadata). -
proposals_votes: A data frame with 8487 rows and 4 columns, containing all the votes cast for every tagging proposal inproposals, generated byget_proposals_votes()(run?proposals_votesto see its metadata).
Acknowledgements
This is an output of the research project “Can digital goods be neutral? Evaluating OpenStreetMap’s equity through participatory data visualisation” led by Carlos Cámara-Menoyo and Timothy Monteath and funded by the ESRC Digital Good Network through their Digital Good Research Fund 2024-25.
Citing
You are free to use and reuse this tool under the licence conditions.
If you use this package in your work, please cite it as below:
Cámara-Menoyo C, Monteath T (2026). OSMtaggingR: Reproducible Datasets about OpenStreetMap’s tagging. R package version 0.0.0.9000, https://github.com/WarwickCIM/OSMtaggingR.
Installation
You can install the development version of osmtaggingr from GitHub with:
# install.packages("devtools")
devtools::install_github("warwickcim/osmtaggingr")Example
This is a basic example which shows you how to solve a common problem:
library(osmtaggingr)
# Load the built in datasets.
data(proposals)
data(proposals_votes)
# Converting to tibble for better representation.
proposals <- tibble::as_tibble(proposals)
# Explore the dataset.
head(proposals)
#> # A tibble: 6 × 30
#> status title sortkeyprefix timestamp pagelanguage
#> <chr> <chr> <chr> <dttm> <fct>
#> 1 Rejected Proposal:Electricity "\"electrici… 2022-03-15 02:38:02 en
#> 2 Rejected Proposal:Motorcycle f… "\"tag motor… 2022-03-14 20:31:57 en
#> 3 Rejected Proposal:Tramtrack on… "\"Tramtrack… 2022-03-15 03:40:16 en
#> 4 Rejected Proposal:Amenity=loun… "Amenity=lou… 2024-10-30 16:40:54 en
#> 5 Rejected Proposal:Aquatics cen… "Aquatics ce… 2022-03-14 15:18:12 en
#> 6 Rejected Proposal:Artwork type… "artwork typ… 2022-03-15 22:24:41 en
#> # ℹ 25 more variables: touched <dttm>, length <int>, fullurl <chr>,
#> # editurl <chr>, pageid <int>, page_creator <fct>,
#> # date_of_page_creation <dttm>, latest_editor <fct>,
#> # date_of_latest_edit <dttm>, total_number_of_edits <dbl>,
#> # total_number_of_distinct_authors <dbl>, proposal_status <fct>,
#> # proposed_by <fct>, tagging <chr>, applies_to_node <lgl>,
#> # applies_to_way <lgl>, applies_to_area <lgl>, applies_to_relation <lgl>, …
colnames(proposals)
#> [1] "status" "title"
#> [3] "sortkeyprefix" "timestamp"
#> [5] "pagelanguage" "touched"
#> [7] "length" "fullurl"
#> [9] "editurl" "pageid"
#> [11] "page_creator" "date_of_page_creation"
#> [13] "latest_editor" "date_of_latest_edit"
#> [15] "total_number_of_edits" "total_number_of_distinct_authors"
#> [17] "proposal_status" "proposed_by"
#> [19] "tagging" "applies_to_node"
#> [21] "applies_to_way" "applies_to_area"
#> [23] "applies_to_relation" "definition"
#> [25] "statistics" "rendered_as"
#> [27] "draft_started" "rfc_start"
#> [29] "vote_start" "vote_end"
# Check the dataset's metadata
?proposals