A simple python library to draw pretty maps from OpenStreetMap data
Project description
prettymaps
A minimal Python library to draw customized maps from OpenStreetMap data.
Based on osmnx, matplotlib, shapely and vsketch libraries.
Important:
- I've made the
plot
function print by default a message in the corner containing the mandatory OpenStreetMap credit and the link to this repository. Please keep it. - You can make commercial use of
prettymaps
drawings, but I ask that you credit OpenStreetMaps and myself. - Share your creations on the prettymaps subreddit
As seen on Hacker News:
Read the docs
Google Colaboratory Demo
Installation
Install with
$ pip install git+https://github.com/abey79/vsketch#egg=vsketch
$ pip install git+https://github.com/marceloprates/prettymaps.git
Usage example (For more examples, see this Jupyter Notebook):
# Init matplotlib figure
fig, ax = plt.subplots(figsize = (12, 12), constrained_layout = True)
backup = plot(
# Address:
'Praça Ferreira do Amaral, Macau',
# Plot geometries in a circle of radius:
radius = 1100,
# Matplotlib axis
ax = ax,
# Which OpenStreetMap layers to plot and their parameters:
layers = {
# Perimeter (in this case, a circle)
'perimeter': {},
# Streets and their widths
'streets': {
'width': {
'motorway': 5,
'trunk': 5,
'primary': 4.5,
'secondary': 4,
'tertiary': 3.5,
'residential': 3,
'service': 2,
'unclassified': 2,
'pedestrian': 2,
'footway': 1,
}
},
# Other layers:
# Specify a name (for example, 'building') and which OpenStreetMap tags to fetch
'building': {'tags': {'building': True, 'landuse': 'construction'}, 'union': False},
'water': {'tags': {'natural': ['water', 'bay']}},
'green': {'tags': {'landuse': 'grass', 'natural': ['island', 'wood'], 'leisure': 'park'}},
'forest': {'tags': {'landuse': 'forest'}},
'parking': {'tags': {'amenity': 'parking', 'highway': 'pedestrian', 'man_made': 'pier'}}
},
# drawing_kwargs:
# Reference a name previously defined in the 'layers' argument and specify matplotlib parameters to draw it
drawing_kwargs = {
'background': {'fc': '#F2F4CB', 'ec': '#dadbc1', 'hatch': 'ooo...', 'zorder': -1},
'perimeter': {'fc': '#F2F4CB', 'ec': '#dadbc1', 'lw': 0, 'hatch': 'ooo...', 'zorder': 0},
'green': {'fc': '#D0F1BF', 'ec': '#2F3737', 'lw': 1, 'zorder': 1},
'forest': {'fc': '#64B96A', 'ec': '#2F3737', 'lw': 1, 'zorder': 1},
'water': {'fc': '#a1e3ff', 'ec': '#2F3737', 'hatch': 'ooo...', 'hatch_c': '#85c9e6', 'lw': 1, 'zorder': 2},
'parking': {'fc': '#F2F4CB', 'ec': '#2F3737', 'lw': 1, 'zorder': 3},
'streets': {'fc': '#2F3737', 'ec': '#475657', 'alpha': 1, 'lw': 0, 'zorder': 3},
'building': {'palette': ['#FFC857', '#E9724C', '#C5283D'], 'ec': '#2F3737', 'lw': .5, 'zorder': 4},
}
)
Gallery:
Barcelona:
Heerhugowaard:
Barra da Tijuca:
Porto Alegre:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
prettymaps-0.1.2.tar.gz
(13.2 kB
view hashes)
Built Distribution
prettymaps-0.1.2-py3-none-any.whl
(13.4 kB
view hashes)
Close
Hashes for prettymaps-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d66ffeb3b18ba2c060d93f42bf3c28c927b9c67457fd1cf24ce1a5fb8a58d84a |
|
MD5 | c4b76639e70b3e41a92ec81e664121c8 |
|
BLAKE2b-256 | 074f0515eed2a7ec36bc3f2ec7011859ceea4efdc7103e62cc1e1452be32ef6c |