Creating maps from OpenStreetMap data can be complex and time-consuming
due to varying design syntax and the challenge of producing visually
appealing, print-ready maps. Overlaying additional information layers
while maintaining cartographic aesthetics also requires a deep
understanding of spatial data. cartographr
addresses these issues by
providing a lightweight, user-friendly interface between osmdata
and
ggplot2
, streamlining the map-making process and allowing users to
focus on the narrative of their maps. It simplifies the transformation
of geospatial data using simple features (sf
) geometries into
informative, high-quality visualizations, enhancing the dissemination of
spatial information. Ideal for urban planning, environmental studies, or
public presentations, cartographr
aims to make map creation
straightforward and effective.
Simply install from github.
# Install the latest version from github
devtools::install_github("da-wi/cartographr")
# Alternatively, install from CRAN
install.packages("cartographr")
Begin by determining the central point of your map using the
WGS84
coordinates. For our example, we’ll use Vienna’s center with a latitude
of 48.210
and a longitude of 16.370
. You can easily find these
coordinates online.
Decide on the size of the printed map, such as A4. This will help scale the text and lines on the map proportionally, no matter the print size.
set_output_size(c(300,300))
Use the get_osmdata()
function to collect OpenStreetMap data. Set the
width of your map area in meters using the x_distance
parameter. If
you leave out the height (y_distance
), it will be calculated based on
the width and the aspect ratio of your chosen output size.
osm <- get_osmdata(48.210, 16.370, x_distance = 1200)
The osm
variable now contains all the geometric shapes (like
buildings, rivers, parks) that will appear on your map. Generate the map
with plot_map()
and customize its look with themes and color palettes.
For instance, create an infomap of Vienna using theme_infomap()
and
choose a color scheme (see get_palette()
).
plot_vienna <- osm |> plot_map(palette = "serene") +
theme_infomap() +
ggplot2::labs(title = "VIENNA")
To view your map, simply call
plot_vienna
Finally, save your map as a PDF file, ready for printing.
save_map(plot = plot_vienna, filename="vienna.pdf")
Several color palettes are provided by the package, however, you can
easily create and use your own palette (see get_palette()
).
hamburg <- get_osmdata(lat = 53.545, lon = 10.000, x_distance = 1200)
df_pal <- tibble (palettes= c("alphabet", "arctic","autumn", "bw",
"evening", "gray", "iberia", "imhof","lines","midnight",
"minimal","metropolitan","serene","swiss","tropical"),
hamburg = list(hamburg)) |>
rowwise() |>
mutate(p = list(hamburg |> plot_map(palettes) + theme_infomap() + labs(title = palettes)))
All data that you access using cartographr
and, in consequence,
osmdata
is licensed under OpenStreetMap’s license, the
Open Database
Licence. Any derived data and products must also carry the same
licence. You should make sure you understand that licence before
publishing any derived datasets.
If you encounter a clear bug, please file an issue with a minimal reproducible example on GitHub.
The development of this project drew inspiration from the prettymaps project.