Releases: developmentseed/lonboard
Releases · developmentseed/lonboard
v0.13.0
See the release post: https://developmentseed.org/lonboard/latest/blog/2025/11/05/releasing-lonboard-013/
New Features ✨
- feat: Suppress JupyterLab context menu on Map right click by @kylebarron in #889
- feat: Support two render modes: Standard/deck.gl-first and MapboxOverlay by @kylebarron in #921
- feat: Create richer
Basemapclass and deprecatebasemap_stylearg by @kylebarron in #935 - feat: Move
TripsLayerandArcLayerout of experimental by @kylebarron in #983 - feat: Support for map controls by @kylebarron in #924
- feat: Provide default controls for Map by @kylebarron in #992
- feat: Switch basemap default to overlaid (maplibre-controlled) by @kylebarron in #993
- feat: H3 layer by @kylebarron in #917
- feat: Add A5Layer by @kylebarron in #1001
- feat: Add geohash and s2 layers by @kylebarron in #1007
- feat: Implement view state validation for non map-view states by @kylebarron in #1008
- feat: Add view parameter to viz by @kylebarron in #1013
Performance improvements ⚡
- perf: use ThreadPoolExecutor for Parquet serialization and bounds computation by @kylebarron in #902
- perf: Define top-level earcut worker pool by @kylebarron in #954
- perf: Call np.mean once across axis instead of once per column by @kylebarron in #995
- perf: Remove typedArrayManager settings override by @kylebarron in #1003
- perf: Avoid generating str repr of
tableduring rendering by @kylebarron in #1015
Bug fixes 🐛
- fix: Fix HeatmapLayer by bumping deck.gl to 9.2 by @kylebarron in #910
- fix: Add
pyarrowtogeopandasextra inpyproject.tomlby @kylebarron in #970 - fix: Fix "fuzziness" of path layers by removing
useDevicePixelsdefault by @kylebarron in #969 - fix: Ensure that the default value of
Map.basemapisMaplibreBasemapif no value ofbasemapwas passed. by @kylebarron in #963 - fix: Restore DataFilterExtension functionality with vectorized accessor input by @kylebarron in #977
- fix: Fix ArcLayer with numpy coords input by @kylebarron in #989
- fix: Ensure view state is updated in Python with a maplibre map renderer by @kylebarron in #1017
- fix: Hack a react re-render on canvas resize by @kylebarron in #1022
Documentation 📖
- docs: Fix list rendering in
Map.add_layerAPI Docs by @kylebarron in #952 - docs: Add developer docs about code profiling by @kylebarron in #1016
Breaking changes 🔨
- chore!: Remove deprecated
conparameter tovizby @kylebarron in #953
Other changes
- feat: automated UI testing with Playwright by @vgeorge in #906
- chore: Add eslint import ordering to CI by @kylebarron in #931
- test: add bbox selection overlay mode e2e test by @vgeorge in #933
- refactor: Refactor HTML map export by @kylebarron in #934
- refactor: Refactor model initialization logic by @kylebarron in #923
- test: add pytest-ipywidgets bbox testing, remove playwright by @vgeorge in #999
Full Changelog: v0.12.1...v0.13.0
v0.12.1
New Features ✨
- feat: New example with marimo and GeoDatafusion by @kylebarron in #881
Bug fixes 🐛
- fix: Fix rendering Arrow input with string view/binary view column by @kylebarron in #872
- fix: Add
__all__declarations to modules to fix pylance warnings by @kylebarron in #876 - feat: Support struct GeoArrow input for ArcLayer positions by @kylebarron in #877
Documentation 📖
- docs: Fix examples with GeoArrow Rust by @kylebarron in #878
Full Changelog: v0.12.0...v0.12.1
v0.12.0
New Features ✨
- feat: Add new example notebook on accessing spatially-partitioned Overture GeoParquet datasets by @kylebarron in #832
- feat: Allow passing GeoArrow arrays and chunked arrays directly to layer constructors by @kylebarron in #828
- feat: Support parsing
geoarrow.geometryinput; read WKB/WKT without shapely dep by @kylebarron in #846 - feat: Use
100%as default CSS height by @ATL2001 in #835 - feat: Migrate notebook examples to dependency management using
juvby @kylebarron in #821
Breaking changes 🔨
- chore!: Require Python 3.10 or higher by @kylebarron in #843
Bug fixes 🐛
- fix(arc-layer): Fix migration example by @kylebarron in #830
- fix: Bump geoarrow-rust-core to fix handling of geoarrow geometry by @kylebarron in #864
Other changes
- perf: Avoid numpy memory copy when shapely-produced offsets are already
int32by @kylebarron in #845 - chore: Suggest shallow clone of repo in DEVELOP.md by @kylebarron in #825
- chore: Fix mypy lint errors by @kylebarron in #826
- ci: Add CI test for Python 3.13 by @kylebarron in #844
- chore: Cleaner handling of chunked array input into BaseArrowLayer.init by @kylebarron in #855
Full Changelog: v0.11.1...v0.12.0
v0.11.1
What's Changed
- fix: move duckdb imports to inside function by @danielsparing in #813
- chore: Use
>=in typing-extensions version constraint by @kylebarron in #814 - chore: Prepare 0.11.1 by @kylebarron in #815
Full Changelog: v0.11.0...v0.11.1
v0.11.0
Breaking changes 🔨
- Require Python 3.9 or higher by @kylebarron in #743
New features ✨
- feat: Reinstate tooltip by @vgeorge in #736.
You can now turn on the tooltip by passingshow_tooltip=TruetoMap. You may also want to passshow_side_panel=Falseto disable the side panel. - Clicked point to Lonboard map by @ATL2001 in #671
- feat: Support
geoarrow.boxarrays from GeoArrow 0.2 spec by @kylebarron in #793 - feat: Allow passing Arrow table as positional argument to layer constructors by @kylebarron in #795
- Switch to the DuckDB Expression API to mitigate sql injection risk by @danielsparing in #777
Visual changes 🎨
Bug fixes 🐛
- Scope tailwind preflight styles by @Bjoern-Rapp in #740
- Pass state in
to_htmlby @kylebarron in #726 - use dependency state in export by @knaaptime in #731
- fix: ensure GeoArrow field names are set in conversion from shapely by @kylebarron in #794
- Fix accessing default connection for duckdb 1.2 by @kylebarron in #772
- Sanitize geomcolname by @danielsparing in #769
Documentation 📖
- Replace DS Medium link by LinkedIn by @willemarcel in #700
- Geoarrow docstring update by @ATL2001 in #705
- Add docs page with external resources by @kylebarron in #710
- Panel example update by @ATL2001 in #746
- docs: Reword section in "How it works" to reflect GeoParquet 1.1 by @kylebarron in #804
- docs: Add duckdb intersphinx mapping by @kylebarron in #800
- Remove references to custom connection parameter by @danielsparing in #784
- updates for polygon layer documentation by @ATL2001 in #789
Internal changes 🔧
- Switch dependency management to uv by @kylebarron in #721
- Support Py3.12 in tests by constraining pyproj in lockfile to versions with wheels by @ceholden in #745
- Enable more ruff linters by @kylebarron in #753
- Reduce ruff warnings by @danielsparing in #778
- chore: Ensure support for GeoArrow 0.2 CRS by @kylebarron in #797
- chore: Bump deck.gl to 9.1 by @kylebarron in #802
- test: Test that parsing WKB/WKT works with Arrow view types by @kylebarron in #801
New Contributors
- @knaaptime made their first contribution in #731
- @ceholden made their first contribution in #745
- @Bjoern-Rapp made their first contribution in #740
- @danielsparing made their first contribution in #769
Full Changelog: v0.10.3...v0.11.0
v0.10.4
What's Changed
- Pass state in
to_htmlby @kylebarron in #726 - use dependency state in export by @knaaptime in #731
New Contributors
- @knaaptime made their first contribution in #731
Full Changelog: v0.10.3...v0.10.4
v0.10.3
What's Changed
- Downgrade minimum traitlets version to fix use with Colab. #687
Full Changelog: v0.10.2...v0.10.3
v0.10.2
What's Changed
- Fix using
TripsLayer.from_movingpandaswith numpy v2. by @kylebarron in #683
Full Changelog: v0.10.1...v0.10.2
v0.10.1
What's Changed
- Fix import when pandas/pyarrow not installed by @kylebarron in #678
- Bump to 0.10.1 by @kylebarron in #679
Full Changelog: v0.10.0...v0.10.1
v0.10.0
New! ✨
- New
TripsLayerfor animating moving objects, which integrates with MovingPandas. See the Air Traffic Control example and the MovingPandas integration example. - New
ColumnLayerfor rendering extruded cylinders. See the newColumnLayerexample. - Removed required dependencies!
geopandas,pandas,shapely,pyarrow,matplotlib, andpalettableare now optional dependencies. Lonboard will still work out of the box with them, but they aren't required to use Lonboard. This gives Lonboard a smaller footprint and makes it easier to use in environments such as Pyodide. - You can now draw bounding boxes on the map. This is exposed as the
selected_boundsattribute on theMapobject, stored as a two-dimensional bounding box(minx, miny, maxx, maxy). - Improved documentation
- How to use Lonboard in pyodide, a Python environment that is fully running in your browser.
- Add linked maps example by @ATL2001 in #655
- Add troubleshooting doc by @kylebarron in #654
- Add longraph to showcase by @kylebarron in #595
- New
Map.add_layermethod for easily adding more layer(s) to an existingMapinstance. - Add
highlight_colorto change the color ofauto_highlightby @kylebarron in #666 - Use deterministic colors in
vizby @kylebarron in #621 - Categorical data filtering. The
DataFilterExtensionnow has afilter_categoriesattribute that lets you filter categorical data on the map. by @kylebarron in #609
Breaking Changes 🔨
- The tooltip shown on hover was replaced with a side panel. You now must click on a geometry to view its attributes. By @vgeorge in #636
Fixes 🐛
- We've switched from storing
listobjects to storingtupleobjects (e.g. the list of layers in aMap). The immutability of thetupleensures that a any changes in the sequence of layers will be propagated to the frontend.Fixed in #620 - A class of bugs was fixed when using Arrow input, where the chunking structure of the main
tabledid not match the chunking of accessors. Fixed in #644 - Fix reading from DuckDB with only geometry column by @kylebarron in #625
- Fix attribution by @vgeorge in #561
New Contributors
- @MarcSkovMadsen made their first contribution in #539
- @ATL2001 made their first contribution in #655