Skip to content

Keywords by engine

The state of each keyword of render_edges and of each public function in the Python engine and in the Rust engine, at version 0.25.0.

The values in the Rust column:

Value Meaning
yes The Rust engine makes it. The output is the same as the output of the Python engine.
page A keyword of the page, not of the style. The dashboard reads it, and the page is the same with both engines.
first Python applies it to the roads before the engine runs, the same for both engines.
Python Only the Python engine has it. With engine="rust": a ValueError. With ROADSTYLE_ENGINE=rust: the Python engine makes the call, with a warning (Switch the engine).
folium A keyword of the folium backend. The Rust engine makes only the web page.

The default of each keyword and what it does: Every parameter.

render_edges

Look

Keyword Python Rust
backend "web", "folium", "lonboard" "web" only. engine="rust" with another backend is a ValueError; with ROADSTYLE_ENGINE=rust the other backends use the Python renderer, with no warning
profile, palette, settings yes yes, also the profiles and the palettes in ./profiles, ./palettes and ~/.config/roadstyle/
basemap, basemaps, basemap_switcher, api_key, zoom_readout yes page
arrows, labels, legend, name yes yes
legend_position folium folium
hover_color, select_color yes yes, also on the overlays
minzoom yes yes: True or a table
offset_frac, width_frac, offset_zoom yes yes

Filtering

Keyword Python Rust
include, exclude, match_links yes first
filter_control, find_control, overlay_control, overlay_popup yes page
filter_col yes yes
access_col yes yes

Color by data

Keyword Python Rust
color_by, colors, cmap, vmin, vmax, width_by yes yes
color_table, color_key, color_col yes yes
color_options, color_active yes yes, if each option has the palette of the map. An option with another palette is an error
views yes yes. With tiles=True, a view with its own palette is a ValueError (the tiles have one palette)
style (a Styler object) yes Python

Popups and hover

Keyword Python Rust
road_popup, popup_mode, road_tooltip, tooltip, hover_delay_ms yes yes (in the style's metadata roadstyle:interaction)
side_panel_html, host_panel_width yes page
data_maxzoom, data_tolerance yes yes
selected, copy_field folium folium

Street View and Google 3D

Keyword Python Rust
street_view, street_view_key, google_3d yes page

Camera and 3D

Keyword Python Rust
pitch, bearing, max_pitch yes yes
view_3d yes yes. The engine makes the deck ribbons with its own mitre offsets, not with GEOS, so a corner can differ by the rounding (1e-6 degrees)

Output and scale

Keyword Python Rust
tiles yes yes: the archive of the Rust engine's tiles. The tiles extra is not necessary
simple yes yes: True (simple mode) and False (the full look)
compress, tunnel_control yes page

Column mapping and levels

Keyword Python Rust
highway_col, tunnel_col, bridge_col, layer_col, edge_id_col yes yes
casing_level_col, fill_level_col, casing_start_col, casing_end_col yes yes. Without them, the engine computes the levels (compute_levels, method "solve")
head_m, head_start_m_col, head_end_m_col yes yes
cap_col, cap_start_col, cap_end_col yes yes
road_fill yes yes
width_m_col, width_m_zoom, casing_m, casing_min_px yes yes
directed_col, driving_col yes yes
levels_db yes first: Python reads the stored levels, then the engine draws them

Overlays, items and boundary

Keyword Python Rust
overlays yes yes: every kind of Overlay (fill, line, circle, text), on edges, in metres
items yes yes. A MultiLineString item is an error
items_popup yes page
boundary yes yes

Public functions

Function Python Rust (engine="rust")
render_edges yes yes, with the keywords above
render_dashboard, render_report, render_street_view yes yes: the same page (they call render_edges)
export_inline yes yes
export_style yes yes: format="xyz" and "pmtiles"
export_look yes yes
compute_levels yes yes for method="tags" and "solve" with the default keywords; another keyword (near_rules=True, ...) is Python
level_input, solve_levels, the level areas and the level editor yes not in the engine (Python only, no engine keyword)
save_levels, load_levels, save_area_levels, load_area_levels yes not in the engine
snapshot, to_spec, to_html, save, the Leaflet output yes not in the engine
load_edges, from_duckdb, from_arrow, from_geojson, as_edges, filter_edges yes not in the engine: Python reads the data, then the engine draws it
register_palette, save_palette, load_palette, palette_to_dict, palette_from_dict yes not in the engine. The engine takes a palette by its name (a bundled palette, or a file in ./palettes) or in settings
use_settings yes yes: the engine takes the settings in force (roadstyle.json, $ROADSTYLE_CONFIG, use_settings)
the CLI, the MCP server, the studio yes not in the engine

The source of this list is the checklist "What Python roadstyle can do and the crate cannot yet" in One Rust engine for roadstyle.