Skip to content

Latest commit

 

History

History
576 lines (381 loc) · 35.1 KB

File metadata and controls

576 lines (381 loc) · 35.1 KB

Changelog

[0.16.0] - 2026-04-02

What's Changed

  • ci: Set up trusted publishing by @kylebarron in #1141
  • feat: raster layer async geotiff integration by @kylebarron in #1137
  • feat: RasterLayer: better printing of exceptions from render_tile by @kylebarron in #1150
  • refactor: Clean up for RasterLayer COG integration by @kylebarron in #1152
  • fix: Fix using fly_to in overlay/interleaved basemap mode by @kylebarron in #1155
  • feat: Prepare raster for release by @kylebarron in #1158

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.15.0...v0.16.0

[0.15.0] - 2026-03-13

New Features

  • Geocoder control by @kylebarron in #1124

Bug fixes

  • fix: Make sure BaseLayer.highlight_color has .tag(sync=True) by @shawnboltz in #1131

Documentation updates

  • Update Lonboard logo and devseed favicon by @kylebarron in #1125

Other

  • refactor: trait cleanup, remove verbose sync=True everywhere by @kylebarron in #1133

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.14.0...v0.15.0

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.14.0...v0.15.0

[0.14.0] - 2026-02-11

Breaking changes

  • feat!: Require Python 3.11 by @kylebarron in #1090

New Features

  • feat: PMTiles constructor for RasterLayer by @kylebarron in #1105
  • feat: Added explicit support for numpy number types by @shawnboltz in #1056
  • feat: Create display window under Map for rendering callback exceptions by @kylebarron in #1085
  • DataFilterExtension get_filter_category by @ATL2001 in #884
  • feat(cli): Add --version flag to CLI by @kylebarron in #1092

Bug Fixes

  • fix: Fixup error in sidecar example notebook by @mfisher87 in #1077
  • fix: Support pandas v3 by @kylebarron in #1107
  • fix: Fix map.set_view_state does not set pitch and bearing by @jwardbond in #1055

Other

  • chore: Switch to biome for Typescript linting by @kylebarron in #1103
  • refactor: migrate from XState to Zustand for state management by @vgeorge in #1042

New Contributors

  • @mfisher87 made their first contribution in #1077
  • @shawnboltz made their first contribution in #1056
  • @jwardbond made their first contribution in #1055

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.13.0...v0.14.0

[0.13.0] - 2025-11-05

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 Basemap class and deprecate basemap_style arg by @kylebarron in #935
  • feat: Move TripsLayer and ArcLayer out 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 table during rendering by @kylebarron in #1015

Bug fixes 🐛

  • fix: Fix HeatmapLayer by bumping deck.gl to 9.2 by @kylebarron in #910
  • fix: Add pyarrow to geopandas extra in pyproject.toml by @kylebarron in #970
  • fix: Fix "fuzziness" of path layers by removing useDevicePixels default by @kylebarron in #969
  • fix: Ensure that the default value of Map.basemap is MaplibreBasemap if no value of basemap was 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_layer API Docs by @kylebarron in #952
  • docs: Add developer docs about code profiling by @kylebarron in #1016

Breaking changes 🔨

  • chore!: Remove deprecated con parameter to viz by @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: https://github.com/developmentseed/lonboard/compare/v0.12.1...v0.13.0

[0.12.1] - 2025-09-18

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: https://github.com/developmentseed/lonboard/compare/v0.12.0...v0.12.1

[0.12.0] - 2025-09-13

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.geometry input; 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 juv by @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 int32 by @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: https://github.com/developmentseed/lonboard/compare/v0.11.1...v0.12.0

[0.11.1] - 2025-06-18

Bug fixes 🐛

  • fix: move duckdb imports to inside function by @danielsparing in #813
  • chore: Use >= in typing-extensions version constraint by @kylebarron in #814

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.11.0...v0.11.1

[0.11.0] - 2025-06-17

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 passing show_tooltip=True to Map. You may also want to pass show_side_panel=False to disable the side panel.
  • Clicked point to Lonboard map by @ATL2001 in #671
  • feat: Support geoarrow.box arrays 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 🎨

  • Improve side panel layout by @vgeorge in #701

Bug fixes 🐛

  • Scope tailwind preflight styles by @Bjoern-Rapp in #740
  • Pass state in to_html by @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: https://github.com/developmentseed/lonboard/compare/v0.10.3...v0.11.0

[0.10.3] - 2024-10-15

Fixes 🐛

  • Downgrade minimum traitlets version to fix use with Colab. #687

[0.10.2] - 2024-10-10

Fixes 🐛

  • Fix using TripsLayer.from_movingpandas with numpy v2.

[0.10.1] - 2024-10-08

Fixes 🐛

  • Fix import when pandas not installed.

[0.10.0] - 2024-10-07

New! ✨

  • New TripsLayer for animating moving objects, which integrates with MovingPandas. See the Air Traffic Control example and the MovingPandas integration example.
  • New ColumnLayer for rendering extruded cylinders. See the new ColumnLayer example.
  • Removed required dependencies! geopandas, pandas, shapely, pyarrow, matplotlib, and palettable are 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_bounds attribute on the Map object, 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_layer method for easily adding more layer(s) to an existing Map instance.
  • Add highlight_color to change the color of auto_highlight by @kylebarron in #666
  • Use deterministic colors in viz by @kylebarron in #621
  • Categorical data filtering. The DataFilterExtension now has a filter_categories attribute 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 list objects to storing tuple objects (e.g. the list of layers in a Map). The immutability of the tuple ensures 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 table did 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

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.9.3...v0.10.0

[0.9.3] - 2024-05-27

Fixes 🐛

  • Fix reprojecting GeoArrow input by @kylebarron in #532

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.9.2...v0.9.3

[0.9.2] - 2024-05-14

Fixes 🐛

  • Reverse the layer order for automatically split geometry by @RaczeQ in #516

What's Changed

  • Perf: Use ravel, not flatten, for numpy to pyarrow by @kylebarron in #512
  • Update docstring in as_html by @kylebarron in #519
  • Add type checks to fly_to by @kylebarron in #521
  • Add pypi classifiers by @kylebarron in #523

New Contributors

  • @RaczeQ made their first contribution in #516

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.9.1...v0.9.2

[0.9.1] - 2024-05-07

Fixes 🐛

  • Fix parquet-wasm WASM version mismatch by @kylebarron in #508

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.9.0...v0.9.1

[0.9.0] - 2024-05-06

New! ✨

Fixes 🐛

  • Updated Map keyword arguments by @kylebarron in #496
  • validate basemap style is a url by @kylebarron in #497

New Contributors

  • @willemarcel made their first contribution in #486
  • @shriv made their first contribution in #487

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.8.0...v0.9.0

[0.8.0] - 2024-04-05

New! ✨

  • A new PolygonLayer! This layer renders polygon outlines for easier visibility. @kylebarron in #330
  • An example using PolygonLayer by @naomatheus in #351
  • Sync view state between JS and Python by @kylebarron in #448
  • Support geoarrow array input into viz() by @kylebarron in #427
  • Internal architecture documentation by @kylebarron in #450

Fixes 🐛

  • Fix CLI with unset geometry_name by @kylebarron in #451

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.7.1...v0.8.0

[0.7.1] - 2024-03-22

Fixes 🐛

  • Fix CLI with geopackage files by @kylebarron in #434

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.7.0...v0.7.1

[0.7.0] - 2024-03-21

New! ✨

  • There's a new command-line interface (CLI)! Use the lonboard command to quickly visualize one or more data files readable by GDAL! For example: lonboard admins.geojson features.gpkg. By @kylebarron in #379

  • Type hinting for constructors and from_geopandas method. This should make it easier to pass the correct parameters into layers. This has been tested to work in IDEs like VSCode, but unfortunately appears not to work in JupyterLab. By @kylebarron in #399

    Type hints are now supported in constructors.

  • Warn on missing CRS. One of the most common reasons that you might see an empty map is from accidentally visualizing data that is not in EPSG 4326 (longitude-latitude). We now emit a warning for data that doesn't have a CRS defined on the data. By @kylebarron in #395.

  • Lonboard is now on conda-forge! Install with conda install -c conda-forge lonboard. By @giswqs in #223

  • Add PointCloudLayer. By @kylebarron in #396

  • Add fly-to map action to "fly" the map to a new location. By @kylebarron in #408

  • Docs showcase page by @kylebarron in #401

  • Improve default colors in viz. We now attempt to apply some basic styling onto data passed into viz. This will likely further improve in the future. By @kylebarron in #389

Fixes 🐛

  • Set exported HTML height to 100% by @kylebarron in #377
  • Raise error on single input to MultiRangeSlider by @kylebarron in #367
  • Fix pandas to_numeric FutureWarning by @kylebarron in #368
  • Fix viewing polygons in local html files by @kylebarron in #387
  • Fix: fix sliced array input for reprojection by @kylebarron in #391
  • Fix: Don't reproject for epsg:4326 input by @kylebarron in #392
  • Fix: Fix weighted centroid calculation by @kylebarron in #393
  • Fix viz() with __geo_interface__ input by @kylebarron in #426
  • Add DataFilterExtension notebook to website by @kylebarron in #362
  • Allow non-compliant geoarrow CRS metadata by @kylebarron in #369
  • Automatically parse geoarrow.wkb to native geoarrow by @kylebarron in #372
  • Parse GeoParquet metadata by @kylebarron in #407
  • CLI: 'crs' in geoparquet metadata should be optional. by @jwass in #411

Other changes

  • Creating a new user bug report by @emmalu in #386
  • Update epic template by @emmalu in #382
  • NormalAccessor by @naomatheus in #376
  • Conda: Try including manifest.in file for static folder inclusion by @kylebarron in #421
  • Switch to animated hero image by @kylebarron in #423
  • Add CRS to GeoDataFrame in notebook examples by @kylebarron in #419

New Contributors

  • @emmalu made their first contribution in #382
  • @naomatheus made their first contribution in #376
  • @jwass made their first contribution in #411
  • @giswqs made their first contribution in #223

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.6.0...v0.7.0

[0.6.0] - 2024-02-13

New! ✨

  • DataFilterExtension by @kylebarron in #278
  • Multi-range sliders for DataFilterExtension by @kylebarron in #340
  • BitmapLayer and BitmapTileLayer by @kylebarron in #288
  • Improved GeoArrow interop by @kylebarron in #308
  • Allow passing a positional layers object into Map by @kylebarron in #319
  • GeoArrow-based multithreaded coordinate reprojection by @kylebarron in #337
  • Support pyarrow.Table with geoarrow.pyarrow extension types as geometry columns by @jorisvandenbossche in #218
  • Add ecosystem/integrations documentation by @kylebarron in #350

Fixes 🐛

  • Add font to index.css to fix static HTML export by @jtmiclat in #284
  • Fix displaying tooltip for first row by @kylebarron in #287
  • accept matplotlib colormap input to apply_cmap by @kylebarron in #289
  • Use preferred OSM tile url by @kylebarron in #290
  • set max zoom on osm layer by @kylebarron in #291
  • Update contributor docs by @kylebarron in #316
  • Check epsg:4326 bounds in layer creation by @kylebarron in #317
  • add reference for installing from source by @kylebarron in #318
  • Fix inferring number of rows per chunk by @kylebarron in #327
  • Fix null checks by @kylebarron in #331
  • Set max number of chunks per layer by @kylebarron in #332
  • Move accessor length validation to serialization by @kylebarron in #333
  • Deduplicate serialization for accessors by @kylebarron in #334
  • Multi-dimensional GPU-based data filtering by @kylebarron in #335
  • Bump anywidget to 0.9 & simplify Wasm initialization by @kylebarron in #344
  • Fix null checks by @kylebarron in #348
  • docs fixes by @kylebarron in #354
  • Add DataFilterExtension example by @kylebarron in #358
  • fix arc layer default arguments by @kylebarron in #359

New Contributors

  • @jtmiclat made their first contribution in #284
  • @jorisvandenbossche made their first contribution in #218

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.5.0...v0.6.0

[0.5.0] - 2023-12-01

New Features

  • Improve map height by @vgeorge in #220
  • Add method to apply a categorical colormap by @kylebarron in #251
  • Deduce environment and set map height in colab and vscode by @kylebarron in #252
  • Add various carto basemaps as options by @kylebarron in #268
  • Sync the clicked index back to Python by @kylebarron in #270
  • Set width_min_pixels in PathLayer example by @kylebarron in #276
  • Bump deck.gl layers for performance benefits by @kylebarron in #277

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.4.2...v0.5.0

[0.4.2] - 2023-11-13

Fixed

  • Fixed ScatterplotLayer rendering by @kylebarron in #246

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.4.1...v0.4.2

[0.4.1] - 2023-11-13

Fixed

  • Fixed Polygon rendering by @kylebarron in #243

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.4.0...v0.4.1

[0.4.0] - 2023-11-10

New Features

  • New HeatmapLayer
  • New experimental module, with new layers (ArcLayer, TextLayer) and "layer extensions" (BrushingExtension, CollisionFilterExtension).
  • New "migration" notebook using the experimental ArcLayer.

Fixed

  • Add pandas v2 requirement by @kylebarron in #229

  • bump anywidget to 0.7.1 by @kylebarron in #233

    This should error when the JS files have not been included when packaging.

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.3.0...v0.4.0

[0.3.0] - 2023-11-07

New Features

  • Save widget to standalone HTML file by @kylebarron in #199
  • Support for rendering inside Visual Studio Code
  • Allow customized picking radius by @kylebarron in #212
  • New example notebooks
  • Automatically downcast data types in from_geopandas by @kylebarron in #195

Fixed

  • Allow pandas series as accessor to FloatAccessor by @kylebarron in #208
  • Raise error when creating class with unknown keyword argument by @kylebarron in #209
  • fix tooltip rendering when not hovering over an object by @kylebarron in #215

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.2.0...v0.3.0

[0.2.0] - 2023-11-01

Breaking Changes

  • Layers no longer render a map object. Instead, pass one or more layer instances into a lonboard.Map and display that.

New Features

  • Support multiple layers on a single map.
  • Tooltip with data information on hover.
  • Allow hex string color input to ColorAccessor.
  • Versioned documentation website
  • New examples
  • Experimental API to change map height

Fixed

  • Fix handling of 3d coordinates by @kylebarron in #160
  • Improved validation error messages by @kylebarron in #161

New Contributors

  • @chrisgervang made their first contribution in #150

Full Changelog: https://github.com/developmentseed/lonboard/compare/v0.1.2...v0.2.0

[0.1.2] - 2023-10-24

  • Actually update @geoarrow/deck.gl-layers to version 0.2.0, whoops 😅

[0.1.1] - 2023-10-23

  • Updates to @geoarrow/deck.gl-layers version 0.2.0:
    • Fixed MultiPolygon rendering
    • Fixed rendering of polygons with holes.
    • Polygon rendering is roughly 35% faster.

[0.1.0] - 2023-10-17

  • Initial public release.
  • Initial support for ScatterplotLayer, PathLayer, and SolidPolygonLayer.