You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Lonboard is a Python library for fast, interactive geospatial vector data visualization in Jupyter.
15
+
16
+
This post gives an overview of what's new in Lonboard version 0.13.
17
+
18
+
<!-- more -->
19
+
20
+
Refer to the [changelog] for all updates.
21
+
22
+
## New layer types: H3, S2, Geohash, A5
23
+
24
+
Lonboard supports new layer types for [H3][h3], [S2][s2], [Geohash][geohash], and [A5][a5] data.
25
+
26
+
[h3]: https://h3geo.org/
27
+
[a5]: https://a5geo.org/
28
+
[s2]: http://s2geometry.io/
29
+
[geohash]: https://en.wikipedia.org/wiki/Geohash
30
+
31
+
-[`H3HexagonLayer`][lonboard.H3HexagonLayer]: render hexagons from the [H3][h3] geospatial indexing system
32
+
-[`S2Layer`][lonboard.S2Layer]: render polygons based on the [S2][s2] geospatial indexing system.
33
+
-[`A5Layer`][lonboard.A5Layer]: render polygons based on the [A5][a5] geospatial indexing system.
34
+
-[`GeohashLayer`][lonboard.GeohashLayer]: render polygons based on the [Geohash][geohash] geospatial indexing system.
35
+
36
+

37
+
38
+
> Screenshot from [H3 Population](../../../../../examples/kontur_pop) example
39
+
40
+
Additionally, the [HeatmapLayer][lonboard.HeatmapLayer], which has been broken since Lonboard v0.10 due to upstream changes in deck.gl, has been fixed and is now functional again. (Thanks to @felixpalmer for [fixing this upstream](https://github.com/visgl/deck.gl/pull/9787)!).
41
+
42
+
## Interleaved rendering with Maplibre
43
+
44
+
When rendering dense visualizations, the data can obscure helpful elements of the basemap, removing spatial context from the visualization.
45
+
46
+
It's now possible to render Lonboard data layers interleaved in the Maplibre layer stack. This means Maplibre text labels can be rendered above your Lonboard-rendered data.
47
+
48
+

49
+
50
+
> Screenshot from [H3 Population](../../../../../examples/interleaved-labels) example
51
+
52
+
To do this:
53
+
54
+
- Set [`before_id`](../../../../../api/layers/base-layer#lonboard.BaseLayer.before_id) on your layer as the value of the Maplibre layer `id` you want the Lonboard layer to be under. See [`before_id`](../../../../../api/layers/base-layer#lonboard.BaseLayer.before_id) for more information.
55
+
- Create a new basemap [set to `interleaved` mode][lonboard.basemap.MaplibreBasemap.mode]:
56
+
- Pass the basemap to the `Map` constructor.
57
+
58
+
```py
59
+
from lonboard.basemap import MaplibreBasemap
60
+
from lonboard import Map, ScatterplotLayer
61
+
62
+
# Example layer ID when using Carto basemap styles
Common UI elements that we call "Controls" are now supported in Lonboard maps. In this release, this includes three types of controls:
71
+
72
+
- Scale control: shows a scale bar on the map
73
+
- Fullscreen control: button to toggle fullscreen mode
74
+
- Navigation control: zoom in/out buttons and a compass
75
+
76
+
These three controls are rendered on the map by default, but can be customized via the [`Map.controls`][lonboard.Map.controls] attribute. See [`lonboard.controls`][] for more information.
77
+
78
+

79
+
80
+
## Performance improvements
81
+
82
+
First and foremost, I learned there was _severe bug_ in which the string representation (aka `repr`) of the [`table` attribute][lonboard.BaseArrowLayer.table] was being generated during map display. In conjunction with [an upstream issue](https://github.com/kylebarron/arro3/issues/432), this made it _very slow_ to render a map for datasets with many coordinates in a single row (such as polygons representing administrative boundaries). https://github.com/developmentseed/lonboard/pull/1015**improved the Python-side of rendering by 99% in this case**, from 12 seconds to 5 milliseconds.
83
+
84
+
In https://github.com/developmentseed/lonboard/pull/902 we now fully parallelize the Parquet file generation in a thread pool on the Python side, leading to 4x faster Parquet serialization.
85
+
86
+
In https://github.com/developmentseed/lonboard/pull/954 we improve the Polygon rendering performance on the JavaScript side and remove a network request for a dependency needed to perform multi-threaded preparation for Polygon data rendering.
87
+
88
+
In general, Lonboard data rendering should feel instantaneous. If it's especially slow, on the order of ~10 seconds, [open an issue](https://github.com/developmentseed/lonboard/issues/new/choose) with your dataset to discuss.
Copy file name to clipboardExpand all lines: examples/index.md
+20-19Lines changed: 20 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,18 +2,19 @@
2
2
3
3
<divclass="grid cards"markdown>
4
4
5
-
-[Speedtest data ](../examples/internet-speeds) using [`ScatterplotLayer`](../api/layers/scatterplot-layer)
6
-
-[North America roads ](../examples/north-america-roads) using [`PathLayer`](../api/layers/path-layer)
7
-
-[Spatially-Partitioned GeoParquet ](../examples/overture-geoparquet) using [`PolygonLayer`](../api/layers/polygon-layer)
8
-
-[Overture Maps buildings ](../examples/overture-maps) using [`PolygonLayer`](../api/layers/polygon-layer)
9
-
-[Air Traffic Control animation ](../examples/air-traffic-control) using [`TripsLayer`](../api/layers/trips-layer)
10
-
-[Global boundaries ](../examples/global-boundaries) using [`PolygonLayer`](../api/layers/polygon-layer)
11
-
-[H3 Population Data ](../examples/kontur_pop) using [`H3HexagonLayer`](../api/layers/h3-hexagon-layer)
12
-
-[U.S. County-to-County Migration ](../examples/migration) using [`ArcLayer`](../api/layers/arc-layer) and [`BrushingExtension`](../api/layer-extensions/brushing-extension)
13
-
-[Scatterplot with GPU data filtering ](../examples/data-filter-extension) using [`ScatterplotLayer`](../api/layers/scatterplot-layer) and [`DataFilterExtension`](../api/layer-extensions/data-filter-extension)
14
-
-[Motor Vehicle Crashes in NYC ](../examples/map_challenge/1-points) using [`ScatterplotLayer`](../api/layers/scatterplot-layer)
15
-
-[Rivers in Asia ](../examples/map_challenge/6-asia/) using [`PathLayer`](../api/layers/path-layer)
16
-
-[Inflation Reduction Act Projects ](../examples/column-layer/) using [`ColumnLayer`](../api/layers/column-layer)
5
+
-[Speedtest data ](../examples/internet-speeds) using [`ScatterplotLayer`][lonboard.ScatterplotLayer]
6
+
-[North America roads ](../examples/north-america-roads) using [`PathLayer`][lonboard.PathLayer]
7
+
-[Spatially-Partitioned GeoParquet ](../examples/overture-geoparquet) using [`PolygonLayer`][lonboard.PolygonLayer]
8
+
-[Overture Maps buildings ](../examples/overture-maps) using [`PolygonLayer`][lonboard.PolygonLayer]
9
+
-[Air Traffic Control animation ](../examples/air-traffic-control) using [`TripsLayer`][lonboard.TripsLayer]
10
+
-[Global boundaries ](../examples/global-boundaries) using [`PolygonLayer`][lonboard.PolygonLayer]
11
+
-[H3 Population Data ](../examples/kontur_pop) using [`H3HexagonLayer`][lonboard.H3HexagonLayer]
12
+
-[U.S. County-to-County Migration ](../examples/migration) using [`ArcLayer`][lonboard.ArcLayer] and [`BrushingExtension`][lonboard.layer_extension.BrushingExtension]
13
+
-[Scatterplot with GPU data filtering ](../examples/data-filter-extension) using [`ScatterplotLayer`][lonboard.ScatterplotLayer] and [`DataFilterExtension`][lonboard.layer_extension.DataFilterExtension]
14
+
-[Motor Vehicle Crashes in NYC ](../examples/map_challenge/1-points) using [`ScatterplotLayer`][lonboard.ScatterplotLayer]
15
+
-[Rivers in Asia ](../examples/map_challenge/6-asia/) using [`PathLayer`][lonboard.PathLayer]
16
+
-[Inflation Reduction Act Projects ](../examples/column-layer/) using [`ColumnLayer`][lonboard.ColumnLayer]
17
+
-[Interleaved Maplibre Labels ](../examples/interleaved-labels/) using [`BitmapLayer`][lonboard.BitmapLayer] and [`MaplibreBasemap`][lonboard.basemap.MaplibreBasemap]
](../examples/marimo/nyc_taxi_trips/) using [`ArcLayer`](../api/layers/arc-layer) & [GeoDataFusion](https://github.com/datafusion-contrib/datafusion-geo)
30
-
-[DuckDB Spatial ](../examples/duckdb) using [`HeatmapLayer`](../api/layers/heatmap-layer)
31
-
-[Color picker integration ](../examples/integrations/color-picker) using [`SolidPolygonLayer`](../api/layers/solid-polygon-layer)
32
-
-[JupyterLab Sidecar integration ](../examples/integrations/sidecar/) using [`ScatterplotLayer`](../api/layers/scatterplot-layer) and [`JupyterLab Sidecar`](https://github.com/jupyter-widgets/jupyterlab-sidecar)
33
-
-[MovingPandas ](../examples/ais-movingpandas) using [`TripsLayer`](../api/layers/trips-layer)
30
+
](../examples/marimo/nyc_taxi_trips/) using [`ArcLayer`][lonboard.ArcLayer] & [GeoDataFusion](https://github.com/datafusion-contrib/datafusion-geo)
31
+
-[DuckDB Spatial ](../examples/duckdb) using [`HeatmapLayer`][lonboard.HeatmapLayer]
32
+
-[Color picker integration ](../examples/integrations/color-picker) using [`SolidPolygonLayer`][lonboard.SolidPolygonLayer]
33
+
-[JupyterLab Sidecar integration ](../examples/integrations/sidecar/) using [`ScatterplotLayer`][lonboard.ScatterplotLayer] and [`JupyterLab Sidecar`](https://github.com/jupyter-widgets/jupyterlab-sidecar)
34
+
-[MovingPandas ](../examples/ais-movingpandas) using [`TripsLayer`][lonboard.TripsLayer]
34
35
35
36
36
37
</div>
@@ -41,8 +42,8 @@ These examples are maintained by external contributors.
41
42
42
43
<divclass="grid cards"markdown>
43
44
44
-
-[Using Lonboard to visualize graph flows ](https://knaaptime.com/longraph/) using [`ArcLayer`](../api/layers/arc-layer), [`PolygonLayer`](../api/layers/polygon-layer), and [`BrushingExtension`](../api/layer-extensions/brushing-extension) by [@knaaptime](https://github.com/knaaptime).
45
-
-[American Community Survey exploration](https://github.com/jaanli/lonboard/blob/1af815ea586121dbbe0d8cae70f7814a642ad165/examples/american-community-survey.ipynb) using [`ScatterplotLayer`](../api/layers/scatterplot-layer) and [`DataFilterExtension`](../api/layer-extensions/data-filter-extension) by [@jaanli](https://github.com/jaanli).
45
+
-[Using Lonboard to visualize graph flows ](https://knaaptime.com/longraph/) using [`ArcLayer`][lonboard.ArcLayer], [`PolygonLayer`][lonboard.PolygonLayer], and [`BrushingExtension`][lonboard.layer_extension.BrushingExtension] by [@knaaptime](https://github.com/knaaptime).
46
+
-[American Community Survey exploration](https://github.com/jaanli/lonboard/blob/1af815ea586121dbbe0d8cae70f7814a642ad165/examples/american-community-survey.ipynb) using [`ScatterplotLayer`][lonboard.ScatterplotLayer] and [`DataFilterExtension`][lonboard.layer_extension.DataFilterExtension] by [@jaanli](https://github.com/jaanli).
0 commit comments