Skip to main content

Create beautiful maps from OpenStreetMap data

Project description

prettymapp 🖼️

Prettymapp is a webapp and Python package to create beautiful maps from OpenStreetMap data


🎈 Try it out here: prettymapp on streamlit 🎈



Based on the prettymaps project

Prettymapp is based on a rewrite of the fantastic prettymaps project by @marceloprates. All credit for the original idea, designs and implementation go to him. The prettymapp rewrite focuses on speed and adapted configuration to interface with the webapp. It drops more complex configuration options in favour of improved speed, reduced code complexity and simplified configuration interfaces. It is partially tested and adds a streamlit webapp component.

Running the app locally

You can use the webapp directly under prettymapp.streamlit.app or run it locally via:

git clone https://github.com/chrieke/prettymapp.git
cd prettymapp
uv sync --extra streamlit
uv run streamlit run streamlit-prettymapp/app.py

Python package

You can also use prettymapp without the webapp, directly in Python. This lets you customize the functionality or build your own application.

Installation:

pip install prettymapp

Define the area, download and plot the OSM data:

You can select from 4 predefined styles: Peach, Auburn, Citrus and Flannel.

from prettymapp.geo import get_aoi
from prettymapp.osm import get_osm_geometries
from prettymapp.plotting import Plot
from prettymapp.settings import STYLES

aoi = get_aoi(address="Praça Ferreira do Amaral, Macau", radius=1100, rectangular=False)
df = get_osm_geometries(aoi=aoi)

fig = Plot(
    df=df,
    aoi_bounds=aoi.bounds,
    draw_settings=STYLES["Peach"],
).plot_all()

fig.savefig("map.jpg")

You can also plot exported OSM XML files e.g. from openstreetmap.org:

from prettymapp.osm import get_osm_geometries_from_xml

df = get_osm_geometries_from_xml(filepath="Berlin.osm")
aoi_bounds = df.total_bounds
...

Customize styles & layers

Edit the draw_settings input to create your own custom styles! The map layout can be further customized with the additional arguments of the Plot class (e.g. shape, contour_width etc.). Check the webapp examples for inspiration.

from prettymapp.settings import STYLES

custom_style = STYLES["Peach"].copy()
custom_style["urban"] = {
    "cmap": ["#3452eb"],
    "ec": "#E9724C",
    "lw": 0.2,
    "zorder": 4,
}

fig = Plot(
    df=df,
    aoi_bounds=aoi.bounds,
    draw_settings=custom_style,
    shape="circle",
    contour_width=0,
).plot_all()

You can also customize the selection of OSM landcover classes that should be displayed! Customize the default settings or create your own dictionary! See settings.py for the defaults.

from prettymapp.settings import LANDCOVER_CLASSES

custom_lc_classes = LANDCOVER_CLASSES.copy()
custom_lc_classes["urban"]["building"] = False # drops all building subclasses
custom_lc_classes["grassland"]["leisure"] = True # Include all leisure subclasses
custom_lc_classes["grassland"]["natural"] = ["island"] # Selects only specific natural subclasses

df = get_osm_geometries(aoi=aoi, landcover_classes=custom_lc_classes)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prettymapp-0.6.0.tar.gz (54.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prettymapp-0.6.0-py3-none-any.whl (53.9 kB view details)

Uploaded Python 3

File details

Details for the file prettymapp-0.6.0.tar.gz.

File metadata

  • Download URL: prettymapp-0.6.0.tar.gz
  • Upload date:
  • Size: 54.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.8

File hashes

Hashes for prettymapp-0.6.0.tar.gz
Algorithm Hash digest
SHA256 49140de0fc702c8a8739e864b7970f07a038a8a023b73436b9872e7c787c004c
MD5 781355692c3ed9c71680d430223863bf
BLAKE2b-256 884e20fdb76979fec93d46d2a7f9a64158fe3aff1462a9be16a2d2f157493b00

See more details on using hashes here.

File details

Details for the file prettymapp-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: prettymapp-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 53.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.8

File hashes

Hashes for prettymapp-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14bfa94a3fb86c143d03d862d621b3b9856b7d69423d446372a7405ee5af1e3f
MD5 d2c60384d79cf82c8c2191618b960619
BLAKE2b-256 41073e5525acda4a461cfddf9d09e4c07dc0dcdfb8fd5def75fb48be60b9fadc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page