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.1

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.1
File Size Uploaded
lanestyle-0.2.1.tar.gz 51.6 kB Details

Built distribution (wheel)

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

Total release size: 92.2 kB

Release files / lanestyle-0.2.1.tar.gz

Download URL lanestyle-0.2.1.tar.gz
Size 51.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e75e3feb9d1c1b2d69307eb1e3f40207801f035be78a5fd568ba6a34cd443308
BLAKE2b-256 checksum
How to use checksums
5dac80352b82240836020e1b4f6c775a6c67cc6d37ed03cb9b41071e441e2cb8
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.1-py3-none-any.whl

Download URL lanestyle-0.2.1-py3-none-any.whl
Size 40.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
acf3fe0c8bc455e779aceb6cce51786b4a9578b53caa03d51ed1082b35284922
BLAKE2b-256 checksum
How to use checksums
2154f345ceb9b1efa631492722f8fa38889bd4112af00f8c2e82cfc4048a9162
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

This release

0.2.1 This release

2 release files

0.2.0

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