--- title: "osmapiR" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{osmapiR} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` osmapiR can fetch and edit all kinds data associated with the [OpenStreetMap](https://www.openstreetmap.org) project. This vignette shows samples of each data type and how to configure the connection to the servers. Most of the functions have a `format` argument that allows to modify the result to get the raw xml or a JSON list. By default, the results are data.frames. Check the documentation of each function for details. ## Setup ```{r setup} library(osmapiR) ``` For testing editions without breaking the OSM data, you can open and account and make calls to . ```r # set_osmapi_connection(server = "testing") # lacks data for the following examples ``` To modify the default user agent of the requests (``r getOption("osmapir.user_agent")``), set the option `osmapir.user_agent`: ```r options(osmapir.user_agent = "my new user agent") ``` ## Map objects ```{r osm objects} ## Download objects by bounding box osm_objs <- osm_bbox_objects( bbox = c(2.4166059, 42.5945594, 2.4176574, 42.5962101), tags_in_columns = TRUE ) ## View the history of an object sel <- osm_objs$`name:ca` %in% "Abadia de Sant Miquel de Cuixà" obj <- osm_objs[sel, ] obj_history <- osm_history_object( osm_type = obj$osm_type, osm_id = obj$osm_id, tags_in_columns = FALSE # tags in a list at column `tags` ) obj_history # obj_history$tags # tags in list format ``` Notice the different formats to represent the tags controlled by the `tags_in_columns` argument. In `osm_objs`, every tag is represented by a column in the data.frame (wide format), while in `obj_history` there is a `tag` column containing a list of data.frames with `key` and `value` columns (list format). See `?tags_list2wide()` for details. ## Changesets ```{r changesets} chsts <- osm_query_changesets( bbox = c(-1.241112, 38.0294955, 8.4203171, 42.9186456), user = "Mementomoristultus", time = "2023-06-22T02:23:23Z", time_2 = "2023-06-22T00:38:20Z" ) chsts osmchange <- osm_download_changeset(changeset_id = 137595351, format = "xml") osmchange # Osmchange file compatible with JOSM and others: # xml2::write_xml(osmchange, file = tempfile(fileext = ".osc")) ``` Similar to the map objects, changeset's data also have the tags as a list column that can be changed with `tags_in_columns` argument. ## Notes ```{r notes} notes <- osm_read_bbox_notes(bbox = "2.4166059,42.5945594,2.4176574,42.5962101", closed = -1) notes # notes$comments ``` ## GPX data ``` r ## Requires authentication usr_traces <- osm_list_gpxs() osm_get_gpx_metadata(gpx_id = 3790367) #> id name uid user visibility pending timestamp #> 1 3790367 Airoto_Marimanha.gpx 11725140 jmaspons public FALSE 2021-08-20 10:30:15 #> lat lon description tags #> 1 42.69660229794681 1.0419843904674053 Airoto Marimanha Oriental 1 camp, a, través pts <- osm_get_data_gpx(gpx_id = 3790367, format = "R") head(pts) #> lat lon ele time #> 1 42.69660229794681 1.0419843904674053 2190.199951171875 2021-08-12 09:52:18 #> 2 42.69662777893245 1.04197240434587 2189 2021-08-12 09:52:24 #> 3 42.69664118997753 1.041965363547206 2188.39990234375 2021-08-12 09:52:25 #> 4 42.69665057770908 1.0419651120901108 2187.800048828125 2021-08-12 09:52:26 #> 5 42.696685614064336 1.0419511143118143 2186.800048828125 2021-08-12 09:52:29 #> 6 42.69673557020724 1.0419355239719152 2187 2021-08-12 09:52:34 ``` ```{r gpx} gpx <- osm_get_points_gps(bbox = c(2.4166059, 42.5945594, 2.4176574, 42.5962101)) gpx ``` ## Users ```{r users} usrs <- osm_get_user_details(user_id = c(1, 24, 44, 45)) usrs ```