Skip to main content

lanestyle

lanestyle

Lane-level road maps from Python.
Every lane at its real width, painted lane lines, and a click that shows where a lane leads. One offline HTML file.

PyPI Tests Docs Python 3.10+ MIT

Documentation · Live map · Get started · Gallery · Python API


Monaco drawn by lanestyle: a bus lane in blue, dashed dividers, a turn label on every lane, a roundabout

Quick start

pip install lanestyle
import geopandas as gpd, pandas as pd
import lanestyle as ls

lanes = gpd.read_parquet("docs/data/monaco_lanes.parquet")   # Monaco ships with the repo
turns = pd.read_parquet("docs/data/monaco_turns.parquet")
ls.render_lanes(lanes, turns=turns).save("monaco.html")      # one file, opens offline

Your own area, from OpenStreetMap with duckOSM:

duckosm build --pbf monaco-latest.osm.pbf -o monaco.duckdb -m driving
duckosm gmns monaco.duckdb -m driving -o monaco_gmns.duckdb
lanes, turns = ls.from_gmns("monaco_gmns.duckdb")
ls.render_lanes(lanes, turns=turns).save("monaco.html")

What you get

  • Lanes, not roads. Each lane is its own line, exactly its width in metres from zoom 16 on, so neighbours sit side by side with no gap and no overlap.
  • Painted lane lines. Dashed dividers, a solid centre line, grey edges: drawn to scale and cut at junctions.
  • Turns you can see. Click a lane: it turns red, the lanes it leads into green, U-turns purple. Every lane carries its turn label.
  • Everything roadstyle has. Bridges over, tunnels under, base maps, the filter box, popups, arrows and the rs* JavaScript API, from roadstyle. lanestyle is to lanes what mapstyle is to the full base map.
Lane lines
Lane lines
A roundabout
A roundabout
A tunnel
A tunnel
Bus lanes
Bus lanes
Click a lane
Click a lane
Zoomed out
Zoomed out

What goes in

A GeoDataFrame with one row per lane. lane_id, geometry and highway are required; the rest switches features on: width_m, use (bus, bike), bridge / tunnel / layer, name, link_id + lane_num for the lane lines. An optional turns table (from_lane, to_lane, type) gives the clicks and labels. from_gmns builds both from a duckOSM GMNS database.

Column by column: The lane table · settings: Settings · the whole chain from a .osm.pbf: From OSM to lanes.

For AI agents

  • Using lanestyle: the agent skill skills/lanestyle/SKILL.md has the install, the lane table, the one call, the JavaScript API and the traps in one page. In Claude Code: /plugin marketplace add Khoshkhah/lanestyle, then /plugin install lanestyle@lanestyle.
  • The docs as text: llms.txt and llms-full.txt (every page, one file).
  • Changing lanestyle: AGENTS.md has the layout, the commands and the project's rules.

More: AI agents.

License

MIT

Metadata

Release files for lanestyle 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lanestyle 0.2.0
File Size Uploaded
lanestyle-0.2.0.tar.gz 50.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lanestyle 0.2.0
File Interpreter ABI Platform
lanestyle-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 91.1 kB

Release files / lanestyle-0.2.0.tar.gz

Download URL lanestyle-0.2.0.tar.gz
Size 50.9 kB
Tags Source
SHA-256 checksum
How to use checksums
73b31831993f39c2bd2c515e3b85cff059d4db55915d127dbbf6b7cbb063606d
BLAKE2b-256 checksum
How to use checksums
fc8d3d065d27d729998adf59d8efa251c987a573f155ef6bb836130c2d48204c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / lanestyle-0.2.0-py3-none-any.whl

Download URL lanestyle-0.2.0-py3-none-any.whl
Size 40.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
855ab7c54df4a7db090e99c8d9a6b24ee6c488d527a37a07e9bf38a099b3b7c5
BLAKE2b-256 checksum
How to use checksums
0112707ad5847924eccde5aade66b08d9e43aed18457875366cf2c08b105c77d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page