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
::install_github("da-wi/cartographr")
devtools
# 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.
<- get_osmdata(48.210, 16.370, x_distance = 1200) osm
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()
).
<- osm |> plot_map(palette = "serene") +
plot_vienna theme_infomap() +
::labs(title = "VIENNA") ggplot2
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()
).
<- get_osmdata(lat = 53.545, lon = 10.000, x_distance = 1200)
hamburg
<- tibble (palettes= c("alphabet", "arctic","autumn", "bw",
df_pal "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.