Skip to main content

Fork of staticmap, a small, python-based library for creating map images with lines and markers.

Project description

Static Map 3

Static Map 3 is a fork of Static Map, a small, python-based library for creating map images with lines and markers.
The main purpose of this fork is to fix error handling on tile requests, to allow interrupting the execution (see PR on the original repository).

Changes since the fork are detailed in CHANGELOG.md.

Example

from staticmap3 import StaticMap, Line

m = StaticMap(300, 400, 10)
m.add_line(Line(((13.4, 52.5), (2.3, 48.9)), 'blue', 3))
image = m.render()
image.save('map.png')

This will create a 300px x 400px map with a blue line drawn from Berlin to Paris.

Map with Line from Berlin to Paris

Installation

Static Map 3 is a small library, all it takes is python and three python packages: Pillow, requests and cachecontrol.

To install Static Map 3:

pip install git+https://github.com/SamR1/staticmap.git

To use Filecache as storage backend for cache:

pip install git+https://github.com/SamR1/staticmap.git@main#egg=staticmap3[filecache]

The default directory for cache is .staticmap_cache. It can be changed by exporting the environment variable STATICMAP_CACHE_DIR.

Usage

Create a new map instance:

m = StaticMap(width, height, padding_x, padding_y, url_template, tile_size)
parameter description
width width of the image in pixels
height height of the image in pixels
padding_x (optional) minimum distance in pixel between map features (lines, markers) and map border
padding_y (optional) minimum distance in pixel between map features (lines, markers) and map border
url_template (optional) the tile server URL for the map base layer, e.g. https://tile.openstreetmap.org/{z}/{x}/{y}.png
tile_size (optional) tile size in pixel, usually 256

Add a line:

line = Line(coordinates, color, width))
m.add_line(line)
parameter description
coordinate a sequence of lon/lat pairs
color a color definition Pillow supports
width the stroke width of the line in pixel
simplify whether to simplify coordinates, looks less shaky, default is true

Add a map circle marker:

marker = CircleMarker(coordinate, color, width))
m.add_marker(marker)
parameter description
coordinate a lon/lat pair: e.g. (120.1, 47.3)
color a color definition Pillow supports
width diameter of marker in pixel

Add a polygon:

polygon = Polygon(coordinates, fill_color, outline_color, simplify)
m.add_polygon(polygon)
parameter description
coordinate a lon/lat pair: e.g. [[9.628, 47.144], [9.531, 47.270], [9.468, 47.057], [9.623, 47.050], [9.628, 47.144]]
fill_color a color definition Pillow supports
outline_color a color definition Pillow supports
simplify whether to simplify coordinates, looks less shaky, default is true

Samples

Show Position on Map

from staticmap3 import StaticMap, CircleMarker

m = StaticMap(
    200, 200, url_template='https://tile.openstreetmap.org/{z}/{x}/{y}.png'
)

marker_outline = CircleMarker((10, 47), 'white', 18)
marker = CircleMarker((10, 47), '#0036FF', 12)

m.add_marker(marker_outline)
m.add_marker(marker)

image = m.render(zoom=5)
image.save('marker.png')

Position IconMarker on a Map

Show Ferry Connection

from staticmap3 import StaticMap, Line

m = StaticMap(200, 200, 80)

coordinates = [[12.422, 45.427], [13.749, 44.885]]
line_outline = Line(coordinates, 'white', 6)
line = Line(coordinates, '#D2322D', 4)

m.add_line(line_outline)
m.add_line(line)

image = m.render()
image.save('ferry.png')

Ferry Connection Shown on a Map

Show Icon Marker

from staticmap3 import StaticMap, IconMarker

m = StaticMap(240, 240, 80)
icon_flag = IconMarker(
    (6.63204, 45.85378), './samples/icon-flag.png', 12, 32
)
icon_factory = IconMarker(
    (6.6015, 45.8485), './samples/icon-factory.png', 18, 18
)
m.add_marker(icon_flag)
m.add_marker(icon_factory)
image = m.render()
image.save('icons.png')

Ferry Connection Shown on a Map

Alternatives

With papermap there is also a spin-off project dedicated to print maps.

Licence

Static Map 3 is open source and licensed under Apache License, Version 2.0

The map samples on this page are made with OSM data, © OpenStreetMap contributors

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

staticmap3-0.1.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

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

staticmap3-0.1.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file staticmap3-0.1.0.tar.gz.

File metadata

  • Download URL: staticmap3-0.1.0.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.3 Linux/6.12.28-1-MANJARO

File hashes

Hashes for staticmap3-0.1.0.tar.gz
Algorithm Hash digest
SHA256 310775444ec613baad856741b0fb6e126e96079f594dd08576ee7cbc33270db0
MD5 38a999c83ae382c33c7b8b703f10182e
BLAKE2b-256 d1584bfa9938dc77950e67007024a7c11f0a25778d754241b98e0e99f46618a0

See more details on using hashes here.

File details

Details for the file staticmap3-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: staticmap3-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.3 Linux/6.12.28-1-MANJARO

File hashes

Hashes for staticmap3-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 75e86a1a1aab18167d916176e3a96fa2ff61b619441d35dea4b1ec4f9990f7cd
MD5 8fca796ecdf5fd9eee958526649e61b0
BLAKE2b-256 ff5bcda8b6d30942809c748835bd4bf8568ace0ebfcf8438901bb7761f4cedf3

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