A minimal Python library to draw customized maps from OpenStreetMap created using the osmnx, matplotlib, shapely and vsketch libraries.
 
 
Go to file
Evan Smith d5db9865f4
Remove jupyter dependency
The jupyter package isn't used in the code so it can be removed, which also removes a lot of knock-on dependencies as well and makes it quicker to install the project :)
2021-08-30 18:06:23 +01:00
.devcontainer Add devcontainer 2021-08-26 17:14:27 +00:00
.github Create FUNDING.yml 2021-08-27 16:01:12 -03:00
assets/Permanent_Marker Updated 'setup cell' to avoid errors with missing .ttf and /prints folder for colab notebook 2021-08-25 22:46:27 -03:00
notebooks Style updates to the last two cells of examples notebook 2021-08-29 17:01:55 -03:00
prettymaps Added GeoDataFrame import to draw.py 2021-08-29 17:03:52 -03:00
prints Style updates to the last two cells of examples notebook 2021-08-29 17:01:55 -03:00
script Add devcontainer 2021-08-26 17:14:27 +00:00
.gitignore Add devcontainer 2021-08-26 17:14:27 +00:00
LICENSE Initial commit 2021-03-05 09:22:05 -03:00
README.md Update README.md 2021-08-29 13:41:20 -03:00
requirements.txt Remove jupyter dependency 2021-08-30 18:06:23 +01:00
setup.py exclude unneccesary folders 2021-08-28 22:11:23 +02:00

README.md

prettymaps

A minimal Python library to draw customized maps from OpenStreetMap data.

Based on osmnx, matplotlib, shapely and vsketch libraries.

Important:

Buy Me a Coffee at ko-fi.com

  • 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:

Google Colaboratory Demo

Open In Colab

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},
        }
)

Barcelona:

Heerhugowaard:

Barra da Tijuca:

Porto Alegre: