项目文件夹

0
Qiusheng Wu 4906f9a028
CI / Dependency audit (push) Has been cancelled
CI / E2E smoke (Playwright) (push) Has been cancelled
Deploy Website / Build website and demo (push) Has been cancelled
Publish Container Image / Build and publish container image (push) Has been cancelled
Deploy studio.geolibre.app / Build and publish (push) Has been cancelled
Deploy web.geolibre.app / Build and publish (push) Has been cancelled
CI / Validate CITATION.cff (push) Has been cancelled
CI / Collab relay image (push) Has been cancelled
CI / Build and test (push) Has been cancelled
Deploy Website / Deploy to GitHub Pages (push) Has been cancelled
fix: support Add Vector Layer on Cesium (#2382)
* fix: support Add Vector Layer on Cesium

Bridge the vector control presentation records into store geometry so Cesium can render imports without unsupported MapLibre source calls. Restore vector layers on both engines and recreate detached controls after renderer switches.

* Address review feedback

- Bound the Cesium materialization of tiled Add Vector Layer records by the
  documented DuckDB routing limits (100 MB / 100k features) and never read a
  streamed GeoParquet whole; an oversize layer stays in the panel as 2D-only
  with a console warning (Claude + CodeRabbit).
- Give a materialized tiled record `type: "geojson"` in the store sync so the
  globe renders the collection through its GeoJSON path instead of the
  `vector-tiles` kind Cesium excludes (Claude).
- Stop `isDrapedLayer` from promising a maplibre-gl-vector tiled record: the
  drape reuses the 2D sync, which never creates the control's DuckDB source,
  so the layer panel now flags an unrendered one as 2D-only (Claude).
- Stub `hasImage`/`addImage` on the adapter for KML icon sprites; document
  that the overrides cover every map call maplibre-gl-vector 0.11 makes, which
  never include `setData` or `setFilter` (Claude).
- Document why a source revision that yields no collection stays pending:
  retrying cannot change the answer until a new source is added (CodeRabbit).
- Cover the size guard, the GeoJSON type flip, and the drape exclusion with
  fake-control tests.

* Address review feedback

- Preserve unsaved browser-picked vector layers across a control teardown:
  ensureVectorControl now reads their features out of the departing control
  into `layer.geojson` (bounded like the Cesium export) before recreating it,
  so a renderer switch no longer drops a layer with no URL, path, or embedded
  data (Claude).
- Require `externalNativeLayer` alongside the maplibre-gl-vector source kind
  in the drape exclusion, matching `isVectorControlStoreLayer` (CodeRabbit).
- Drop the cached collection when a layer's source revision changes so a
  reload that comes back oversize or streamed does not keep drawing stale
  features on the globe (CodeRabbit).
- Cover the preserve helper, the flag requirement, and the small-to-oversize
  transition with tests.
2026-09-14 00:21:21 -04:00
2026-09-13 21:36:03 -04:00
2026-09-13 21:36:03 -04:00
2026-09-13 21:36:03 -04:00
2026-06-10 09:38:26 -04:00
2026-09-13 21:36:03 -04:00

GeoLibre

Launch GeoLibre Web GeoLibre shared project GeoLibre plugins image R package image image Conda Recipe Microsoft Store Mac App Store App Store Google Play Chrome Web Store AUR version FlatPark image DOI Ask DeepWiki

A free and open-source, lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. It runs everywhere you do, in the web browser, on the desktop, on mobile, and inside Jupyter notebooks, all while keeping your data local and private.

It also ships 1,000+ geoprocessing tools that run entirely in your browser on WebAssembly — terrain, hydrology, LiDAR, remote sensing, and vector analysis with no server, no install, and no data ever leaving your machine.

GeoLibre is built with Tauri v2, React, TypeScript, MapLibre GL JS, DuckDB-WASM Spatial, and deck.gl. The same workspace runs as a native desktop app, native Android and iOS apps, in any modern web browser, and adapts responsively to mobile and small screens.

Demos

Click any screenshot to open it at full resolution, or any animation to play the full-quality video.

3D Tiles

GeoLibre demo showing 3D Tiles rendered on a MapLibre map

Open the live project

NYC buildings and subways

Manhattan building footprints extruded in 3D and colored by construction era, with the MTA subway lines and stations on top and a legend generated automatically from the layers' symbology.

Manhattan buildings extruded in 3D and colored by construction era, with MTA subway lines and stations and an auto-generated legend

The animation below runs the Time Slider along the buildings' construction year, from 1850 to 2025, so Manhattan fills in era by era. Click it to play the full-quality video.

Animation of Manhattan buildings appearing by construction year as the Time Slider advances from 1850 to 2025

Open the live project

Planetary basemaps

GeoLibre is not limited to Earth. Planetary basemaps from OpenPlanetaryMap and USGS Astrogeology cover the Moon, Mars, Mercury, Venus, the Galilean moons (Io, Europa, Ganymede, Callisto), Titan, Pluto, and Charon, with a per-project ellipsoid so distance, area, and scale measurements match the body you are mapping. The deep-space starfield behind each globe comes from the Atmosphere Effects plugin.

GeoLibre globe view of Earth over a starfield backdrop GeoLibre globe view of the Moon over a starfield backdrop GeoLibre globe view of Mars over a starfield backdrop
Earth Moon Mars
GeoLibre globe view of Mercury over a starfield backdrop GeoLibre globe view of Pluto over a starfield backdrop GeoLibre globe view of Venus over a starfield backdrop
Mercury Pluto Venus
GeoLibre globe view of Europa over a starfield backdrop GeoLibre globe view of Callisto over a starfield backdrop GeoLibre globe view of Charon over a starfield backdrop
Europa Callisto Charon

Switch bodies from the planet switcher in the Layers panel. See Demos for more.

Video tutorials

All of them, with chapters and summaries, are on the Video Tutorials page.

Geoprocessing: 1,000+ tools, zero install

The GeoLibre Whitebox toolbox running locally with WebAssembly, listing the full catalog of 1,000+ tools with the Regularize Building Footprints tool selected

Processing → Whitebox Toolbox opens a toolbox of 1,000+ geoprocessing tools that execute in the browser through a WebAssembly runtime with native raster and vector I/O. There is no Python sidecar to install and no server to call — the tools, your data, and the results all stay on your machine, so the full toolbox is available on GeoLibre Web, on the desktop app, and on Android alike.

The tools come from the Whitebox Next Gen suite plus GeoLibre's own WASM tools, and are browsable by category straight from the Processing menu:

Category Tools Examples
Vector 313 overlays, buffers, joins, cleaning, topology, generalization
Raster 256 algebra, filters, reclassification, zonal and focal statistics
Remote sensing 154 spectral indices, band math, classification, change detection
Hydrology 100 flow accumulation, watersheds, stream networks, depression filling
Terrain 99 slope, aspect, hillshade, curvature, ruggedness, viewsheds
LiDAR 65 point-cloud filtering, ground classification, DEM/DSM generation
Conversion 49 format translation to cloud-native GeoParquet, PMTiles, and COG
Network 26 connectivity, cost distance, and routing analysis
Projection 4 reprojection for raster and vector data

Any tool is deep-linkable with a ?tool= URL parameter that preselects it and pre-fills its form. See the Processing Tools guide for details, and Geoprocessing in the Browser for a video walkthrough.

Documentation

Full documentation, including the User Guide and Tutorials, is published at geolibre.app.

Contributions are welcome. See the Contributing guide for the development setup, repository layout, and quality gate.

Sponsor

GeoLibre is free and open source, and stays that way. If it is useful to you or your team, sponsorship is the most direct way to keep development, hosting, and cross-platform distribution going.

See the Become a Sponsor page for what sponsorship supports and for other, free ways to help.

Acknowledgements

GeoLibre is built on the free and open-source geospatial and web communities — including MapLibre GL JS, deck.gl, DuckDB-WASM Spatial, Turf.js, Tauri, React, and many more. See the full Acknowledgements page for the complete list of projects and community contributors.

  • The Atmosphere Effects plugin (deep-space backdrop, parallax starfield, comets, and the globe atmosphere halo) adapts the technique and visual design from Leonel Dias's article Globe atmosphere, halo, and comets — the layered Canvas 2D approach, the halo gradient and "screen" blend, the limb-sampling that keeps the halo aligned under pitch, and the starfield/comet parameters.
  • Community contributors — thanks to Ryanphoenix for many valued contributions, including issue reports, feedback, and improvements.
  • Beta testers — thanks to René van der Velde (Netherlands) for early testing, detailed bug reports, and feature requests.

Citation

If you use GeoLibre in your work, please cite it. GeoLibre is archived on Zenodo, which mints a DOI for every release. The concept DOI below always resolves to the latest version.

DOI

Wu, Q. (2026). GeoLibre: A lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. Zenodo. https://doi.org/10.5281/zenodo.20785400

You can also use GitHub's "Cite this repository" button (which reads CITATION.cff) to copy a ready-made APA or BibTeX entry. See the How to Cite page for more formats.

License

MIT